Band faces now use signed distance to the displaced solid intervals, continuous across bands, so MC interpolates the interface instead of terracing at density levels. The Gradient amplitude is restored to width/8 (about 4 m peak-to-peak at 16 m). Ring/terrace audit at LOD0-8 on the FI floor and SW ceiling passes; negative controls: L30 (rings) and L31 (flat) both fail. Hole/interface audits, 16 passage rows and 24/24 determinism pass. Evaluator 20. Cost vs L31 SW +1.9%, FI +1.5%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
7.8 KiB
VoxelForge L32 report
Cause and fix
The old Gradient transition wrote constant solid-density values per band. Those values are not signed distance to the displaced boundary, so Marching Cubes crossed band levels as contour-like terraces. The hash surface quantization was not the cause: sampling across the final FI floor gives density -0.53345 at z=-121.50 m and +0.46655 at -121.25 m; the SW ceiling gives +0.01514 at -126.50 m and -0.98486 at -126.25 m. Both cross linearly at about 4 density units/m.
L32 restores the width/8 Gradient displacement (2 m each side, about 4 m peak-to-peak at 16 m owner width). Density is now signed distance to the union of the displaced solid intervals, continuous across band boundaries. Cap samples follow the same displaced faces. Passage-mouth fades use cubic smoothstep across a 2 m fade from the protected mouth radius; this preserves the face while blending the column flare. Version/evaluator is v20.
Surface and interface audits
Branch-locked radial and straight profiles pass on both faces at LOD0 through LOD8. Every tested LOD has at least 3.15 m height range; no repeated-height plateau or following step was found. LOD0/1 profiles use 0.125 m samples (SW LOD1 also checked at 0.0625 m); LOD2–8 use 0.5 m samples. The largest adjacent-normal change was 17.50° on the fine SW LOD1 scan, below the 20° audit limit. Peak RSS for the final Python ring scans was 373,596 KiB (FI LOD0); the passage-fade scans peaked at 52,128 KiB. Mesh scans use tile/chunk processing.
Interleaved also passes 11 radial/straight profiles at each LOD0–8: all selected windows have full coverage, no flats or steps, and at most 0.367° adjacent-normal change. Their local height ranges are 0.032–3.174 m; the 3 m minimum is the Gradient amplitude check, not an Interleaved requirement. Peak RSS for this tile-streamed sweep was 24,468 KiB.
Both ring negative controls fail as intended: L30 has 0.742 m range, a 1.875 m flat run followed by a 0.241 m step, and a 27.34° normal jump; L31's flat fix has only 0.000046 m range. The passage-mouth audit passes on both overlapping faces: upper max normal change 15.06°, lower 7.96°, with full coverage and no flats or steps.
Hole/interface and minimum-band audits pass for Hard, Gradient and Interleaved, for both recipes and compilers: zero hole columns and zero air samples. Wider-than-declared and thinner-than-minimum controls are rejected. Minimum bands are 0.5 m FI, 1.0 m SW and 6.25 m lower band; maximum Interleaved crossing is 6.487 m against the 16 m bound. Passage audit passes all 16 recipe-stamped rows; recipe-mismatch and disconnected-end controls are detected.
Determinism passes 24/24: the L25 command and 24 m crossing, both recipes, Clang and GCC, workers 1/8/12.
Captures and hashes
Tint-on and tint-off JPEGs are in captures/; all are under 30 KB (limit 300 KB):
fi-floor-near-tint-on.jpg,fi-floor-near-tint-off.jpgfi-floor-far-tint-on.jpg,fi-floor-far-tint-off.jpgsw-ceiling-near-tint-on.jpg,sw-ceiling-near-tint-off.jpgsw-ceiling-far-tint-on.jpg,sw-ceiling-far-tint-off.jpg
They show the FI floor and SW ceiling from inside each stratum, with grazing light, at LOD0 and LOD8. Capture SHA256 values:
| Capture | SHA256 |
|---|---|
| fi-floor-far-tint-off.jpg | 239b6be70c177e267d2db95f206fdcdc8834779a7948fdaaddd136b4163d1f34 |
| fi-floor-far-tint-on.jpg | 3ecefd555275036a7045a541f02bb1873e22302495009dbd80b4ac58ce716b58 |
| fi-floor-near-tint-off.jpg | 847f10acfb420c2bbded61bdee7f578cde19469777b2ef4c5a0eba08b406611c |
| fi-floor-near-tint-on.jpg | 4a5d3e3f8e8254639fa1840a2fb4497f2ab19f64bb4734e13abe3c3cfcfb4008 |
| sw-ceiling-far-tint-off.jpg | f5ec099076c507bed5a703302d89b665e139804a8f8895a68c1d5705aabf9f61 |
| sw-ceiling-far-tint-on.jpg | b82618814c8320be2de1ac53ba10e9ab4469299a8b53b776be32c6ca9a659988 |
| sw-ceiling-near-tint-off.jpg | 5789ce59a7748aa278c1b95edae45aec87721721260c1a3aefe6c4cc1e47cd7a |
| sw-ceiling-near-tint-on.jpg | aa4351c5effc5e93fc0879257fe056b3f4625e7842f5118f28588fb2c5c1afe2 |
Final Core binary SHA256:
- Clang:
052694a569c92ef407c25bd9a534c7123ef800f46733e5c428e965c32d905fdc - GCC:
c8656901ce18861f12168849165785937a2495233604314df9e005ed1e92afdd
Cost and edits
Five interleaved pairs per recipe against L31. Median whole-view-ready time was SW 1.723 s → 1.756 s (+1.92%) and FI 16.963 s → 17.221 s (+1.52%); paired results were mixed and within observed run noise. No Unreal files changed. The five edited files are the Core public header, FarShellsInternal.h, ResolvedLayoutInternal.h, ShapeWorldInternal.h and LinuxOffscreenCapture.cpp; Unreal compilation was not available here.
Failed and retried runs
- The initial multi-LOD Python audit was stopped by system RAM pressure (reported peak unavailable). Subsequent mesh audits ran with CPU/address-space caps and streamed or selected tiles; peak RSS is recorded above. The first whole-mesh FI LOD8 candidate scan was interrupted and replaced by a targeted tile scan.
- Early ring-window searches and narrow-height audits selected the wrong one of two overlapping faces. The FI LOD3/4 branch probes measured 1.423 m amplitude / a 1.0 m flat run; the SW LOD1 low-face probe reached 20.19° normal change. Face-locked, broad-window scans replaced them and pass. The exploratory
ring-*,ringset-*,search-*andwindow-search-*logs preserve rejected window candidates. The L30/L31 failures above are intentional negative controls. - The first Interleaved layout/export probe omitted the runner's required streaming flags and exited with usage; the retry produced the LOD0–8 export. Its broad 0.5 m candidate scan applied the Gradient 3 m window heuristic and rejected LOD0–4 (one LOD1 candidate switched overlapping faces at 62.92°); selected branch-locked profiles at those LODs and passing LOD5–8 windows show no plateaus or steps. An unsupported
--helpprobe also returned usage with exit 2. - The exact-source passage audit at midpoint preference switched faces and reported a 47.79° jump; upper- and lower-face locked reruns pass. An early wrong-camera export selected zero tiles; the exact camera export was rerun. Initial multi-LOD capture meshes mixed neighboring shells, so the final captures use focused LOD0/LOD8 surface patches.
- One fine-normal probe had a tuple-index error and was corrected. A SW far-mesh filter had an argument/layout parsing error and was corrected. The density CSV was overwritten by verbose output; the probe was rebuilt from final Core objects and rerun.
- The transition-cache build failed on a nested
Shapeinitializer; the retry built, but the cache showed no gain and was removed./usr/bin/timewas unavailable for one capture attempt; the capped renderer was rerun directly. The first determinism run was interrupted and resumed; the final matrix passes 24/24. One log-search command used unavailablerg; a capped streaming-Python scan replaced it. - Performance experiments were rejected or superseded: initial transition path +36.11% SW/+7.18% FI, planar query +14.89%/+2.28%, 3x3 coverage +6.06%/+1.65%, 5-point coverage +4.04%/+2.03%, single-transition fast path +3.52%/+1.39%; cache trial was slower (2.188 s vs 2.171 s). The retained hash-prefix version is the five-pair result above. Logs and exports are under
Saved/Linux/l32/.
Orchestrator review (Claude)
- Merged. Captures checked by me: the FI floor (near, tint off) is a smooth rolling surface with no rings or terraces; the SW ceiling and far views are smooth. Gradient is restored at width/8 (about 4 m peak-to-peak) with signed-distance density; the ring audit rejects both L30 (rings) and L31 (flat). The memory-pressure kill mid-round was resumed; audits now run capped and tile-streamed.
- Cumulative SW cost vs L24 is roughly +5% after L28–L32 (features: columns, transitions, smooth faces). FI is ≈ +2%.