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.
This will fix the shadow artifact reported in this issue #11848 (the first issue of the two issueses reported there).
I will explain a bit more detail even though the commit is so small.
I found that the first call of
RasterizerSceneGLES3::_render_list
(more specifically,_render_geometry
andglDrawXXX
from that function) uses front face modeGL_CCW
(counter clock wise) since that's the default value andglFrontFace(GL_CW)
is only called at the end of theRasterizerSceneGLES3::_render_list
.This led to the opposite front face definition when we generate shadow map for the first time in the application lifetime, which causes shadow artifact as in that issue.
Another thing to note is that shadow map is not re-drawed in every frame when scene is static, so the first wrong front face shadow map is continued to be used in that case.
I figured this type of one-time gl state setup can be in
RasterizerSceneGLES3::initialize
, so that's what my PR is.