Bug 219851 - WebGL Float Texture Blending Regression
Summary: WebGL Float Texture Blending Regression
Status: RESOLVED DUPLICATE of bug 216949
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebGL (show other bugs)
Version: Safari Technology Preview
Hardware: Mac (Intel) macOS 10.15
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-12-14 06:28 PST by Evan Nowak
Modified: 2020-12-15 12:20 PST (History)
5 users (show)

See Also:


Attachments
A run-through of the reproduction steps from the bug description (4.67 MB, video/quicktime)
2020-12-14 06:28 PST, Evan Nowak
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Evan Nowak 2020-12-14 06:28:17 PST
Created attachment 416152 [details]
A run-through of the reproduction steps from the bug description

Following the release of Safari 14, we have had several users complain that an aspect of our WebGL application has stopped functioning.  We use float textures to do real-time sectioning of 3D geometry and render flat "end caps" on the solid geometry.  We also employ float texture blending to achieve this effect. As of the Safari 14 release, these endcaps no longer appear.

To reproduce:
1. Navigate to https://cad.onshape.com/documents/21528514dbb278dfb84b48fc/w/b8e3c69807c266318a9e26fe/e/15c030164c537c1eec47b4b6 and wait for graphics to appear
2. From the cube drop-down menu towards the upper right, select "Named views"
3. In the "Named views" dialog that pops up, select "Section" from the "Select a view" dropdown 
Notice that there is empty space where you would expect a flat intersection of the cube to be.  This works properly in Firefox and Chrome on the same system.

See attached video for run-through of reproduction steps.

Interestingly, the EXT_float_blend conformance test is also failing in Safari 14:
https://www.khronos.org/registry/webgl/sdk/tests/conformance/extensions/ext-float-blend.html?webglVersion=1&quiet=0&quick=1

We have not been querying for the EXT_float_blend explicitly.  However, adding a query for it does not resolve the issue.  (The gl context returns null for the  EXT_float_blend extension.)
Comment 1 Kenneth Russell 2020-12-14 18:47:11 PST
EXT_float_blend support was recently added to WebKit in Bug 216949 by jdarpinian@. The test passes in Safari Technology Preview. I do see that Safari 14 fails this test. The problem is likely that ANGLE's WebGL backend is more strict than WebKit's older handwritten OpenGL/OpenGL ES backends.

However - even with Safari Technology Preview 117, the scene at:
https://cad.onshape.com/documents/21528514dbb278dfb84b48fc/w/b8e3c69807c266318a9e26fe/e/15c030164c537c1eec47b4b6

draws an empty end cap for the cube in the section view rather than the expected orange face seen in Chrome.

Evan, could you help us understand what's going wrong in OnShape in Safari Technology Preview? We'd like to investigate this against top-of-tree WebKit. Thanks.
Comment 2 Evan Nowak 2020-12-15 12:13:57 PST
Thanks for the insight, Ken!

I re-tested adding the query for EXT_float_blend on an updated Safari Tech Preview, and this appears to resolve the issue.  When I originally ran that test, it was on an older Safari Tech Preview, and I never committed that change to our production release.  (Chrome/Firefox do not appear to require asking for EXT_float_blend, and neither did older versions of Safari.)

I would consider this fixed, from my perspective.  I will add the query for EXT_float_blend to our codebase.
Comment 3 Kenneth Russell 2020-12-15 12:20:15 PST
Fantastic! Thanks for testing Evan. Duplicating this into the bug which added EXT_float_blend support.
Comment 4 Kenneth Russell 2020-12-15 12:20:35 PST

*** This bug has been marked as a duplicate of bug 216949 ***