Developer Notes

This is expected. It would be unreasonable to track the relationship between every shadow castor’s CPU culling and every shadow page or even clipmap. Shadow distances are not meant to be set so close that obvious popping is noticeable in the first place.

Note this will not occur with Nanite objects, as those - by design - do not respect the old CPU shadow culling distances.

Description

When a sufficiently large object casts shadows near the Directional Light's Dynamic Shadow Distance range, the VSM pages are inconsistent in their shadowing - some will choose to shadow per-pixel, while others will pop based on the caster distance.

The per-pixel shadowing is due to clipmap radii, rather than the actual Dynamic Shadow Distance.

Steps to Reproduce

1. Download the attached test project and open.

2. Execute the following command to place the camera within the Dynamic Shadow Distance range. "BugItGo 12670.862583 13280.414139 13709.718215 -37.788929 -144.798174 -0.000001"

3. Move the camera backwards away from the landscape, and, when the shadow is completely gone, back towards the landscape.

4. Observe how some pages cut the shadow off per-pixel, while some pages pop in and out.

5. Execute the console command "r.Shadow.Virtual.Cache 0"

6. Repeat steps 2 and 3

7. Observe how the shadow now pops in all at once.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-366232 in the post.

0
Login to Vote

By Design
ComponentUE - Rendering - Graphics Features - Shadows
Affects Versions5.75.7.3
Target Fix5.8
CreatedFeb 17, 2026
ResolvedFeb 23, 2026
UpdatedMay 4, 2026
View Jira Issue