Repository navigation
Conversation
Ports Unreal 5.8.3's GPU page management in three phases ordered by measured CPU ceiling: one GPU-culled shadow pass per light (BuildPerPageDrawCommands), caster changes pushed by the scene (CacheManager change set), and the page table and physical pool on the GPU (PhysicalPageManagement). Folds PRD-457, 524, 652 and 773; maps the three VSM subsystem rows to PRD-775.
Contributor
Author
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.
What is this PR about?
The plan (PRD-775) to move virtual shadow map page work from the CPU to the GPU, the way Unreal 5.8.3 does it. This first commit is the PRD only; no engine code yet.
Why does it matter?
The stress lab's CPU frame is p50 12.82 / p95 17.64 ms against Unreal's 9.45 / 11.03 ms on the same scene. With the plain sun map we are already at 9.09 / 10.7 ms, so the gap is the virtual shadow map's CPU work: per-page caster selection, per-page rows, one render pass per page (256 on a grant), a per-frame scan of every caster, and a CPU page table and pool. Unreal does all of this with GPU compute passes and one batched shadow pass.
Plan (three phases, ordered by measured CPU ceiling)
VirtualShadowMapBuildPerPageDrawCommands.usf), and one indirect draw per caster row replaces 256 page passes. Ceiling: about 0.96 ms native on a granting frame, plus about 1 ms of web encode. This is the p95 lever.VirtualShadowMapPhysicalPageManagement.usf). Ceiling: 0.06 to 0.24 ms native, plus the table upload. It also gives PRD-457 its GPU request flags.Folds into PRD-457, 524, 652 and 773 without duplicating them; the feature map's three VSM rows now name PRD-775.
Checklist (mirrors the PRD)
Phase 1
Phase 2
Phase 3
PageAtlas(differential case, pixels max diff 0).Acceptance
?stressCPU p95 < 11.03 ms and p50 < 9.45 ms, GPU p95 not worse.Still open
Checks run
pnpm check:docs: 3638 links OK;pnpm unreal:statusrefreshed the map.pnpm prd:progress: 0/3 phases, 0/6 boxes, labelprd:0%.