Unity / C# / D3D12

Shader Hitch Pipeline

Unity graphics-state tracing and warmup, with a measured repair for repeated driver checks and full-route evidence from official Boat Attack and URP scenes.

Public source · Draft PR 4; native Boat Attack and URP evidence published; not merged

ENGINEERING CASE STUDY · DRAFT PR

Finding the work behind a half-second stall

Boat Attack exposed an avoidable cost in my warmup receipt path: each repeated environment check rehashed about 127 MB of loaded driver files on the main thread. Reusing the byte-attested snapshot removed that repeated work while retaining identity checks.

~563 → 0.27–0.42 msRepeated driver checks in native diagnostics
16 / 16Repaired Boat Attack full-route processes completed
0 above 200 msSampled CPU Update intervals in that repaired cohort

The first full byte hash still costs about 574 ms. The diagnostic processes and formal comparison cohorts are separate; these figures do not imply a general scheduler or GPU speedup.

  1. Observe the whole route

    The initial warmup arms showed 583–629 ms maximum Update intervals. First-pass P99 alone concealed this regression.

  2. Attribute the overhead

    Receipt writing synchronously rehashed four loaded driver DLLs. Native warmup batch timings did not include that extra CPU work.

  3. Retain checks and reuse work

    A process-local snapshot preserves byte hashes. Each capture checks device, module and file metadata; changed or failed probes invalidate the snapshot.

  4. Repeat the original workload

    Four processes per policy completed the original Boat Attack routes. Both the initial negative cohort and the repaired cohort remain inspectable.

Boat Attack before and after the repair

All 32 Boat Attack runs: first-pass P99 remains mixed while roughly 600 ms warmup-arm maxima disappear in the repaired cohort.
Published figure, unchanged. Each marker is a process; short lines are medians. Open the image at full resolution.
Largest sampled CPU Update interval across four processes per policy
PolicyBefore repair (ms)After repair (ms)
Disabled47.08958.353
All at once591.82651.737
Scheduled629.28857.728
Observed budget594.05390.256

These are two sequential cohorts with different frozen Players and plans. Caches were retained. The before/after comparison supports a diagnosed overhead repair; the cohorts are not pooled as one unchanged experimental cell.

Inspect all 32 Boat Attack runs
All 32 Boat Attack process points; rounded to three decimals
CohortRunPolicyFirst-pass P99 (ms)Whole-run max (ms)
Before1Disabled35.44847.089
Before2All at once34.032584.435
Before3Observed budget34.735594.053
Before4Scheduled32.926629.288
Before5All at once32.285583.276
Before6Scheduled36.859584.297
Before7Disabled34.35244.595
Before8Observed budget36.099587.168
Before9Scheduled34.716595.050
Before10Observed budget34.470593.155
Before11All at once36.729585.566
Before12Disabled35.14043.982
Before13Observed budget33.526593.747
Before14Disabled36.98445.609
Before15Scheduled35.673584.487
Before16All at once36.785591.826
After1Disabled40.51658.353
After2All at once37.70749.883
After3Observed budget37.87990.256
After4Scheduled39.26650.172
After5All at once38.45946.435
After6Scheduled39.90257.728
After7Disabled41.84957.134
After8Observed budget39.53059.639
After9Scheduled35.91749.104
After10Observed budget37.74445.781
After11All at once36.53250.225
After12Disabled38.86946.289
After13Observed budget38.18949.239
After14Disabled36.32946.063
After15Scheduled38.98756.373
After16All at once38.26951.737

Download original points with full precision and provenance hashes

Four official URP scenes, with the outlier retained

Terminal, Garden, Oasis and Cockpit completed their original timelines in all 16 formal processes. Each policy used the same final Player. Outcomes remain mixed: the observed-budget arm includes an unexplained 381.3446 ms sampled Update interval.

Six panels show all 16 URP runs: four scene P99 comparisons, maximum Update intervals including the 381.3446 ms outlier, and observer elapsed time.
Unchanged published figure. The observer-time axis starts above zero; sampled Update intervals are CPU measurements, not GPU completion times.
Inspect all 16 URP runs
All 16 URP process points; all original scene timelines retained
RunPolicyObserver time (s)Maximum Update (ms)
1Disabled264.745125212.1705
2All at once264.896429218.3915
3Observed budget264.854141217.9709
4Scheduled265.136408214.2184
5All at once264.579465217.7115
6Scheduled264.819980216.0261
7Disabled264.827879220.8122
8Observed budget265.147337381.3446
9Scheduled264.695923217.3337
10Observed budget264.916918218.6572
11All at once265.009663221.4843
12Disabled264.573533220.9166
13Observed budget264.792184219.5831
14Disabled264.866628217.6925
15Scheduled264.678605212.8079
16All at once264.669977217.3270

Download full-precision points, per-scene values and hardware conditions

What this result establishes

A specific repair to instrumentation overhead, and completed native integration on the recorded Boat Attack and URP routes. Overall scheduling speedup, useful first-draw coverage gains and Megacity acceptance remain unproven.

Windows · Unity 6000.1.0f1 · D3D12 / IL2CPP · AMD Radeon AI PRO R9700 · application, OS and driver caches retained. Figures and points are historical records, separate from this website’s live WebGPU lab.

Work and recorded results

Scope of the evidence

Source and evidence

Reviewed source revision: 9c7fc7b75fa7ac1bca2e407821414cf5941e9b8c

Public source at this revision ↗

View draft PR (not merged) ↗

Current main: 6218483755b40f6fd3742754b9e71c53b74d3bd4. The draft evidence above is separate from this merged version.

Updated 2026-09-14. CV wording and this page use the same project manifest.