Created attachment 460080 [details]
WebGL supported extensions list on iPhone 13 Pro, iOS 15.6 beta 2
The support for the EXT_float_blend extension is missing on iOS starting from version 15.4, which breaks blending for floating point textures.
How to reproduce:
Open https://www.geeks3d.com/webgl/ from an iOS 15.4+ device and you'll see that EXT_float_blend is missing from the supported extensions list.
iOS 15.4 included the large Metal backend roll-forward. Kimmo, could you triage this on iOS hardware?
EXT_float_blend needs capability to render with blend to 32-bit float (RGBA32F).
Unfortunately none of the iPhone GPUs have this capability.
I believe it was a bug on our behalf to ship EXT_float_blend on prior iOS releases.
The clients could check if they can use EXT_color_buffer_float to render to RGBA16F render targets when blending is needed.
GPU Texture Capabilities by Pixel Format, RGBA32Float, lacks "Blend" for GPUFamilyApple cases:
Thanks Kimmo. Yes, confirming, this was a longstanding bug in the WebGL implementation on iOS. A bug must have also been fixed in ANGLE in the iOS 15.4 release.
https://www.khronos.org/registry/webgl/extensions/EXT_color_buffer_half_float/ is now exposed on iOS devices in both the WebGL 1.0 and 2.0 APIs. Please adjust code to explicitly use 16-bit floating-point textures when available.
Thanks for the clarification!
Am I right that blending should work with half_float textures on iOS? We did a quick test and was still not working. We can probably create a small example that reproduces the issue.
Just to add a little bit of context: we're using float blending for our force graph simulation algorithm https://cosmograph.app.
> Am I right that blending should work with half_float textures on iOS? We did a quick test and was still not working.
Yes, it should. Note that RGB16F support in WebGL is not universal, so for maximum compatibility, use RGBA16F.
> We can probably create a small example that reproduces the issue.
This would be appreciated, thanks!
Resolving based on Kimmo and Kenneth's statements.