- Eight-sample X batching of fine density rows, reuse of solved Z intervals in the candidate mask, AVX2 marching-cubes cell classification. LOD0/1 density-grid time -61/-62%; interval/sign stage 140 -> 97 ms; candidate-axis allocation -18 MiB. Shape stage ~413 ms, detail band ~219 ms. - W1/W8 hashes equal across 44 fields and equal to round 8; routes 5642/5642; look and far-survival audits pass; bad-shell control still fails; six fixed captures pixel-identical. Remote-view recapture pending (camera 500,0,0). Verified by me, interleaved (8 workers, cold, BelowNormal 0xFF00, 2,226 tiles, 110.9 MiB payload): 1.012 / 0.927 / 0.926 s vs round 8 1.100 / 1.099 / 1.088 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
9.7 KiB
Round 9 — cold full-view speed below one second
Result
The final candidate averages 0.992 s for the direct cold W8 full-payload run, versus 1.184 s for the local 16612ac executable: 191.5 ms (16.2%) faster. The two new runs were 1.001 s and 0.983 s; the mean is under one second, with one sample 1 ms over. Both old runs generated all 2,226 tiles and the complete 110.90 MiB payload with zero mesh-cache hits.
This comparison uses the required arguments and old/new interleave:
--stream-benchmark --shape-world --force-generate --workers=8 --clip-radius=3
| Order | Executable | Process wall | Full clipmap | Shape stage | Cache hits |
|---|---|---|---|---|---|
| old A | VoxelForgeRound9Base16612ac.exe |
1.217 s | 0.582 s | 457.1 ms | 0 / 2,226 |
| new A | VoxelForgeRound9Final.exe |
1.001 s | 0.492 s | 410.9 ms | 0 / 2,226 |
| new B | VoxelForgeRound9Final.exe |
0.983 s | 0.488 s | 414.4 ms | 0 / 2,226 |
| old B | VoxelForgeRound9Base16612ac.exe |
1.150 s | 0.577 s | 477.5 ms | 0 / 2,226 |
The interleaved means are 1.1835 s old and 0.9920 s new. The owner’s earlier 16612ac measurement was 1.092/1.098 s; that absolute did not reproduce in this local run, while the final candidate still averaged below one second. Raw logs: old A, new A, new B, old B.
A separate third cold run of the new executable measured 1.005 s. Its shape stage took 397.7 ms (42.6 ms local shapes, 95.9 ms intervals/signs, 206.4 ms surface band, and 43.8 ms far parents), and full clipmap took 469 ms. The remaining 138 ms is the derived startup/setup/finalization remainder for that run. The separate repeat is here, with its BelowNormal/affinity wrapper record here. Across the three new-only samples, the mean is 0.996 s; the required old/new paired comparison above remains the primary head-to-head result.
All builds used /MP8; benchmark, audit, and capture children ran BelowNormal on affinity 0xFF00. The final build is round9_final_build_packed_x8.log. It completed with the existing C4838 conversion warnings and vswhere.exe setup diagnostic. The build script applies /arch:AVX2 /fp:precise; this remains the canonical path without runtime dispatch or FMA contraction.
What changed
- The existing AVX2 eight-candidate path evaluates effective rock distances and primitive shapes along Z. Retained per-worker interval scratch and 16-line scheduling reduce the packed sign work.
- The mesher classifies eight contiguous X cells at once with AVX2 compares and movemasks. It calculates edge interpolation values only for surface cells.
- The packed interval pass now fills the Z candidate mask while it solves each Z line. Candidate-band construction no longer solves those same primitive/line intersections a second time. The completed Z mask moves directly into
CandidateWords; retained candidate-axis allocation drops from 55.06 MiB to 36.71 MiB. - The dominant new gain is an eight-sample packed-density row path for fine tiles. It shares X/Y/Z lattice indexing across adjacent X samples and reads the standalone shape-world SoA arrays directly. It falls back to the scalar path for out-of-bounds samples, edit brushes, forced-air samples, shared grids, and pre-edit captures. Results remain bit-identical.
The paired profiles show the interval/sign stage falling from about 140.1 ms on the 16612ac executable to 96.7 ms in the final direct runs. The final detail-band wall is about 218.9 ms, and far-parent construction is about 48.0 ms. The shape-stage mean is 412.6 ms, down from 467.3 ms in these same direct runs. Full clipmap wall falls from 579.5 ms to 490 ms.
The detailed final profile records 9.389 million distance evaluations and 3.527 million detail-noise evaluations. Sampled worker costs are 65.2 ns per distance evaluation and 338.2 ns per detail evaluation; the detail band takes 217.7 ms wall time. Its sampled subcosts are 83.9 ns for relief, 26.9 ns for layer lookup, and 99.8 ns for owner roughness. The sampling rates are 1/256 for distance and 1/64 for detail. The full profile is here.
| Tile profile | Before X batching | Final X batching | Change |
|---|---|---|---|
| LOD0 density grid, 512 tiles | 268.6 ms | 100.9 ms | -62.4% |
| LOD1 density grid, 448 tiles | 234.5 ms | 91.4 ms | -61.0% |
| LOD8 density grid, 306 tiles | 122.3 ms | 120.7 ms | no material change |
The LOD0/1 profile logs are final LOD0 and final LOD1. The LOD8 profile confirms the remaining far density cost. Overall LOD8 tile work is about 396.5 ms in the isolated serialized tile benchmark; its stream worker sum is parallelized across the full run.
After subtracting shape-stage and full-clipmap wall from direct process wall, the remaining startup/setup/finalization portion is about 89 ms on average. This is a derived remainder, not a separately instrumented timer.
Experiments kept and rejected
| Experiment | Evidence | Decision |
|---|---|---|
| Reuse packed Z intervals for candidate bands | Axis work falls from about 69–76 ms to 51 ms wall; interval/sign stage falls about 20 ms; W8 hashes stay exact. Candidate-axis storage falls 18.35 MiB. | Keep |
| Batch fine packed density rows across X | LOD0/1 density-grid work falls by 62%/61%; full clipmap falls from 543 ms to about 486 ms against the interval-only candidate; W8 hashes stay exact. | Keep |
| Batch far Z density samples | LOD8 isolated density-grid profile falls 121.9→89.1 ms and worker sum 0.399→0.367 s, but two full-view AB pairs show no end-to-end gain (1.0805 s old mean vs 1.0875 s new; full clipmap 0.538→0.555 s). | Reject |
| Precompute interpolated value-noise planes | No-plane detail wall averages 215.2 ms versus 222.2 ms with plane precompute; full clipmap averages 547.5 versus 555 ms. Hashes matched, timing regressed. | Reject |
| Batch surface-relief noise | W1/W8 hashes matched, but detail-band wall rose by roughly 10–30 ms in paired trials. | Reject |
| Direct per-sample shape-world call hoist | LOD0 density profile rose 257.7→301.2 ms and LOD1 225.9→263.6 ms. | Reject |
| Per-tile sign grid | LOD0/1 density work rose about 74 ms. | Reject |
| Edge cache | Altered deduplicated mesh vertex counts and did not materially improve tile time. | Reject |
Hashes and audits
The final W1 and W8 runs match all 44 density, mesh, payload, and topology fields. W8 also matches all 44 fields from Round 8, including the full payload. Comparison output: hash comparison; raw runs: W1, W8.
The shape audit passes all look checks and 5,642/5,642 route samples. It reports zero thin sheets, GridStair relative join step 0.090 against the 0.400 threshold, and passing strata/cave surface-band audits: shape audit.
The far-survival audit passes 7,200/7,200 boundary surfaces and all 10,976 connectors across 178,351 sampled sections. Missing surfaces, holes, and unsampled connectors are all zero; it records 47,858 extra ray hits: far-survival audit.
The bad-shell control fails as required: it removes 512 shell triangles and detects 16 missing surfaces and 16 holes, exiting 14: control output, runner.
Captures
The six fixed views from the final executable are pixel-identical to Round 8. The comparison confirms zero changed pixels in all six. Images are in this folder: chamber, tunnel, passage, far, passage floor close-up, and tunnel bend.
The first remote capture attempt used an assumed camera position of (500, -123.25, -19.85) m and is invalid: it does not match Round 8’s X=500 views. I asked for the original Y/Z coordinates and will replace those four provisional images and update this section when they are provided. The captures do not alter the mesh hashes or the fixed-view result.
Failed builds and runs
- The first AVX2 mesher-classifier build failed with C2676 because
TArray<float>does not support pointer addition. Replacing it withDensityGrid.GetData()fixed the build; the retry succeeded: failed build, retry. - An initial build log redirection used a relative path after
Build.ps1changed the current directory. The redirection failed; rebuilding with an absolute log path succeeded. - One exploratory capture named
VoxelForgeRound8Final.exe, which was not present. The correct executable wasVoxelForgeShapeRound8Final.exe; no child process started from the incorrect name. - A strict capture comparator initially exited 1 on remote image differences. It was adjusted to enforce exact fixed views and report remote pixel deltas separately.
- The first final far-audit invocation omitted
--stream-benchmark, entered the hidden interactive viewer, and returned-1after I stopped that run-owned process. The corrected invocation passed; both logs are retained. - The bad-shell run exits 14 by design, as described above. No process returned
0xC0000142.
No commit, push, or stash was made. All source changes and Round 9 artifacts are in Standalone\.