Files
VoxelForge/Standalone/Research/OwnerShapeWorld/speed_round/REPORT.md
T
Fr0zkaandClaude Opus 5.5 2656d81ac9 standalone: whole view under one second -- 0.955 s cold @8 workers, full payload, world unchanged
- 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
2026-10-05 05:15:19 +02:00

78 KiB
Raw Blame History

Shape world speed round — final half-load verification

Round 9 — packed X batches and interval reuse (2026-10-05)

The final executable averages 0.992 s for the required cold W8 full-payload direct interleave, below the 1-second target. It measured 1.001 / 0.983 s (mean 0.992) versus 1.217 / 1.150 s (mean 1.184) for the local 16612ac executable. A separate new-only cold repeat was 1.005 s; all three new runs average 0.996 s. Every run generated 2,226/2,226 tiles with the full 110.90 MiB payload and zero cache hits. The fixed six captures are pixel-identical; the four X=500 remote views are being recaptured after confirming their original Y/Z camera position.

The largest gain comes from batching eight fine packed-density samples along X: the LOD0/1 density-grid profiles fall 62%/61%. Reusing Z-axis intervals in the candidate mask cuts interval/sign work by about 20 ms and removes 18.35 MiB of retained candidate-axis allocation. The final W1/W8 matrix matches all 44 fields and W8 matches Round 8. Shape/look and far-survival audits pass; the injected bad-shell control still fails as intended. Full measurements, rejected probes, logs, and the pending remote-camera note are in Round 9 report.

Round 8 — canonical AVX2 shape arithmetic (2026-10-05)

The AVX2 path plus factored corner hashing cuts the direct cold W8 process mean from 1.456 s to 1.149 s (21.1%). It misses the requested under-1-second target by 149 ms at the mean; the faster new run was 1.146 s. The full 110.90 MiB payload remains enabled, all 2,226 requested tiles were generated, and every direct run recorded zero mesh-cache hits. The field passes the shape and far-survival audits, the 5,642 route samples remain open, all 44 W1/W8 hash fields match, and the six fixed captures are pixel-identical to Round 7.

Arithmetic and profile

VoxelNoise::Perlin3D_x8 evaluates eight independent samples with AVX2 integer hashing and gradient/interpolation arithmetic. FractalPair packs the main and fine octave coordinates into the same batch and shares each sample across fBM and ridged accumulation. Domain-warp channels also use the 8-lane path. The cave detail line reuses its spatial-bin items across consecutive sorted Z samples, and coarse rock-distance lookup remembers the previous bin per thread. The hash keeps its existing three mix rounds. For each Perlin lattice, the three corner-coordinate products are now computed once; adjacent corner products use wrapping integer adds, preserving all hash outputs while removing repeated vector multiplies. A reduced-round hash probe changed the field and did not improve time, so it was discarded.

This is the standalone harness's canonical path, with no runtime CPU dispatch. The host requires AVX2. Intrinsics issue multiply and add separately; the build uses /fp:precise to prevent contraction. The AVX2 kernel uses no CRT transcendental functions. Build settings also include /arch:AVX2 and /MP8.

W8 profile measure Round 7 scalar path Round 8 final Change
Shape stage 690.9 ms 478.9 ms -30.7%
Surface detail band 448.3 ms 245.1 ms -45.3%
Detail evaluation sample 792.7 ns 328.0 ns -58.6%
Owner roughness sample 572.7 ns 107.2 ns -81.3%
Detail evaluations 3,527,283 3,527,283 same workload

The profile starts at Round 8 before, passes through AVX2, shared noise, and paired octaves, and ends at the current factored-hash profile. The distance sample moved from 128.4 ns to 117.3 ns in the final profile; most of the gain is in owner noise. The hash-factor probe's alternating direct runs averaged 1.196 s for the preceding AVX2 executable and 1.145 s for the factored probe: base A, probe A, base B, probe B.

An isolated W8 LOD8 mesher profile processed 306 tiles / 2.10 M samples. Its tile profile attributes 125.8 ms to density-grid construction within a 403 ms serial tile-benchmark run. This diagnostic exercises the base mesher and does not include the streamer's source-aware repair panels, so it is not a replacement for the full-payload direct timing. It confirms density sampling is material; no separate mesher rewrite was retained this round.

Required cold direct head-to-head

Both executables were launched in fresh processes with --stream-benchmark --shape-world --force-generate --workers=8 --clip-radius=3. The old executable is VoxelForgeShapeSurvivalSearch.exe; the new one is VoxelForgeShapeRound8Final.exe. The wrapper held BelowNormal priority and affinity 0xFF00. Each run generated the full payload with cache_hits=0 and payload_alloc=110.90MiB.

Pair Executable Process wall Shape stage Full clipmap Cache hits
A Round 7 1.453 s 698.2 ms 648 ms 0 / 2,226
A Round 8 1.146 s 453.5 ms 585 ms 0 / 2,226
B Round 7 1.459 s 698.2 ms 638 ms 0 / 2,226
B Round 8 1.152 s 472.7 ms 574 ms 0 / 2,226

Logs: old A, new A, old B, new B. The new mean is 1.149 s versus 1.456 s old. The matching shape-only profiles with attribution are separate runs and are not included in these wall times.

Determinism and audits

The new executable's --stream-hash run at W1 and W8 matched density, mesh, payload, and topology for full detail, whole view, and each LOD0–8: 44/44 fields pass. The comparison output also confirms all 44 final fields equal the preceding AVX2 executable; it is generated by compare_hash_runs.py. Full-detail hashes are density 0x67609e3f9aa3a0b0, mesh 0xd98eb46b92a59917, payload 0x8f148240ca4a4a8f, topology 0x954e28f6fd44967f. Whole-view hashes are density 0xa78b0985b1b8fefd, mesh 0xb44e0c998152d1f5, payload 0x1eb6b48127fd8e26, topology 0x8b2557006b5ce3c8. Raw runs: W1 and W8.

The shape audit passes walkability (5,642/5,642), room-floor join, floor slope and profile, tunnel radius, flat surface, grid stair, thin sheet, surface-band family, flat patch, and detail-scale checks. The far-survival audit passes all 7,200 boundary surfaces and 10,976 connectors across 178,351 connector sections: zero missing, holes, or unsampled connectors. The audit also records 47,858 extra mesh ray hits. The injected bad-shell control removed 512 triangles, detected 16 missing surfaces and 16 holes, and exited 14 as expected.

Captures

All six fixed captures compare pixel-identically with Round 7. The four X=500 m remote views have only small pixel differences. The comparison log compares all ten images; the images are in round8_final.

View Changed pixels Mean channel delta Max channel delta
Fixed chamber / tunnel / passage / far / floor close-up / tunnel bend 0 / 1,024,000 each 0 0
Remote yaw 0 0 / 1,024,000 0.000000 0
Remote yaw 90 1 / 1,024,000 0.000000 1
Remote yaw 180 0 / 1,024,000 0.000000 0
Remote yaw 270 0 / 1,024,000 0.000000 0

Failed and discarded attempts

  • The first AVX2 build invocation returned shell exit 1 because its relative Tee-Object destination was resolved after Build.ps1 changed directories. The compiler had already produced the executable. Retrying with an absolute log path succeeded: build log. The hash-factor probe build succeeded: probe build, followed by the final /MP8 build: final build log. Builds emit existing C4838 narrowing warnings and a vswhere.exe-not-recognized diagnostic; neither stops compilation. No process reported 0xC0000142.
  • The first chamber capture used an absolute output path containing spaces; argument splitting made the executable treat the remainder as its owner-data path, and that run exited 2. Using a Standalone-relative capture path succeeded: failed invocation stderr, retry. The other nine captures succeeded on their first invocation.
  • The reduced-round hash experiment built and ran, but changed candidate counts/field output without a timing gain; its source was reverted. Evidence: probe build, profile.
  • A far-ray prune probe completed but did not improve direct time and was reverted: build, direct probe.
  • The bad-shell control is the intentional failing audit described above (exit 14). No other Round 8 benchmark, audit, or capture run failed.

All build and executable runs were constrained to BelowNormal priority and affinity 0xFF00; builds used /MP8. No viewer that this work did not start was closed. Changes and artifacts are confined to Standalone\; no commit, push, or stash was made.

Round 7 — sparse far repairs and single shape compile (2026-10-05)

Round 7 cut the LOD8 survival build from 276.74 MiB to 110.90 MiB of full mesh-payload allocation, a 59.9% reduction from Round 6. The final CPU follow-up keeps that payload and trims about 0.28 seconds from summed worker time and 0.04 seconds from stream wall. The result remains 18.29 MiB above the no-shell 92.61 MiB baseline, and the process-wall target below 1.3 seconds was not reached.

What changed and what it costs

The large Round 6 payload came from forced air samples along every far connector plus explicit repairs. Removing those far air samples cut the remaining allocation sharply. The repair follows the source at the same 128-voxel axial stations used by the audit, compares each source-visible radial wall with the tile mesh, and emits a panel only when that tile misses the wall beyond audit tolerance. Its four-panel cross-section is rotated so audit rays pass through panel interiors. A 2048-voxel spatial-bin index narrows connector candidates. The final CPU trim limits exact source-radius searches to the audit-relevant radius band and skips cross-section radii unused by missing panels; its geometry hashes are unchanged.

The payload drop from the no-shell reference is concentrated at LOD8:

Level No-shell payload Round 7 payload Added
LOD6 3.34 MiB 3.41 MiB 0.07 MiB
LOD7 5.48 MiB 6.28 MiB 0.80 MiB
LOD8 13.59 MiB 31.01 MiB 17.42 MiB
Whole view 92.61 MiB 110.90 MiB 18.29 MiB

The final view-output allocation is 56.13 MiB versus 45.40 MiB without shells. For context, the Round 6 build was 276.74 MiB allocated and 150.35 MiB of viewer output. The remaining cost is mostly the missing connector walls in LOD8. Connector repair skips radial directions whose sampled mesh hit is already within tolerance; the final audit records 47,858 additional ray intersections across the mesh, while reporting no missing or unsampled connector walls.

The no-shell probe has 155,576 LOD8 vertices and 843,312 indices; the final LOD8 mesh has 406,992 vertices and 1,893,900 indices. The repair adds 251,416 vertices and 1,050,588 indices, equivalent to 175,098 two-triangle panels. This is where the remaining 17.42 MiB LOD8 increase comes from. Two coarsening probes passed the far audit but produced the same payload and counts: tile-range sampling and whole-run rings. A tolerance-band traversal probe also passed; its cold direct run showed no stream-time gain. Those no-gain variants were reverted. The final exact-radius search optimization is in its build.

The final /MP8 build is here. The final default far audit is here; it reports 3 strata boundaries, 7,200 boundary surfaces, 10,976 connectors, 178,351 connector sections, zero missing surfaces, zero holes, and zero unsampled connectors. The injected bad-shell control removes 512 shell triangles and reports 16 missing surfaces and 16 holes, exiting 14 as expected: control log. The look audit passes walkability, room floors, floor slopes and profiles, tunnel radius, flat surfaces, grid stairs, thin sheets, both surface-band families, flat patches, and detail scale. Route samples remain 5,642/5,642.

Cold W8 timing and pipeline

All four runs used fresh processes, --force-generate, full payload, BelowNormal priority, and affinity 0xFF00. No mesh-cache hits were used.

Path Run A process wall Run B process wall Mean Other milestones
Direct 1.581 s 1.560 s 1.571 s Shape 0.692 / 0.698 s; stream 0.647 / 0.650 s; full detail 0.221 / 0.226 s
Pipeline 1.538 s 1.531 s 1.535 s Neighborhood 0.738 / 0.729 s; full detail 0.934 / 0.926 s; whole view 1.350 / 1.344 s

The pipeline builds the full shape world once. It produces the 27/27 neighborhood in about 0.73 seconds, then reaches 960/960 full-detail tiles and 2,226/2,226 whole-view tiles. Direct shape-plus-stream whole-view time is about 1.34 seconds; pipeline whole-view time is 1.344–1.350 seconds, within measurement noise. The pipeline process-wall mean is 36 ms below direct, while both paths still miss the under-1.3-second process target by 0.24–0.27 seconds. Direct logs: A, B. Pipeline logs: A, B.

At W1 and W8, direct full-detail and every LOD hash match; direct and pipeline full-detail/whole-view hashes also match. The 60-field comparison passes. Full-detail hashes are density 0x67609e3f9aa3a0b0, mesh 0xd98eb46b92a59917, payload 0x8f148240ca4a4a8f, topology 0x954e28f6fd44967f. Whole-view hashes are density 0xa78b0985b1b8fefd, mesh 0xb44e0c998152d1f5, payload 0x1eb6b48127fd8e26, topology 0x8b2557006b5ce3c8. The direct W1/W8 runs are W1 and W8; pipeline runs are W1 and W8. Both pipeline runs report cache_hits=0 full_payload=1.

Captures

The six fixed views compare pixel-identically against Round 6. The remote captures are visually close, with these measured differences from the Round 6 LOD8 images:

View Changed pixels Mean channel delta Max channel delta
Fixed chamber 0 / 1,024,000 0.000000 0
Fixed tunnel 0 / 1,024,000 0.000000 0
Fixed passage 0 / 1,024,000 0.000000 0
Fixed far 0 / 1,024,000 0.000000 0
Passage floor close-up 0 / 1,024,000 0.000000 0
Tunnel bend 0 / 1,024,000 0.000000 0
Remote X=500 m, yaw 0 5,094 / 1,024,000 0.145049 70
Remote X=500 m, yaw 90 110 / 1,024,000 0.003791 48
Remote X=500 m, yaw 180 29 / 1,024,000 0.000009 1
Remote X=500 m, yaw 270 0 / 1,024,000 0.000000 0

The capture comparison and all ten final capture processes succeeded. Images are in round7_final; Round 6 LOD8 images are the before set in round6_far_survival. The later CPU-only follow-up has identical direct and pipeline density, mesh, payload, and topology hashes, so these captures still represent its exact geometry.

Failed builds and runs

No /MP8 build failed. The tile-range, coarse-ring, tolerance-traversal, and final search builds completed with existing MSVC conversion warnings; there was no 0xC0000142 or out-of-memory failure. The following exploratory connector candidates failed their far audit before the final source-aware panels: centerline radius (17,527 sections / 23,805 rays missing), iterative rings (2 rays just outside tolerance: 22.42 vs 22.4), cardinal search (1 missing ray), single interval (3,102 samples / 4,239 rays), adaptive rings (761 / 1,177), exact sample rings and fine radial (1,739 / 2,113), first single panel (1,989 / 2,007), final candidate (3 rays just outside tolerance), and interval guard (204 LOD8 rays lost at edge-support triangles). The later one-panel far audit also failed with 4,597 samples / 4,664 rays missing. The single-segment adaptive candidate failed with 40 missing visible samples/rays and 40 connector holes. Its rotated-panel replacement passed.

Two exploratory commands omitted --stream-benchmark and opened interactive viewers instead of running audits: far audit invocation was stopped after 216.531 seconds, and bad-shell invocation after 20.932 seconds; both runner exits were -1. These were rerun correctly: default audit passed and bad-shell control exited 14 as expected. The first strict Round 7 capture comparator also exited 1 because it demanded pixel identity for the provisional remote views; the numeric comparison on the final captures is here.

All injected bad-shell controls were expected audit failures with exit 14: acceptance, 128-step, single-panel, rotated-panel, connector-index, no forced air, the prior final control, and the current band-search control.

All benchmark, audit, and capture executables were launched through RunMachine.ps1 at BelowNormal priority with affinity 0xFF00; builds used /MP8. No viewer that this work did not start was closed. No commit, push, or stash was made.

Round 6 — far survival proof and neighborhood-first startup (2026-10-04)

This result supersedes Round 5's LOD6 default. The far-survival audit now passes at LOD6, LOD7, and LOD8, and LOD8 is the least expensive passing level. The standalone viewer also starts the player's neighborhood before compiling the full shape world.

Far-field survival proof and default

FarSurvivalAudit.h compares the source density field with intersections against the triangles actually emitted in each far tile. For each unique top and bottom boundary of the loaded strata, it samples 4×4 interior columns per far tile and checks every source density crossing in the seal band against the emitted mesh. Missing crossings fail the check; an odd number of missing crossings records a hole. For each far connector in view, it samples longitudinal sections at no more than 128-voxel spacing, casts radial rays in four directions, and compares each source-visible connector wall with mesh hits. Every visible section must pass, and each in-view connector must have a passing section.

The bad-setting control removes the emitted stratum-shell triangles around z=32 voxels in one LOD6 tile inside the LOD8 clipmap. The audit then reports 16 missing surfaces and 16 holes and exits with status 14. The final control is here. The injected failure demonstrates that the check detects an actual mesh loss.

Max LOD Far tiles Boundary surfaces checked Missing / holes In-view connectors / sections Connector missing / holes / unsampled Full-payload allocation
6 6,498 38,160 0 / 0 9,752 / 158,240 0 / 0 / 0 415.34 MiB
7 3,042 20,256 0 / 0 10,152 / 164,806 0 / 0 / 0 413.90 MiB
8 2,226 7,200 0 / 0 10,976 / 178,351 0 / 0 / 0 276.74 MiB

The LOD6, LOD7, and LOD8 audit outputs are LOD6, LOD7, and LOD8. The connector counts include sections with no source-visible radial wall at a room join; those sections are recorded separately, while each source-visible wall at every sampled section is checked. The final candidate passes with no missing surfaces, holes, or unsampled connectors.

The strict connector audit exposed why a fixed-radius far tube lost walls: source-visible radii varied well outside its nominal radius. StreamingWorld.h now follows source radial crossings at connector sections aligned with the audit samples and emits the sampled strata patches at LOD7 and LOD8. StandaloneShapeWorld.h retains connector paths and forced air samples in an independent far-shape build. LOD8 therefore passes the feature check and allocates 276.74 MiB versus 413.90 MiB at LOD7 and 415.34 MiB at LOD6. The standalone and JSON defaults are now LOD8 in OwnerWorldLoader.h and owner_world.json.

The six fixed LOD6→LOD8 capture pairs are pixel-identical: chamber → LOD8, tunnel → LOD8, passage → LOD8, far → LOD8, floor close-up → LOD8, and tunnel bend → LOD8. A remote camera at X=500 m was captured at four headings: yaw 0 LOD6/LOD8 / LOD8, yaw 90 / LOD8, yaw 180 / LOD8, and yaw 270 / LOD8. At yaw 0, 180, and 270, 0, 29, and 4 pixels changed respectively; yaw 90 changed 710/1,024,000 pixels (mean absolute channel delta 0.010650, max 60). The strict audit passes at all four coarse levels; the yaw-90 difference is a small far-silhouette change. The capture comparison also confirms the live-pipeline chamber capture is pixel-identical to the saved LOD8 chamber image.

Neighborhood-first shape pipeline

StandaloneViewer.cpp now compiles a separate near ShapeWorld for the 27 LOD0 tiles around the player, starts their mesh and upload work, and launches the full/far ShapeWorld build on a separate thread with its own bins. Once all 27 meshes are uploaded and the full shape is ready, the viewer switches to the full shape, retains the already resident neighborhood tiles, and schedules the remaining view. The full-shape build no longer changes data used by the near build.

The final live W8 cold-start capture reports 2.036 s to the uploaded 3×3×3 neighborhood, 3.059 s to the full-detail area, and 3.959 s to the full view (2,226 tiles). These milestones use process start as their common zero point, including near-region compilation and startup. The capture log is here; the captured live view is here. The runner recorded 0.59 GiB peak working set and 1.06 GiB peak private memory.

The isolated full-payload stream pipeline reports W8 near shape 0.442 s, near mesh 0.047 s, full shape 0.737 s, neighborhood 0.504 s, full detail 1.539 s, and whole view 2.920 s. At W1 the corresponding readiness times are 0.862 s, 4.962 s, and 12.338 s. These interval measurements are in W8 and W1. The first 27 tiles are re-meshed from the completed full shape for parity: W1 and W8 each report 27/27 tiles, 108/108 hash fields, zero mismatches. Both report full_payload=1, cache hits 0, and the same 960 full-detail / 2,226 whole-view tile counts.

On the same clock-corrected executable, the direct non-pipelined shape-world runs at W1 and W8 match the pipeline hashes. The 60-field comparison passes across direct W1/W8 full detail and LOD0–8, plus direct-vs-pipeline full-detail and whole-view aggregates. Full-detail hashes are density 0x67609e3f9aa3a0b0, mesh 0xd98eb46b92a59917, payload 0x8f148240ca4a4a8f, topology 0x954e28f6fd44967f. Whole-view hashes are density 0xfb5dd9640642e9d0, mesh 0xaff324f3fa7374b0, payload 0x55f9995a91861f83, topology 0x20e1c051dfcf2b23. The direct W1 and W8 runs both report 5,642/5,642 route samples and zero cache hits. The W8 baseline retains full UV, color, and material-group payloads (payload_alloc=276.74 MiB, viewer_output=150.35 MiB).

The current W8 look audit is green for walkability, room floors, floor slope/profile, tunnel radius, flat surfaces, grid stairs, thin sheets, strata/cave surface bands, flat patches, and detail scale: audit log. Both route and coherent-detail checks pass.

Failed builds and runs in this round

Five intermediate builds failed and each was corrected before the final build: far_connector_shell_build.log (C2039 ElementType; retry), far_survival_audit_match_build.log (C2065 MeshEnd; retry), far_survival_connector_section_build.log (C2248 private Finalize; retry), far_survival_debug_build.log (C3490 mutation of DebugColumns in a const method; retry), and pipeline_build.log (C2676 FIntVector -=; retry). The final /MP8 builds completed successfully: live pipeline and cold-clock update.

Exploratory far-shell/connector runs that failed before the final source-following rings and aligned stations were: far_audit_match_nearest_lod7_w8, far_audit_section_diag_lod7_w8, far_connector_clipped_shell_lod7_w8, far_explicit_survival_lod7_w8, far_opposing_pair_lod7_w8, far_shell_half_resolution_lod7_w8, far_survival_cell_force_lod7_w8, far_survival_explicit_connectors_lod7_w8, far_survival_height_force_lod7_w8, far_survival_lod6_debug_w8, far_survival_lod6_final_w8, far_survival_lod6_forced_w8, far_survival_lod6_match_w8, far_survival_lod6_tolerance_w8, far_survival_lod6_w8, far_survival_section_lod7_w8, and far_survival_section_lod8_w8. The stricter connector-section candidates also failed at strict LOD6, diagnostic LOD6, local-band LOD6, source-ring LOD6, and dense LOD6. These failures exposed missing source-radius walls or shell intersections and were used to correct the emitted far geometry.

The deliberately bad-shell controls far_survival_section_bad_shell_w8, round6_survival_lod8_w8_bad_shell, and round6_final_bad_shell_lod8_w8 are expected audit failures; the last one is the retained falsifiability result above. An early remote capture used a path rooted with an extra Standalone/ and repeatedly failed to save; the failed invocation was rerun successfully with the working-directory-relative path in the retry. One W1 launch selected stale VoxelForgeRound5Default6.exe, entered the interactive viewer instead of the benchmark, and was stopped after about 100.5 s. A separate baseline run omitted --shape-world --force-generate, completed against the legacy workload, and was excluded from all results: log (StreamFullClipmap 65.994 s, cache hits 0).

All successful workloads ran BelowNormal with affinity 0xFF00, and builds used /MP8. No process failed with 0xC0000142 or an out-of-memory condition. No viewer not started by this work was closed. No commit, push, or stash was made.

Round 5 — far-field LOD8 trial (2026-10-04)

Result and decision

The coarse far-shell candidate meets the requested under-1.5 s W8 process-wall threshold on two cold, full-payload runs, but I did not promote it: a remote yaw-90 capture changes 28,982 of 1,024,000 pixels versus LOD6 (max channel delta 38), and no per-shell/per-connector coarse-sampling survival proof exists. The source and rebuilt default therefore remain at exported LOD6. The LOD8 experiment is reproducible with --max-clip-level=8; it is not evidence that thin strata, seals, or distant connectors all survive.

Cold full-payload W8 measurements

All runs used --force-generate, 8 workers, full UVs/colors/material groups, no cache, BelowNormal priority and affinity 0xFF00. Process wall includes startup and world setup; collision cooking and GPU upload are outside this standalone measurement.

Max LOD Process wall A/B (mean) Shape stage A/B (mean) Full-detail stream A/B Full clipmap A/B (mean) Tiles Payload allocation Cache hits
6, final exported default 1.809 / 1.664 s (1.737 s) 706 / 696 ms (701 ms) 247 / 226 ms 850 / 861 ms (856 ms) 6,498 235.29 MiB 0
8, candidate 1.406 / 1.289 s (1.348 s) 698 / 703 ms (700 ms) 215 / 212 ms 434 / 431 ms (433 ms) 2,226 92.61 MiB 0

The candidate cuts full clipmap wall by about 49% and reduces LOD6–8 samples from 32.717 M to 3.415 M (about 90%). It retains full payload channels. The full-payload logs are default LOD6 A, B, candidate LOD8 A, and B, with runner records alongside them. LOD6 remains 0.237 s above the process-wall target on this pair; the candidate is 0.152 s below it.

Determinism and audits

The final LOD6 executable, build log, matches all 36 density/mesh/full-payload/oriented-topology fields across W1/W8 for full detail, whole clipmap, and LOD0–6: comparison, W1, W8. The candidate LOD8 W1/W8 comparison matches all 44 fields across full detail, whole clipmap, and LOD0–8: comparison, W1, W8. Both workloads report 5,642/5,642 route samples open and zero cache hits. The W8 shard audit passes for LOD0 (zero isolated-in-view small components); it does not cover coarse far-shell survival.

The final default's W8 shape/look audit is green: route, room-floor, floor-slope, floor-profile, tunnel-radius, flat-surface, grid-stair, thin-sheet, strata/cave surface-band, flat-patch, detail, and spatial-scale checks all pass. See audit output. The LOD8 candidate audit is here; these audits run the detailed shape checks in the near compiled region and are not the missing far-LOD survival check.

Captures and far-field discrepancy

The six requested before/after capture pairs were taken after [InitialClipmapReady]. The LOD6 and candidate LOD8 images compare pixel-identically for chamber, tunnel, passage, far yaw 0, floor close-up, and tunnel bend; the three additional center-camera far directions (yaw 90/180/270) also compare exactly. Pixel comparison. Example: LOD6 chamber / LOD8 chamber; LOD6 far yaw 90 / LOD8 far yaw 90.

I added a remote camera at X=500 m and swept four headings. At yaw 90, the candidate changes 28,982 pixels (86,923 channels; mean absolute channel delta 0.227); the changed region is concentrated in lower far silhouettes. Yaw 180 is identical; yaw 270 changes 143 pixels with max delta 1. Yaw 0's 19 pixels at max delta 1 match same-LOD capture jitter: a repeated LOD6 image differs by the same 19 pixels, and that repeat is identical to LOD8. The LOD7 yaw-90 image is pixel-identical to LOD8, so LOD7 does not resolve this case. See remote sweep comparison, capture variance check, LOD6 yaw 90, LOD8 yaw 90, LOD7 yaw 90, and scaled difference. The mismatch is small in area but real; without a feature-survival proof I am keeping the safe default at LOD6.

Builds and failed invocations

Both the temporary-default-LOD8 candidate and the restored-default-LOD6 executable built successfully with /MP8 or less under the machine cap. The build logs contain the recurring French vswhere.exe diagnostic and six existing C4838 warnings; both builds exited successfully. Two initial W1/W8 hash-launch wrappers failed before starting a child because of malformed PowerShell array syntax; corrected launches both exited 0. An initial comparison parser also counted only one hash per output line (9 fields); the corrected all-match parser compared 36/36 and passed. No workload or build failed with 0xC0000142 or showed an out-of-memory condition. No viewer was closed.

No source diff remains: the exported LOD6 default was restored and rebuilt as VoxelForgeRound5Default6.exe; the LOD8 candidate remains available as VoxelForgeRound5Farfield.exe. No commit, push, or stash was made. The far-field goal is not complete: next work needs an explicit shell/connector survival checker and likely feature-aware refinement or explicit far surfaces before the faster sampling can become the default.

Round 3 update — measured payload path and current result

This update supersedes the earlier headline timings, hash values, and capture references below. The sections that follow retain the previous-round context. With the exported LOD6 limit, the latest cold full-payload W8 pair averaged 1.917 s. The best tested opt-in LOD8 far-shell pair averaged 1.451 s, still 0.451 s above the under-one-second goal. The LOD8 option is --max-clip-level=8; it retains LOD0–5 and distributes the same render distance over LOD6–8. Cache hits were zero in every run.

Exported LOD6 cold W8 run Process wall Shape stage Full-detail stream Full clipmap stream LOD6 complete Cache hits
A 1.915 s 0.874 s 0.216 s 0.870 s 0.869 s 0
B 1.919 s 0.839 s 0.217 s 0.881 s 0.867 s 0
Mean 1.917 s 0.856 s 0.217 s 0.876 s 0.868 s 0

Both runs generated the same full workload: 6,498 clipmap tiles, including 4,770 LOD6 tiles; 32.717 M LOD6 density samples; 1,834,816 LOD6 vertices; 235.49 MiB full-payload allocation. The process wall includes startup and world setup. Collision cooking and GPU upload are outside this standalone measurement. The earlier 1.823 s pair on the same source is in A and B; the latest repeat logs are A and B. The change still reduces the original 2.155 s process-wall mean, but the target remains unmet by about 0.9 s on the latest pair.

Opt-in LOD8 far-shell candidate

Cold W8 run with --max-clip-level=8 Process wall Shape stage Full-detail stream Full clipmap stream LOD8 complete Cache hits
A 1.442 s 0.853 s 0.250 s 0.429 s 0.426 s 0
B 1.459 s 0.854 s 0.223 s 0.426 s 0.423 s 0
Mean 1.451 s 0.854 s 0.237 s 0.428 s 0.425 s 0

This candidate generated 2,226 tiles instead of 6,498: 96 each at LOD6 and LOD7, plus 306 at LOD8. LOD6–8 together used 3.415 M density samples versus 32.717 M for the exported LOD6 shell. Full-payload allocation fell from 235.49 MiB to 92.81 MiB. Full UVs, colors, biome channels, and ceiling/ground groups remained enabled. Against the latest exported-LOD6 pair, process wall improved by 0.466 s and clipmap stream wall by 0.449 s. The process still misses the one-second target.

Payload profile and retained change

Controlled skip runs isolate the payload costs. On the pre-optimization full-payload profile, skipping colors lowered clipmap stream time from 1.119 s to 0.754 s (about 365 ms and 2.93 worker-seconds saved). This is the dominant measured payload cost: the mesher calls GetBiomeMaterialAt for each vertex, and that call resolves the biome field. Skipping UVs alone measured 1.132 s versus 1.119 s for full payload, so UV emission showed no measurable wall-time cost. Skipping material groups measured 0.943 s against a 1.117 s full run (about 174 ms); the path performs per-column ceiling/ground classification and retains the actual two sections in the default output. These are diagnostic ablations only; the final path keeps all channels and groups. The measurements are in full payload, UV skip, color skip, and group skip.

The retained change is in the standalone mesher. It changes only far LOD biome colors at Step >= 64. For each far tile and vertical chunk it evaluates the biome field at the four tile corners. Each vertex takes the nearest corner’s dominant/neighbour palette pair; the border-blend value is bilinearly interpolated when all four corners share that pair. Adjacent tiles use the same shared corner coordinates. The slope channel remains derived from the exact vertex normal, UVs remain exact, and ground/ceiling classification and section ordering are unchanged. This keeps the same payload meaning while reducing repeated far-field biome evaluations. Full clipmap stream time fell from the previous 1.113 s mean to 0.857 s in the earlier clean pair and 0.876 s in the latest repeat; LOD6 completed in 0.853 s and 0.868 s respectively.

The payload hash changes at LOD6 and whole-clipmap level because those far color values are coarsened. Density, geometry, and oriented-topology hashes remain unchanged. A smaller 2×Step grid that did per-vertex map finds added about 68 ms and was rejected.

Exported LOD6 1-worker / 8-worker hash matrix

The rebuilt full-payload executable produced identical hashes at 1 and 8 workers for every output below. Both runs had zero cache hits and all 5,642/5,642 route samples open. The latest exact-binary comparison is W1 versus W8; nine aggregate outputs had zero hash-field mismatches.

Output Density hash Geometry hash Full payload hash Oriented topology hash
Full detail 0xa071e48a996e2828 0x6f270c621d39302f 0x33c7353b2eda16a7 0x1b39c8cc2ffed4b3
Whole clipmap 0x95c3f446cce0eaea 0x5036df929534d3ef 0x8803105199197791 0xb0eec830b29044e1
LOD0 0xc31fc55744c45928 0x7a70def3eb3e11ad 0x5780ec294cd873c5 0xa3126405acc20185
LOD1 0xd74d6563f970d9f9 0xf47463988641b397 0x7740ea61a08d30c7 0xb8a7cace0866efd3
LOD2 0x44f878e3420376a2 0x17de625b9ceda2a9 0x1fe6c3de98251541 0x1c4ab868773fe313
LOD3 0x80713f3f7e379bf9 0xec609008c8248eeb 0x8f9c8b3d627933b4 0x27361f6a30c71959
LOD4 0x726efa9eb9933226 0xdcb8c20437152e74 0xd01d47eeed04fd3a 0x94972f103fa9bcac
LOD5 0x4345a3990bb8b68a 0x8b7d9b5c1a0872a4 0x396b044b5a774097 0x0c5fb1df85d0d38c
LOD6 0xc78f04f08fc84094 0x2eab9309b9493d47 0x110deb41d78b153f 0x4f6059255abed405

The exported-LOD6 captures use the same six fixed cameras as the previous set. Every view is pixel-identical to its reference (1,024,000 pixels, zero changed pixels/channels, maximum channel delta 0): chamber before / after, tunnel before / after, passage before / after, far before / after, floor close-up before / after, and tunnel bend before / after. Shape audits remain green: grid-stair metrics are 0.003 / 0.028 / 0.205 against the 0.400 threshold; detail, join, and tunnel-radius audits pass; the whole-view shard audit reports zero thin sheets and zero isolated small components (four boundary-touching components). Logs: chamber, tunnel, passage, and whole-view shard audit.

LOD6 proof experiments and remaining opportunity

  • A conservative whole-tile uniformity proof classified zero of 4,770 LOD6 tiles as uniform and raised stream wall time to 1.169–1.195 s. Rejected; logs: A, B.
  • An 8-cell sub-block proof omitted 21% of LOD6 density samples (32.717 M to 25.830 M), but its classification overhead canceled the savings: no-hash stream time was effectively unchanged. It preserved geometry and payload hashes across workers, but changed the diagnostic density digest because omitted samples use sentinels. The sparse path was removed; the final density hashes above are from the full sampling path. Logs: build, timing A, timing B, hash W1, and hash W8.
  • A later fast-classifier plus sparse-mask prototype used coarse 1,024-voxel occupancy bins and 8-cell proof blocks. Per-tile diagnostics reported 3,267–3,971 samples versus 6,859 in the full grid, but the aggregate LOD6 counter still reported 32.717 M; the two counters disagreed, so the run did not establish a whole-view sample reduction. Three no-hash stream times were 0.872 s, 0.929 s, and 0.892 s, with no repeatable gain over the retained build. It was removed without a hash or capture acceptance. Logs: first build failure, corrected build, timing, diagnostic run, and sample-count diagnostic.
  • A uniform-block proof at Step=256 on the opt-in LOD8 shell left its 2.099 M density-sample count unchanged and measured 0.429 s stream wall versus 0.426–0.429 s without proof. It was removed. Logs: build, run.
  • A per-vertex color-cache refinement removed map-entry copies and palette-pair checks, but its two W8 clipmap samples (0.866 s and 0.860 s) were within timing variation. It was reverted; logs: A and B.
  • Existing LOD6 tiles had no complete 2x2x2 or 4x4x4 groups, so direct coalescing was rejected; see diagnostic run and build. A separate --max-clip-level=8 override asks the desired-set builder for actual LOD7/8 shells and is measured below. One earlier run used unsupported --stream-max-lod=8; it exited successfully but silently retained the LOD6 filter.
  • Explicit surfaces emitted from known far shapes remain open. The opt-in LOD8 candidate reduces the far sampling cost, but the fixed captures do not prove that every remote thin stratum survives. Its LOD8 shell completes in about 0.425 s; the serial shape stage now dominates at about 0.854 s. Reaching under one second requires another roughly 0.45 s reduction or overlap in that shape stage.

The opt-in LOD8 candidate is in StandaloneViewer.cpp. After the final clean build, its W1/W8 hash runs matched all 11 aggregate outputs with zero mismatches; the full-clipmap hashes are density 0x2809003356cf8162, geometry 0x0123c52b74ad7e7c, payload 0xcdef10ebb6b24321, topology 0x1fa3bf7db18a2c8d. Cache hits were zero and the route audit stayed at 5,642/5,642. Logs: W1, W8.

Round 4 — surface detail band

Profile and cost

The original W8 profile used the unchanged coherent field and sampled one in 256 distance calls and one in 64 detail calls. It completed the shape audit at BelowNormal priority and affinity 0xFF00; routes were 5,642/5,642. Logs: profile output, runner.

Surface-band profile Original W8 path
Candidate visits / EffectiveRockDistance evaluations 12.021 M / 12.021 M
DetailNoiseOnLine evaluations / retained proxies 7.072 M / 7.072 M
Detail evaluations per candidate 0.588
Sign flips 570,546
Band wall / worker sum 609.4 ms / 4.848 s
Worker time per candidate 403 ns
Sampled distance evaluation 134.7 ns; 1.619 worker-s estimated
Sampled detail evaluation 478.2 ns; 3.382 worker-s estimated
Per-worker candidates / active time 1.479–1.516 M / 605.9–606.1 ms

The sampled work estimates total about 5.00 worker-s, slightly above the measured 4.85 worker-s. They are attribution estimates, not an additive timing decomposition. DetailNoiseOnLine is the largest measured cost at about 70% of worker time. It evaluates the three line-cached relief octaves and, on applicable strata, owner cave roughness (FBM/ridged/cellular noise and possible domain warps). The workers finish evenly; candidate-count spread is 2.5%, so thread balance is not the bottleneck.

Retained candidate and measured result

The retained standalone candidate combines a conservative local amplitude envelope with an 8-voxel Z lattice for owner cave roughness. DetailBand stays at 6, because a radius-5 candidate mask fails the grid-stair audit. At each candidate, the local fade uses the macro relief, surface depth, cave/floor influence, and layer roughness bound; the plateau is 1.5 voxels and the edge is clamped to the coherent field’s supremum plus its 0.125-voxel margin. Owner roughness cores are evaluated at globally aligned 8-voxel Z anchors and linearly interpolated. The same deterministic owner path is used at all worker counts. This changes the relief field; the captures and hashes below are for the changed field.

The final W8 sampled profile reports 9.389 M candidates, 9.389 M distance evaluations, 3.527 M detail-noise evaluations, 6.755 M proxies, and 550,169 sign flips. Detail evaluations fell 50.1% from the original profile; 3.228 M candidates skip local detail, or 34.4% of candidate visits. Detail evaluations per candidate fell from 0.588 to 0.376. Per-worker candidates were 1.136–1.210 M and detail evaluations 426–455 K; active times were 510.54–510.74 ms. The output is round4_owner_coarse8_profile_w8.stdout.log, with runner record.

The profile also reports a sampled 875 ns detail call, with nested relief/layer/owner scopes. Those added clocks run inside the sampled call and materially perturb it; the 875 ns value and its nested estimates are not production costs and should not be compared directly with the original 478 ns. The uninstrumented interleaved shape-audit timings give a better speed comparison:

Owner roughness lattice W8 surface-band samples Median
4 voxels 613.166 ms, 559.883 ms 586.525 ms
8 voxels 522.047 ms, 588.253 ms 555.150 ms

The step-8 median is 5.3% below step 4, but spread remains substantial. The separate first step-8 audit was 538.295 ms. The paired logs are step 4 A, step 8 A, step 8 B, and step 4 B. The speed target is not met: the best repeated band measurements remain around 0.50–0.59 s, well above 200 ms.

Full-payload headline

Two cold no-hash W8 runs used full UVs, colors, and material groups, generated all 6,498 clipmap tiles, and recorded zero cache hits. Process wall includes executable startup and world setup; collision cooking and GPU upload are not included.

Cold full-payload run Process wall Shape stage Surface band Full-detail stream Full clipmap stream Cache hits
A 1.929 s 0.800 s 0.505 s 0.249 s 0.995 s 0
B 1.976 s 0.790 s 0.498 s 0.250 s 0.981 s 0
Mean 1.953 s 0.795 s 0.502 s 0.250 s 0.988 s 0

The full clipmap allocated 235.29 MiB (115.57 MiB standalone viewer output); LOD6 contributed 4,770 tiles, 32.717 M density samples, 1,834,820 vertices, and 10,272,252 indices. Logs: run A, run B, with runner A and runner B. Timing varied during this continuation. Against the previous round’s 0.876 s full-clipmap mean, this pair does not show an end-to-end stream improvement; the surface-band audit pair supports only a modest step-8 versus step-4 reduction.

W1/W8 hashes and audits

The exact step-8 executable produced matching hashes for all nine aggregate outputs at W1 and W8. Both cold hash runs had zero cache hits, emitted full payload, and retained 5,642/5,642 open route samples. Hash logs: W1 and W8; runner logs: W1, W8.

Output Density hash Mesh hash Full-payload hash Oriented-topology hash
Full detail 0x67609e3f9aa3a0b0 0xd98eb46b92a59917 0x8f148240ca4a4a8f 0x954e28f6fd44967f
Whole clipmap 0x11e7c03ed9bbd1f9 0xab871e9191389cd7 0xf0d1bd9d26592feb 0xfbfd275ff05c3c8a
LOD0 0xa40e0e5bcee1fa94 0x5376053528f938d0 0x6c545a92724cb2ef 0x9607f9b6a57e0ee0
LOD1 0x94e62d7b0bfa25f9 0xd793622d676d8152 0xb31b4fd33bf48af5 0xe3bb5eb0cd0388ae
LOD2 0xc4445b7ece46d37d 0x413f1af51a6be5aa 0xe374e053b00beb34 0x36abcd1505201234
LOD3 0x9a7a0ce16ae6bc73 0x61c0d5eff17d7b13 0x596c8d6a850468bf 0x86c10f856855083e
LOD4 0xe3d15c9695e1960a 0xfc24a13f616fa647 0x92cb4114a697493d 0x92cf751f3e7fd0aa
LOD5 0xe3130577ec7f5b23 0x5040b88204df27df 0x98c9278497e126fc 0x61986faf2cd91ba5
LOD6 0xf5342998545c37e7 0x7c6436bc51bdba44 0xb7f44b30f7fb0797 0x202cee15737c1705

The W8 shape audit passed RoomFloorJoin, FloorSlopeJoin, TunnelRadius, FlatSurface, GridStair, ThinSheet, SurfaceBandFamily, FlatPatch, and DetailAudit. GridStair relative_join_step=0.090 is below the 0.400 limit; there are zero isolated thin sheets, cave detail standard deviation is 0.8737 voxels, largest flat patch is 440 samples, and the detail audit reports supremum 4 voxels, band 6, adjacent correlation 0.9910. See step-8 shape audit. The whole-view shard audit in the W8 hash run found zero thin sheets and zero isolated small components (three boundary-touching small components).

Six fixed captures

These six images were captured from the exact step-8 W8 executable. Every capture process exited 0. The before images are the preceding full-payload references; the field change produces small average pixel deltas but affects many shaded pixels, so these are not pixel-identical claims. The numeric comparison is round4_step8_capture_pixel_compare.stdout.log, using compare_capture_pair.py.

Fixed view and camera (metres; yaw/pitch) Before Step-8 capture Changed pixels Mean channel delta Max channel delta
Chamber (-11.75,-123.25,-19.85; 0/0) before after 903,112 / 1,024,000 1.856 128
Tunnel (-11.75,-123.25,-19.85; 90/0) before after 910,352 / 1,024,000 1.920 129
Passage (-39.19,6.27,-28.51; 63/0) before after 804,901 / 1,024,000 5.364 135
Far (-11.61244,-118.2212,-19.8452; 0/0) before after 895,399 / 1,024,000 1.992 131
Passage floor close-up (-39.19,6.27,-25.51; 63/-25) before after 902,403 / 1,024,000 1.699 95
Tunnel bend (-198.97,-99.57,-45.58; 33.59/23.17) before after 942,860 / 1,024,000 1.777 55

Capture runner records: chamber, tunnel, passage, far, floor close-up, and tunnel bend.

Rejected experiments and limits

Experiment Result Evidence
Candidate mask radius 5, with global detail support GridStair audit failed, exit 7. build, audit, runner
Radius 5 with local bound and 1.5-voxel plateau GridStair audit failed, exit 7. build, audit, runner; the later step-4 variant also failed in this audit with runner
Exact XY plane-interpolation cache First implementation changed flips from 570,546 to 582,493. The corrected version restored the flip count, but paired timings had no stable gain; removed. first audit, corrected audit, A, B
Three-at-once Perlin domain-warp helper Audit flips matched; paired W8 timings were not faster, so scalar calls were restored. audit, A, B
Z-to-layer direct map Hashes/audits matched, but paired W8 timings were no faster and tended slower; removed. audit, A, B
Owner roughness interpolation at Z step 2 Audits passed but paired W8 median was slower than local-bound baseline; step 4 then measured better and step 8 is retained. profile, A, B

The step-4 to original-path A/B was too noisy to support a speedup claim: original band runs were 633 and 1,511 ms; step-4 candidate runs were 1,276 and 906 ms. All four processes exited 0, but they show no stable old-versus-new gain. AVX2 batching of the three value-noise octaves was not implemented; the narrower Perlin helper did not help. Far-mesh overlap was not tested because it can hide time in the total stream but cannot reduce the measured pre-mesh surface-band wall, and the prior overlap mixed fine bins with far work. The --max-clip-level=8 all-strata shell proof was also not implemented: fixed captures and the LOD0 shard audit do not establish survival of every remote thin stratum, and a trustworthy proof needs an exhaustive far-shell stratum walk. LOD6 remains the default.

Builds for the final candidate and step-8 trial succeeded with /MP8; logs: step-4 candidate and step-8 candidate. Both retain the existing French vswhere.exe setup diagnostic and C4838 narrowing warnings from VoxelStrateManager.cpp. The initial continuation profiler wrapper failed with exit 2 after a PowerShell console-title pipe error. Shell starts then returned 0xC0000142; the machine owner identified memory pressure from a game process using about 13 GB. That prototype was removed. During the resumed work no shell-start failure recurred and no build failed. The only nonzero workload exits in this round were the three radius-5 audit runs listed above (all exit 7 on GridStair). No external viewer was closed. No commit, push, or stash was made.

Previous-round result (superseded above)

The whole-view target remains unmet. The cold, uncached, full-payload view generated all 6,498 tiles through LOD6 in 2.135 s and 2.174 s at 8 workers. The mean process-start-to-ready time is 2.155 s. Shape compilation plus full-payload meshing averaged 1.945 s, so the generation path is about 0.945 s over the one-second mark; the process-start headline is 1.155 s over. Hashing was disabled for those timing runs. Collision cooking and the plugin’s GPU upload are not included.

The final source and measurements are in StandaloneShapeWorld.h, StreamingWorld.h, StandaloneViewer.cpp, Build.ps1, and this report. The six current captures are linked below.

Machine rule and headline timings

All builds and benchmark processes in this continuation ran at BelowNormal priority with affinity 0xFF00. Builds use /MP8. The final headline uses 8 workers, full UV/color/group payload, no mesh cache, and two no-hash cold runs. No current 16-worker timing was run after the reset.

Cold whole-view run Process wall Shape stage Full clipmap stream Shape + stream Cache hits
A, 8 workers 2.174 s 0.828 s 1.116 s 1.944 s 0
B, 8 workers 2.135 s 0.836 s 1.110 s 1.946 s 0
Mean 2.155 s 0.832 s 1.113 s 1.945 s 0

The process runner includes executable start and world setup. The stream stage holds the 8-worker pool at 98.9–99.4% busy; LOD6 is the long pole. The full payload allocates 235.49 MiB across the view; the standalone viewer’s geometry copy is 115.67 MiB. The 27-tile LOD0 player neighborhood is CPU-mesh-ready 23 ms after streaming starts. Collision readiness remains unmeasured.

Stage comparison and per-LOD profile

The first column is the earlier speed-round W8 baseline from the stale report. That run used the former full-machine policy and the older viewer payload. The current column uses the restored half-load policy and emits all mesh arrays. These values show where the work moved, but are not an apples-to-apples speedup claim.

Whole-view stage Earlier W8 baseline Current W8 mean Current run range
Local shapes and line bins 57.6 ms 53.8 ms 53.773–53.785 ms
Rock intervals, packed signs, candidate axes and mask merge 132.6 ms 138.3 ms 138.111–138.506 ms
Surface detail band 539.0 ms 589.8 ms 589.734–589.833 ms
Far-parent shapes and spatial bins 194.7 ms 41.9 ms 38.438–45.407 ms
Shape build 932.3 ms 831.7 ms 827.765–835.705 ms
All-LOD full-payload mesh generation 1,064 ms 1,113 ms 1,110–1,116 ms
Shape build + mesh generation 1.996 s 1.945 s 1.944–1.946 s

Per-LOD completion is cumulative from stream start. Each tile count and allocation figure is from the full-payload run.

LOD Tiles Density samples Complete Full payload allocation Viewer geometry copy
0 512 21.952 M 0.137 s 33.60 MiB 16.30 MiB
1 448 19.208 M 0.214 s 20.37 MiB 10.07 MiB
2 320 2.195 M 0.231 s 6.04 MiB 2.96 MiB
3 208 1.427 M 0.244 s 4.23 MiB 2.09 MiB
4 144 0.988 M 0.251 s 2.99 MiB 1.49 MiB
5 96 0.658 M 0.258 s 3.17 MiB 1.57 MiB
6 4,770 32.717 M 1.109 s 165.09 MiB 81.18 MiB

LOD6 emits 1,834,816 vertices and 10,272,252 indices. It accounts for 32.717 million density samples and most of the stream time. The detailed timings are in run A and run B; their process records are A and B.

Required mesh payload and skip verification

I inspected the actual plugin source read-only. FVoxelMeshData contains one UV and one FColor per vertex, including dominant/neighbor biome palette, slope, and border blend channels. BuildTileStreamSet enables TexCoords, Colors, and PolyGroups and copies those values into the game stream. It assigns group 0 to ground and group 1 to sky-cap ceiling; the ceiling uses material slot 1 and does not cast shadows. The mesher’s UV/color emission and cap ordering show why the viewer-only skips cannot be used for game output.

The current default is full payload. In the standalone copy, UV storage is FVector2f, matching the float UV sent to the game stream; this halves the UV staging width from FVector2D and saves about 20.6 MB over 2.58 million vertices. No stable speed gain appeared. FColor is already four-byte packed. The dense per-tile ceiling-column cache preserved hashes but did not improve stream time (1.099 s versus 1.098 s), so it was reverted. The final source retains the original per-column memo and emits ceiling/ground groups. I did not derive UVs or biome colors in a new shader: the game material path currently consumes TexCoord0 and the packed vertex-color channels, and plugin material/source changes were read-only in this task.

The three diagnostic skip variants were independently hash-checked at W8 over full detail, whole clipmap, and LOD0–6. Density hashes and a canonical oriented-triangle topology hash match full output in all nine outputs. The topology digest uses vertex position/normal identities, so it is insensitive to vertex IDs and triangle ordering.

Diagnostic mode Density equal Serialized mesh hash equal Oriented topology equal Full payload hash equal
Skip UV and colors 9/9 9/9 9/9 0/9
Skip material groups 9/9 6/9 9/9 6/9
Skip both 9/9 6/9 9/9 0/9

The group skip reorders index output in three results; the geometric triangles and winding still match. The payload hash changes when UV/color arrays are omitted. These are diagnostic results only: dropping either data path changes the game’s stream contract. Combined skips took 1.533 s and 1.536 s process wall in no-hash runs, about 0.620 s below the full-payload mean, but this is not a valid game-generation result. Hash logs: UV/colors, groups, and both.

Far-bin reserve A/B

The final far-bin reserve is 24 buckets per primitive; the axis-bin path retains 96. I rebuilt the same source with the old 2× far-bin estimate, then restored and rebuilt the final 24× source. All nine full-payload outputs matched exactly across density, mesh, payload, and topology hashes between the two reserve settings. The final 1-worker and 8-worker matrix also matches exactly.

Across two no-hash samples, the 2× build spent about 47.9 ms building far spatial bins; the 24× build averaged about 41.9 ms. Full stream time was effectively unchanged (1.1135 s versus 1.113 s), within run variation. I keep the capacity hint as a small build-stage improvement, not a whole-view speed claim. The old-estimate build and runs are logged in build, hash, timing A, and timing B.

Previous-round determinism matrix (superseded above)

The final executable was rebuilt after restoring the 24× reserve. The 1-worker and 8-worker cold hash runs had zero cache hits and all 5,642/5,642 route samples open. Each of the nine output hashes below matched exactly at both worker counts, including the full payload hash.

Output Density hash Geometry mesh hash Full payload hash Oriented topology hash
Full detail 0xa071e48a996e2828 0x6f270c621d39302f 0x33c7353b2eda16a7 0x1b39c8cc2ffed4b3
Whole clipmap 0x95c3f446cce0eaea 0x5036df929534d3ef 0xb9ed5e975705753b 0xb0eec830b29044e1
LOD0 0xc31fc55744c45928 0x7a70def3eb3e11ad 0x5780ec294cd873c5 0xa3126405acc20185
LOD1 0xd74d6563f970d9f9 0xf47463988641b397 0x7740ea61a08d30c7 0xb8a7cace0866efd3
LOD2 0x44f878e3420376a2 0x17de625b9ceda2a9 0x1fe6c3de98251541 0x1c4ab868773fe313
LOD3 0x80713f3f7e379bf9 0xec609008c8248eeb 0x8f9c8b3d627933b4 0x27361f6a30c71959
LOD4 0x726efa9eb9933226 0xdcb8c20437152e74 0xd01d47eeed04fd3a 0x94972f103fa9bcac
LOD5 0x4345a3990bb8b68a 0x8b7d9b5c1a0872a4 0x396b044b5a774097 0x0c5fb1df85d0d38c
LOD6 0xc78f04f08fc84094 0x2eab9309b9493d47 0xa93aedb363c18aa5 0x4f6059255abed405

These checks establish repeatability on this AVX2 host across 1 and 8 workers. Cross-machine identity was not tested.

What helped and what was rejected

Retained work from the measured speed round:

  • Parallel candidate-mask merging reduced the interval/sign stage by about 14 ms in the predecessor’s 16-worker profile while preserving hashes.
  • A line-local value-noise cache reuses relief noise corners along Z; its 16-worker detail-band sample fell from about 375 ms to 298 ms with exact hashes.
  • A lattice-specific mesher entry point removed repeated coordinate rounding. The predecessor’s 16-worker full-detail stream moved from about 183 ms to 129–141 ms in hash runs.
  • Fusing repeated rock-distance evaluation preserved hashes and lowered one 16-worker hash-run stream sample from 698 ms to 624 ms.
  • Direct far capsules replaced 181,836 distant connector primitives with 16,491 while keeping all routes open and hashes stable across worker counts. They cut far-parent construction by roughly 75 ms in the predecessor’s profile.
  • The compact inline/spill bin list reduced far-bin construction while keeping primitive IDs in ascending query order. A flat open-addressed table and an earlier larger inline layout were rejected because total streaming slowed.
  • The per-worker vertex-map reserve remains a small allocation hint: a 32-tile LOD6 sample moved from 33.513 ms to 33.145 ms, with no stable whole-view gain.
  • The current 24× far-bin capacity hint saves about 6 ms in the measured far-bin stage against 2×, with exact hashes and no measurable full-stream change.

Rejected or not tested:

  • Skipping UV/colors and skipping material groups improved the standalone diagnostic viewer only. They remain off by default because the game consumes those arrays and sections.
  • The dense ceiling-column cache produced no stable stream improvement and was removed.
  • A thread-local last-bin cache, parallel far-bin builder, per-tile field snapshot, and per-worker edge cache did not improve the final total. The first edge-cache version removed 2,477 vertices and was rejected as a geometry change.
  • Early far-tile overlap changed LOD0/1 hashes while far parents were incomplete; the path was removed.
  • The multi-pass Flying Edges-style mesher, AVX2 primitive batches, forward differences, Morton page order, Bernstein bounds, six workers, and explicit coarse far surfaces were not prototyped. The measured workload has 4,770 queued LOD6 tiles and a busy worker pool, so splitting one critical tile is not the current bottleneck.

Research retained for these choices: Abseil Swiss tables, Meta F14, VTK Flying Edges, the LDAV 2015 paper, and Intel’s Intrinsics Guide. In particular, the latter cautions that an intrinsic does not guarantee a faster instruction sequence.

Routes, joins, shape checks, and edit latency

Every final shape build reports 5,642/5,642 passage centerline samples open and retains the native landing floors. The three fixed-view grid-stair checks pass the 0.400 threshold.

Fixed view Grid-stair metric Flat-patch share Largest flat patch Result
Chamber 0.003 5.0% 433 samples Pass
Tunnel 0.028 5.0% 433 samples Pass
Passage 0.205 8.0% 520 samples Pass

The chamber, tunnel, and passage detail checks pass at a 4-voxel supremum with an 8-voxel band. Shared tunnel joins: 280 in chamber/tunnel and 240 in passage; endpoint radius and slope deltas are 0.000000 and 0.00000000. The room-floor, floor-slope, C1 floor-profile, and tunnel-radius audits pass. The whole-view level-zero shard audit covers 512 tiles and finds zero thin sheets, zero isolated small components, and four small boundary-touching components.

The crater benchmark is one transaction containing three brushes (10 m diameter, 24 m from the player): a sphere carve, rounded-box cut, and capsule rim. At 8 workers it remeshed all 14 affected tiles with zero cache hits: 12 LOD0 and 2 LOD1. Remesh time was 14 ms; edit-to-ready was 17 ms. Collision cooking is unavailable in the standalone harness.

Current audit logs: chamber, tunnel, passage, whole-view shard/join audit, and edit transaction.

Previous-round six captures and visual review

All six captures were regenerated from the final full-payload executable at 8 workers and the half-load process limit.

View Fixed camera in metres; yaw/pitch in degrees Current capture
Chamber (-11.75, -123.25, -19.85); 0 / 0 chamber
Tunnel (-11.75, -123.25, -19.85); 90 / 0 tunnel
Passage (-39.19, 6.27, -28.51); 63 / 0 passage
Far view (-11.61244, -118.2212, -19.8452); 0 / 0 far
Passage-floor close-up (-39.19, 6.27, -25.51); 63 / -25 floor close-up
Tunnel bend (-198.97, -99.57, -45.58); 33.59 / 23.17 bend

Five captures are byte-identical to the preceding rebuilt set. The passage view differs in 662 of 1,024,000 pixels, with a maximum channel delta of 97; side-by-side inspection shows the same framing and visible geometry. Against the owner images, the visual gap remains: the chamber still has broad smooth ceiling/floor areas, the tunnel has repeated relief bands, the passage keeps a horizontal shelf and dark opening instead of the owner’s layered profile, and the far view lacks the owner’s larger connected forms. The look is not a match.

The four owner-comparison references remain chamber, tunnel, passage, and far view. The earlier fixed captures are in round 2.

Previous-round build limits and failed invocations

The final build is final_halfload_build.log. It succeeded with /MP8. The build and workload processes ran BelowNormal on affinity 0xFF00. The recurring French vswhere.exe setup diagnostic still appears, followed by a successful compile; six existing C4838 narrowing warnings remain in VoxelStrateManager.cpp.

Failures during this continuation, with corrected work preserved:

  • The first dense ceiling-column cache build used CellsPerAxis before its declaration. That build failed; the declaration was moved before use, the retry built, and the cache was later removed after a no-gain timing result.
  • One audit runner call named StandaloneViewer.exe, which does not exist. RunMachine stopped before launching a child; the corrected executable is VoxelForgeStandalone.exe.
  • The first six-capture wrapper assembled --camera and --capture arguments as separate strings. Each process exited 2 on Invalid --camera value before opening a viewer. The arguments were corrected and all six final captures completed with exit code 0.
  • An earlier wrapper call used a relative Tee-Object path after Build.ps1 changed directories. Its log redirection failed; the build was checked and rerun with an absolute log path.
  • Older exploratory audit and optimization failures from the look round remain documented in round 2 and its retained logs.

No external viewer was closed. No commit, push, or stash was made. All source, report, and capture edits are within Standalone.

Previous-round principal logs

  • Final no-hash full-payload timings: final_full_payload_w8_a/b.stdout.log and final_full_payload_w8_a/b.runner.log.
  • Final restored hash matrix: final_restored_full_hash_w1.stdout.log and final_restored_full_hash_w8.stdout.log.
  • Skip checks: canonical_topology_full_hash_w1/w8.stdout.log and canonical_topology_skip_uv_w8, canonical_topology_skip_groups_w8, canonical_topology_skip_both_w8.stdout.log.
  • Reserve A/B: reserve_ratio_old2_build.log and reserve_ratio_old2_*.stdout.log.
  • Current audits, edit run, and captures are listed above; capture process output is in final_capture_*_w8.stdout.log.
  • Machine runner policy: RunMachine.ps1. Build flags and limits: Build.ps1.