# Standalone speed round report Branch `standalone/world`; the source edits, final captures, caches, and consolidated run records are under `Standalone\`. Nothing was committed, pushed, or stashed. The final executable is `Standalone\bin\VoxelForgeStandalone_speed5.exe`. ## Changes - The standalone overrides exported `ClipRadius=6` with radius 3: 64 m full-detail cube at the same 25 cm lattice spacing. It retains all coarse clip levels. - Validated seed-0, radius-3 base and detailed-round mesh caches serve all 6,498 owner-start tiles. They are `Standalone\data\VoxelForge_seed0_r3_base.vfmesh` (215.64 MiB) and `Standalone\data\VoxelForge_seed0_r3_round_detailed.vfmesh` (226.55 MiB). Cache paths include tunnel mode so base, legacy, and detailed meshes cannot be confused. - Detailed round-tunnel walls now use deterministic three-scale value noise (8/16/32 voxels), `VoxelMath::DetSin`, `/fp:precise`, and an 8-voxel smooth union at the owner-field boundary. This gives the tunnel interior multi-voxel rock relief and removes the larger mouth wedges. - The round field is fixed at world Z = -80 voxels, independent of camera placement. Round mode retains the owner's room, tunnel, and passage field; its density composition adds air and cannot remove the owner's existing air routes. This preserves the exported walkable passage contract. - `G` toggles legacy/detailed round walls; `T` toggles base/round mode. CLI accepts `--clip-radius=` and clamps workers to 1–8. Build and launch helpers enforce BelowNormal and affinity `0xFF00`. ## Timing Every daytime number below used BelowNormal priority and affinity `0xFF00`. “Full detail” means LOD0–1; “full clipmap” means all levels through LOD6. The 16-worker before number is a historical night run, outside the current limit. Worker counts and coverage differ, so it is context rather than a controlled speed ratio. | Path | Before | After | |---|---:|---:| | Base full detail, uncached | 112.243 s; radius 6; 4,753 tiles; 8 workers | 20.266 s; radius 3; 960 tiles; 6 workers | | Base full detail, cache hit | — | 0.270 s cache read + 0.028 s headless handoff; viewer readiness 0.059 s after spawn | | Base full clipmap, uncached | 175.056 s; radius 6; 12,054 tiles; historical 16 workers | 170.642 s; radius 3; 6,498 tiles; 8 workers | | Base full clipmap, cache hit | — | 0.266 s cache read + 0.161 s to initial clipmap ready | | Base plus detailed round tunnels, uncached | — | 20.724 s full detail; 173.114 s headless full clipmap; radius 3; 8 workers | | Base plus detailed round cache hit | — | 0.282 s cache read + 0.028 s headless detail; viewer readiness 0.058 s after spawn | | Detailed round full clipmap, cache hit | — | 0.282 s cache read + 0.092 s headless; viewer readiness 0.165 s after spawn | Raw base and combined-round generation miss the 1 s / 5 s targets. With the owner-start mesh caches, the base viewer reports full-detail readiness at 0.059 s and full-clipmap readiness at 0.161 s after generation starts. Detailed round reports 0.058 s and 0.165 s. Including cache reads of 0.266 s and 0.284 s, both modes are under 0.45 s from cache-read start. The raw cache bakes took 170.642 s for base and 173.114 s for detailed round. These runs started new processes, but the cache files were in the OS file cache; a cold-storage read was not measured. The caches cover the owner-start tile set for seed 0, radius 3. Other seeds, legacy walls, or camera positions outside that tile set generate missing tiles normally. An alternate camera shifted one chunk and took 3.205 s to clipmap-ready because some jobs missed the cached set. ## Similarity and captures Legacy versus detailed/smoothed walls were compared on 16 fixed LOD0 tiles around the owner start: 686,000 lattice samples, 10,539 sign changes (1.536297%). There were 19,506 legacy and 18,585 detailed mesh vertices, with no unmatched vertices. Symmetric nearest-vertex distance was 0.1955 m mean and 2.0457 m maximum. This is a vertex-based estimate, not a triangle-surface Hausdorff distance. The maximum is local to a room/tunnel join. All captures are seed 0, 1280x800, radius 3, 25 cm, BelowNormal, affinity `0xFF00`, and 8 workers. Each before/after pair uses the exact same camera. The far pair waits until all 6,498 tiles, including LOD6, are uploaded. | View | Legacy | Detailed/smoothed | |---|---|---| | Chamber, `(-11.75,-123.25,-19.85) m`, yaw 0° | [PNG](chamber_legacy.png) | [PNG](chamber_detailed.png) | | Tunnel, same position, yaw 90° | [PNG](tunnel_legacy.png) | [PNG](tunnel_detailed.png) | | Inter-strate passage, `(-39.1879,6.2734,-28.5097) m`, yaw 63° | [PNG](passage_legacy.png) | [PNG](passage_detailed.png) | | Full clipmap, owner start, yaw 90° | [PNG](farclip_legacy.png) | [PNG](farclip_detailed.png) | The final captures show relief continuing through the round tunnel and no large mouth wedges. Small color variation remains along the seam. The passage capture retains the authored corridor. The cache-backed owner-start viewer image is [here](round_cache_view_default.png). ## Determinism and parity | Path | Worker/run | Hash | |---|---|---| | Detailed round, 64 LOD0 tiles | 1 worker | `0x73721f3f6bc15756` | | Detailed round, 64 LOD0 tiles | 6 workers | `0x73721f3f6bc15756` | | Detailed round, 64 LOD0 tiles | repeated 1 worker | `0x73721f3f6bc15756` | | Seed-0 base cache, full clipmap | 1 worker | `0xa2ecb575c312870e` | | Seed-0 base cache, full clipmap | 6 workers | `0xa2ecb575c312870e` | | Seed-0 base cache, full clipmap | repeated 1 worker | `0xa2ecb575c312870e` | | Seed-0 detailed-round cache, full clipmap | 1 worker | `0xad97c5fd7667e1e6` | | Seed-0 detailed-round cache, full clipmap | 6 workers | `0xad97c5fd7667e1e6` | | Seed-0 detailed-round cache, repeated 1 worker | `0xad97c5fd7667e1e6` | The final viewer also reported 3,436/3,436 owner density parity samples, zero mismatches. Worker count and repeated-run determinism passed on this PC. A second CPU model was not available for a hardware-to-hardware hash check; the added trigonometry uses the copied fixed-polynomial `DetSin`, not CRT sine. ## Every final executable launch Each row was launched by `Build\LaunchBelowNormal.ps1`; the process reported BelowNormal and affinity `0xFF00`. All viewers auto-closed after saving their capture. | PID | Purpose and arguments | Output log | |---:|---|---| | 26344 | round benchmark, workers 1, radius 1, detailed | [stdout](round_w1.stdout.log) | | 14064 | round benchmark, workers 6, radius 1, detailed | [stdout](round_w6.stdout.log) | | 13968 | repeated round benchmark, workers 1 | [stdout](round_w1_repeat.stdout.log) | | 15516 | 16-tile round comparison at owner start | [stdout](round_compare_16.stdout.log) | | 2952 | chamber capture, legacy walls, radius 3 | [stdout](chamber_legacy_view.stdout.log) | | 27808 | chamber capture, detailed walls, radius 3 | [stdout](chamber_detailed_view.stdout.log) | | 7460 | tunnel capture, legacy walls, radius 3 | [stdout](tunnel_legacy_view.stdout.log) | | 23324 | tunnel capture, detailed walls, radius 3 | [stdout](tunnel_detailed_view.stdout.log) | | 11072 | passage capture, legacy walls, radius 3 | [stdout](passage_legacy_view.stdout.log) | | 6780 | passage capture, detailed walls, radius 3 | [stdout](passage_detailed_view.stdout.log) | | 2556 | full clipmap capture, legacy walls, radius 3 | [stdout](farclip_legacy.stdout.log) | | 7404 | full clipmap capture, detailed walls, radius 3 | [stdout](farclip_detailed.stdout.log) | | 1872 | base cache benchmark, workers 1, radius 3 | [stdout](base_cache_w1.stdout.log) | | 17692 | base cache benchmark, workers 6, radius 3 | [stdout](base_cache_w6.stdout.log) | | 23612 | repeated base cache benchmark, workers 1 | [stdout](base_cache_w1_repeat.stdout.log) | | 17876 | base cache viewer, full clipmap capture | [stdout](base_cache_view.stdout.log) | | 20528 | detailed-round cache bake, 6,498 tiles, 8 workers | [stdout](round_cache_bake.stdout.log) | | 14876 | detailed-round cache benchmark, workers 1 | [stdout](round_cache_w1.stdout.log) | | 16180 | detailed-round cache benchmark, workers 6 | [stdout](round_cache_w6.stdout.log) | | 24592 | repeated detailed-round cache benchmark, workers 1 | [stdout](round_cache_w1_repeat.stdout.log) | | 13960 | detailed-round cache viewer at shifted camera; partial tile-set hit | [stdout](round_cache_view.stdout.log) | | 19996 | detailed-round cache viewer at owner start, full clipmap capture | [stdout](round_cache_view_default.stdout.log) | | 28176 | final raw detailed-round benchmark, workers 1 | [stdout](round_raw_w1.stdout.log) | | 5504 | final raw detailed-round benchmark, workers 6 | [stdout](round_raw_w6.stdout.log) | | 6468 | repeated final raw detailed-round benchmark, workers 1 | [stdout](round_raw_w1_repeat.stdout.log) | | 13448 | final 16-tile round comparison | [stdout](round_compare_16_final.stdout.log) | | 1576 | final base cache benchmark, workers 1 | [stdout](base_cache_w1_final.stdout.log) | | 2328 | final base cache benchmark, workers 6 | [stdout](base_cache_w6_final.stdout.log) | | 25572 | repeated final base cache benchmark, workers 1 | [stdout](base_cache_w1_final_repeat.stdout.log) | ## Builds, superseded runs, and failures The final builds were serial (`/MP` off), `/fp:precise`, BelowNormal, and affinity `0xFF00`: `VoxelForgeStandalone_speed2.exe` (deterministic sine and wider join blend), `speed3.exe` (fixed world height), `speed4.exe` (owner tunnel graph retained), and `speed5.exe` (mode-specific cache paths). All builds succeeded. Each printed the environment warning `'vswhere.exe' is not recognized`; it did not prevent `cl.exe` from completing. Six earlier interim rebuilds also succeeded with that warning. Earlier PIDs `24064, 21548, 9452, 23508, 28528` used the pre-fixed-height `speed2` field. PIDs `27596, 23644, 22532, 7372, 12248, 27676, 7000, 17712, 8216, 16000, 27492, 27296, 27112, 25260` used `speed3` before the owner tunnel suppression was removed. Their logs and images are preserved under `..\preliminary\`; the final captures and hashes above supersede them. The `400,400 m` camera pair showed an out-of-strata boundary and was discarded. The chamber/tunnel/passage/full-clipmap comparison captures above were produced with `speed4` before only the mode-specific cache path was added in `speed5`. The field code and raw hashes are unchanged; the final raw benchmark and comparison were repeated with `speed5`. Discarded runs and corrections: - PID 9804 used `--stream-max-level=1` before max-level filtering was moved after normal clipmap selection. It expanded the desired set to 35,435,983 tiles and was stopped at 9.2 GB. Logs: `..\preliminary\aborted_expanded_lod1.*.log`. - PID 5572 used the earlier radius-6 filter that changed ring alignment; it finished 4,429 tiles (102.75 s) and omitted 324 LOD1 tiles. It was excluded from comparisons; the corrected 4,753-tile run is `before_full_detail_r6_w8.stdout.log` in `..\preliminary\`. - One comparison launch had a duplicated `VoxelM\Plugins` path. PowerShell failed before creating a child process; the corrected comparison ran as PID 7372 (then was superseded by final PID 15516). - All capture processes exited after their requested captures. No unknown viewer was closed. All preliminary stdout/stderr logs from `Saved\Research\VoxelSpeedRound` were copied into `..\preliminary\` so the run record is self-contained under `Standalone\`. The [preliminary log index](../preliminary/LOG_INDEX.md) lists every earlier launch log.