Since upgrading to 5.6, we have noticed an issue where thin geometry on our characters like fingers and earlobes are often glowing with nuclear intensity when backlit by the sun light:
[Image Removed]
Reducing the value of r.Shadow.Virtual.ScreenRayLength reduces this artifact, going away entirely when set all the way down to zero:
[Image Removed]
The issue appears to be that with the default ScreenRayLength, at even moderate distances from the camera, the ray offset ends up pushing the shadow ray all the way through to the opposite side of the fingers, so they end up with no shadowing and zero OccluderDistance, meaning they transmit 100% of the light.
I believe I have tracked down the source of the change to a modification made to VirtualShadowMapProjection.usf in CL 31295145:
VSM: disable screen ray and normal bias on subsurface materials
Can cause various artifacts with extreme opacity values
Before this change, subsurface materials would go through the call to SMRTRayOffset = VirtualShadowMapScreenRayCast(…), which would end up generating a much smaller ray offset value, limiting the “glow” to just some edge artifacts that were much less visually obvious:
[Image Removed]
Based on the changelist description, I am curious whether the original intent was to force SMRTRayOffset to 0.0 for subsurface materials, and not back to the value set in r.Shadow.Virtual.ScreenRayLength? If not, is reducing that CVar value to a lower value the best way to go about fixing this, or is there something else that we can try?
[Attachment Removed]