Don't use enormous offset for second log depth frustum near plane. #8727
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.
When log depth is enabled, and multiple frustums are still needed,
Scene
previously made the next near plane overlap the previous one by 10% for opaque rendering (as compared to 0.01% overlap when log depth is disabled) . With the default setup, this is 10 million meters. When a scene has a mix of opaque and translucent objects, 10 million meters of eye-space difference is easily visible as incorrect depth testing. This PR changes log depth to use the same overlap as non-log-depth (0.01%).Since I have no idea why this was set to 10% in the first place, there's a decent chance this will introduce a bug elsewhere. But multiple frustums are rare with log depth anyway, and any artifacts would be seams between frustums, which I expect to be much less offensive than rubbish depth testing.
This PR also includes a small tweak to how
v_depthFromNearPlusOne
is calculated that might make it more numerically stable, but I couldn't see a difference either way from it.Fixes #8725