Fix shadow mapping with RGBA textures on html #33093
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #28444
@Toshiwoz This doesn't address the GLES3 issue you were facing in that thread. If you can still reproduce that issue with orthogonal directional lights, please open another issue.
This fix has two pieces.
On WebGL 91% of devices support depth textures with an extension. However, we were only polling for the GL ES 2.0 extension so it was never used on Web export. Accordingly HTML fell back on RGBA shadows. For most devices it was enough to just enable the extension.
RGBA shadows were completely broken in 3D in GLES2. The color buffer was never cleared. Additionally, all lights were using the directional light shadow atlas to store shadow maps, which likely lead to some pretty odd results. We never caught this earlier because all desktop and the overwhelming majority of mobile devices supported and used depth textures.
Code graciously donated by Gamblify. :)
CC: @jesperkondrup