Graphics & Engine•Study date: August 12, 2026•Printable brief ↗Performance Engineering

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.

Executive Brief

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.

Empirical Findings TableScroll table →
Telemetry MetricMeasured ValueContext & Observability
Visibility prep after bone bounds3.23 ms to 0.107 msAfter 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 prep80.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 p5010.499 msBaseline native 4K: CPU wall p50 10.499 ms (95.2 FPS); GPU device envelope p50 2.411 ms.
Actual owner12 wandering NPCsActual 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 intercept78%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 ownerneutralCandidate fixes in sequence: grid pre-filter neutral; static/dynamic partition neutral; flat cache 8%; supplied bounds zero; a static-prop premise falsified.
Bounds containment failures0 failuresContainment check of the new bounds against posed vertices: 0 failures over 14,336 samples.

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

1

Data collected Aug 12-13, 2026; written up October 2026.

2

August 12-13, 2026, canonical executable at native 3840x2161 fullscreen, fixed camera anchor, immediate present mode, 1100 frames per cell with warmup dropped.

3

GPU time came from device timestamps; CPU wall from the frame timer.

4

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.

5

Vulkan validation layers were confirmed off.

6

Fixes were judged by whole-frame wall time.

7

Hardware is not restated in these records.

Empirical Telemetry

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.

Interpretation & Working Hypotheses

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.
Methodology Boundaries

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.