Published by Sean Carr
Reaching 120 FPS at Native 4K: The 3.5 ms That Wasn't Where We Looked
A CPU-bound frame, an 80% sub-bracket, four neutral fixes, and twelve NPCs sharing one 103,440-vertex mesh.
At a Glance
Visibility prep after bone bounds
3.23 ms to 0.107 ms
After switching to skeleton bone bounds: visibility prep 3.23 ms to 0.107 ms; 4K wall 8.15 to 4.98 ms in one A/B; 4K bench whole-path p50 6.75 ms (about 148 FPS).
Visibility prep share of CPU prep
80.0%
Sub-bracket attribution: visibility prep 3.571 ms = 80.0% of CPU prep, sweeping 2,397 entities to draw 50, with about 0 bounds rebuilt per frame. Sub-brackets summed to 4.409 ms vs a 4.461 ms parent (+0.051 ms residual, +1.14%).
Baseline CPU wall p50
10.499 ms
Baseline native 4K: CPU wall p50 10.499 ms (95.2 FPS); GPU device envelope p50 2.411 ms.
Actual owner
12 wandering NPCs
Actual owner: 12 wandering NPCs sharing one 103,440-vertex rest mesh, causing 12 full bounds walks of about 1.24M vertices per frame.
| Telemetry Metric | Measured Value | Context & Observability |
|---|---|---|
| Visibility prep after bone bounds | 3.23 ms to 0.107 ms | After switching to skeleton bone bounds: visibility prep 3.23 ms to 0.107 ms; 4K wall 8.15 to 4.98 ms in one A/B; 4K bench whole-path p50 6.75 ms (about 148 FPS). |
| Visibility prep share of CPU prep | 80.0% | Sub-bracket attribution: visibility prep 3.571 ms = 80.0% of CPU prep, sweeping 2,397 entities to draw 50, with about 0 bounds rebuilt per frame. Sub-brackets summed to 4.409 ms vs a 4.461 ms parent (+0.051 ms residual, +1.14%). |
| Baseline CPU wall p50 | 10.499 ms | Baseline native 4K: CPU wall p50 10.499 ms (95.2 FPS); GPU device envelope p50 2.411 ms. |
| Actual owner | 12 wandering NPCs | Actual owner: 12 wandering NPCs sharing one 103,440-vertex rest mesh, causing 12 full bounds walks of about 1.24M vertices per frame. |
| Prep bracket share of intercept | 78% | Wall vs render scale fit: T(s) = 5.63 + 4.87·s² ms. The CPU prep bracket was 4.378 ms, 78% of the intercept and 42% of the native wall, and did not change with render scale. |
| Candidate fixes before the owner | neutral | Candidate fixes in sequence: grid pre-filter neutral; static/dynamic partition neutral; flat cache 8%; supplied bounds zero; a static-prop premise falsified. |
| Bounds containment failures | 0 failures | Containment check of the new bounds against posed vertices: 0 failures over 14,336 samples. |
Published by Sean Carr
View & print executive brief version →Executive Summary & Core Finding
At a fixed 4K camera anchor the frame was CPU-bound: a 10.50 ms wall against a 2.41 ms GPU envelope. Sub-bracketing the CPU prep showed one region, visibility prep, owned 80.0% of it. Four candidate fixes measured neutral or near-neutral before the true owner was found: twelve wandering NPCs whose bounds were re-derived from every vertex each frame. Replacing that with skeleton bone bounds cut visibility prep from 3.23 ms to 0.107 ms.
Method
Data collected Aug 12-13, 2026; written up October 2026.
August 12-13, 2026, canonical executable at native 3840x2161 fullscreen, fixed camera anchor, immediate present mode, 1100 frames per cell with warmup dropped.
GPU time came from device timestamps; CPU wall from the frame timer.
The CPU prep region was split into 8 disjoint timed sub-brackets with paired work counters behind a default-off switch, and a coherence gate checked that the sub-brackets summed to the parent within a named residual.
Vulkan validation layers were confirmed off.
Fixes were judged by whole-frame wall time.
Hardware is not restated in these records.
What We Measured
CPU-bound native 4K frame, sub-bracket attribution, and the real owner
Visibility prep after bone bounds
3.23 ms to 0.107 ms
After switching to skeleton bone bounds: visibility prep 3.23 ms to 0.107 ms; 4K wall 8.15 to 4.98 ms in one A/B; 4K bench whole-path p50 6.75 ms (about 148 FPS).
Visibility prep share of CPU prep
80.0%
Sub-bracket attribution: visibility prep 3.571 ms = 80.0% of CPU prep, sweeping 2,397 entities to draw 50, with about 0 bounds rebuilt per frame. Sub-brackets summed to 4.409 ms vs a 4.461 ms parent (+0.051 ms residual, +1.14%).
Baseline CPU wall p50
10.499 ms
Baseline native 4K: CPU wall p50 10.499 ms (95.2 FPS); GPU device envelope p50 2.411 ms.
Actual owner
12 wandering NPCs
Actual owner: 12 wandering NPCs sharing one 103,440-vertex rest mesh, causing 12 full bounds walks of about 1.24M vertices per frame.
Prep bracket share of intercept
78%
Wall vs render scale fit: T(s) = 5.63 + 4.87·s² ms. The CPU prep bracket was 4.378 ms, 78% of the intercept and 42% of the native wall, and did not change with render scale.
Candidate fixes before the owner
neutral
Candidate fixes in sequence: grid pre-filter neutral; static/dynamic partition neutral; flat cache 8%; supplied bounds zero; a static-prop premise falsified.
Bounds containment failures
0 failures
Containment check of the new bounds against posed vertices: 0 failures over 14,336 samples.
What We Think It Suggests
- When the GPU envelope is a fraction of the wall, shader and resolution work cannot close the gap; attributing the CPU side, with a work counter beside each timer, is what turned a single 4 ms number into a specific owner.
- The counters ruled out the plausible suspects (descriptor churn, vector growth, static rebuilds) but did not name the true cause. That took a further bisection, which suggests attribution narrows the search but does not end it.
Limits
- One scene and camera anchor; other anchors with more water, foliage or crowds have different owners.
- Sub-bracket p95/p99 were unavailable because the telemetry sampler was too sparse at 4K; only window-median p50 is reported.
- The 3.571 ms and 3.23 ms visibility-prep figures come from different runs and builds and should not be subtracted from each other.
- Hardware is not recorded in these sources; the GPU in the engine's earlier ladder measurements was an RTX 5080.
Detailed Analysis & Field Observations
At a fixed 4K camera anchor the frame was CPU-bound: a 10.50 ms wall against a 2.41 ms GPU envelope. Sub-bracketing the CPU prep showed one region, visibility prep, owned 80.0% of it. Four candidate fixes measured neutral or near-neutral before the true owner was found: twelve wandering NPCs whose bounds were re-derived from every vertex each frame. Replacing that with skeleton bone bounds cut visibility prep from 3.23 ms to 0.107 ms.
Data collected Aug 12-13, 2026; written up October 2026.