Do not call updateDrawList, updateDrawListShadow, and touchMapBlocks in the same frame #13393
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.
All of updateDrawList, updateDrawListShadow, and touchMapBlocks can take a few milliseconds with larg'ish viewing ranges. This avoids calling any combination of them in the same frame.
This also required a change to the shadow renderer. Before the game would add a directional light upon the first use. Now it's in the constructor, and it allow some slight simplification.
The alternative is to check for this in
MainShaderConstantSetter::onSetConstants
, but this seems cleaner.To do
This PR is Ready for Review.
How to test
Load any world. Make sure there are no crashes :)
Try with shadows and note how the "not rendering time" in the usage graphs is better spread over the frames.