fix(shadows): don't apply hardware depth bias to PCSS shadows#8942
Merged
Conversation
PCSS shadows store depth in a color buffer and bias in the shader, so the hardware polygon-offset bias is a no-op for PCSS on WebGL2 but is applied inconsistently on WebGPU (the backends use different shadow depth-buffer formats), over-biasing and peter-panning valid self-shadows. Skip the hardware depth bias for PCSS of any light type (PCF still uses it), and refresh it when the shadow type changes.
Build size reportThis PR changes the size of the minified bundles.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
PCSS shadows store depth in a color buffer and apply their bias in the shader, so the hardware polygon-offset depth bias is a no-op for PCSS on WebGL2 but is applied inconsistently on WebGPU (the backends use different shadow depth-buffer formats). On WebGPU this over-biased PCSS shadows, peter-panning valid self-shadows away (e.g. a large terrain casting onto itself).
Changes:
_updateShadowBiasnow skips the hardware depth bias for PCSS shadows of any light type (in addition to the existing non-clustered omni case). The bias is still applied for hardware-compare PCF shadows.Behavior: