SSGI surface correction: Windows and Metal qualification
Pre-releaseSSGI surface reconstruction and HD startup qualification
Source: d610d6a1ad4ab0ea9c7768c1a30acd2cce3fc2e4.
Draft PR: #159, stacked on #158.
The correction passes the original 16-frame HD stationary-TAA limits on
Radeon/Vulkan, Radeon/DX12, and hosted Metal. It removes the observed horizontal
bands in the local indirect-light captures. All nine Radeon image gates pass in
three complete runs. Runs 2 and 3 pass every configured check, including host
preflight and postflight. Their reproducibility check passes: all 257 compared
artifacts are byte-identical, metadata agrees, and observed timing differences
remain within the existing noise bounds.
Run 1 remains FAIL: Windows Search used 78% of one logical CPU after the helmet
case, and System used 109% after Bistro, exceeding the unchanged 75% process
limit. Both images pass. The two subsequent valid runs do not retroactively
qualify run 1. No process was stopped, load limit changed, or baseline updated.
The Radeon profile records timing without adopting RTX performance budgets.
Named RTX 4080 and physical Apple M1 Max qualification remains unperformed.
Correction and controls
Point-sampled depth must be reconstructed at the selected texel center.
Reconstructing at the requested fractional coordinate moves receivers off an
inclined surface. Separately, a cross product of finite-difference edges shrinks
with pixel area; an absolute length guard incorrectly substitutes a fallback
normal at small footprints. Placement and resolve now scale the edges before
normalizing their cross product. Capture-only geometry follows the same policy.
| HD variant/backend | Mean RGB change | Edge change | Outlier fraction | SSIM | Original gate |
|---|---|---|---|---|---|
| Original / Vulkan | 1.480509259 | 0.003520461 | 0.001032986 | 0.979310670 | Fail |
| Texel centers only / Vulkan | 1.529759838 | 0.003519964 | 0.000746528 | 0.976575446 | Fail |
| Scaled normal only / Vulkan | 0.879440104 | 0.003198458 | 0.003294271 | 0.973574972 | Fail |
| Combined / Vulkan | 0.336552373 | 0.001203517 | 0.000881076 | 0.990864689 | Pass |
| Combined / DX12 | 0.401780961 | 0.001269536 | 0.000703125 | 0.985344129 | Pass |
| Combined / hosted Metal | 0.270141782 | 0.001029748 | 0.000625000 | 0.992959476 | Pass |
HD is now a regular GPU regression. A second regression uses the actual probe
placement pipeline on an analytic inclined plane at four depth extents and
four fractional placement phases. All 154,720 receiver checks pass on each
verified backend. Reverting the coordinate correction fails independently with
a 0.016759634 world-unit plane error; reverting the normal correction fails
independently with a 0.6 normal-component error. Both controls were restored.
The complete local shared suite passes, with 488 library tests and 93 reported
golden passes. Four goldens remain ignored; optional external-input early
returns do not qualify those fixtures. Bright/dim/bright recovery retains all
48 settled phase captures byte-identically and agrees with a fresh reference.
Both corrected Metal canonical images pass: Sponza SSIM 0.997922897 and
skinned/alpha SSIM 0.999539196. Hosted Metal executes the new plane and HD tests,
but lacks timestamp queries and cannot qualify physical-hardware timing.
Evidence qualifications and next work
All 24 hosted CheckRuns report SUCCESS; two scheduled hardware jobs are skipped.
The Windows shared-test log exposes a separate CI execution gap: PowerShell
invokes the .sh entry point without an explicit Bash shell, emits no Cargo/test
output, and produces no build cache. That green status does not prove hosted
Windows test execution. Local Windows tests/builds in this archive executed
through Bash or direct Cargo commands; their actual outputs are retained.
Correcting the hosted invocation is follow-up #140 work.
Initial nominal DX12 diagnostic commands set only BLOOM_WGPU_BACKEND; the
golden harness reads WGPU_BACKEND, and those runs actually used Vulkan.
They do not qualify DX12. Subsequent dx12-verified-* logs set both selectors
and verify the reported adapter is Dx12. The original records and correction
receipt are retained to make that distinction explicit.
A separate native link audit on this source compiles 13 of 20 canonical
examples. Six still use the removed Color palette value; the embedded-view
example calls a Perry UI function unavailable in pinned Perry 0.5.1182. Its
receipts and failure logs are included as next-work evidence, not as a passing
all-example acceptance claim. CI currently validates the inventory on PRs;
the complete compile/link matrix and clean-install startup remain unfinished.
The archive includes local focused captures, isolated controls, all three
full Radeon bundles, reproducibility, exact committed source, hosted receipts,
Metal canonical depth/MRT attachments, and toolchain identity. Earlier isolated
captures record their source plus exact temporary patches; the full corpus is
rebuilt on clean committed source above. The manifest hashes each payload, and
the ZIP is independently read back and verified before publication.
The overall engine plan remains open: representative temporal/geometry and
platform acceptance, starters/examples, release installation, streaming,
generated APIs, components, and runtime UI. No draft PR has been merged.
Download integrity
Archive: ssgi-surface-d610d6a-windows-metal-20260911-v1.zip (100,093,562 bytes).
SHA-256: 0ea0d9ff4769c7ee9eaed2ed977bf2205f6eda52d328120819743037a5f5645a. All 2,134 payloads were read back and verified.
The separate raw-attachment receipt verifies all 68 Metal raw attachments,
156,637,696 bytes, against their byte counts and FNV-1a checksums.
Pinned scene models and executable binaries are excluded; reproduction uses the repository's pinned assets.