Fix depth camera breaking shadows #2907
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.
In the code of the depth camera,
setShadowTechnique(Ogre::SHADOWTYPE_NONE);
is applied to disable shadows. However this is not the correct way to do it. This function disables shadow globally, destroying shadow maps (at least until the next frame, even if shadows are restored with this function), and is not meant as a way to quickly toggle on/off shadows. The documentation of Ogre states:This is the cause of issue #2584. Basically, any camera that tries to render after a depth camera in the same frame won't have any shadow.
This is fixed this by removing the calls to
setShadowTechnique
. Instead, shadows are disabled on the viewport object. I did observe that this fixes the issue mentioned above in the project I'm working on.