I have some quite sophisticated shaders (in terms of data access, dynamic loops and dynamic nested flow control). I have tested the shaders in the following environments:
- MacOS (tested on M1 and AMD GPU's)
- native OpenGL (works perfect)
- Chrome
- with ANGLE configured to OpenGL (works perfect)
- with ANGLE configured to use Metal (works fine with work around to use texture lookup instead of UBO's)
- Safari
- with ANGLE configured to use OpenGL (in past worked fine, now fails even trying various work-arounds)
- with ANGLE configured to use Metal (works fine with work around to use texture lookup instead of UBO's)
- MS-Windows (Tested with NVIDIA GPU)
- Native OpenGL (works perfect)
- Chrome
- with ANGLE configured to OpenGL (works perfect)
- with ANGLE configured to use Direct3D (works poorly with work around of emulating UBO's with texture fetch and some shaders crash the GPU process as well)
- Edge: similar to Chrome with Direct3D: works often quite poorly even with work around enabled, but some shaders sometimes crash the GPU process or just don't work correctly)
- Linux (NVIDIA GPU and Intel GPU)
- Native OpenGL (works perfect)
- Chrome with ANGLE configured to OpenGL (works perfect)
In light of the above, I am seeing that the Direct3D backend is just making issues, not solving them. It would be quite ideal for the backend to be OpenGL for WebGL2. OpenGL drivers on MS-Windows (including AMD and Intel) have come a very long way since ANGLE was first developed. So long, that I claim that emulating OpenGL with Direct3D lowers compatibility and lowers performance a great deal with sophisticated shaders.
Right now, the poor performance and poor reliability to execute complicated shaders jeopardises my work.