standalone: 64 m full-detail override, detailed round tunnels, optional mesh cache -- generation itself NOT faster

ClipRadius override 3 (64 m at 25 cm). Uncached full detail 20.3 s on 8 workers (512 tiles at
~51 ms serial each should be ~3-4 s: the in-stream inefficiency is unsolved); full clipmap 170.6 s.
The 1 s / 5 s targets were met only from an on-disk mesh cache (.vfmesh, not committed) of
already-generated tiles: a revisit speed-up, not generation speed. Round tunnels gained
deterministic multi-scale wall relief and lost the larger mouth wedges (1.54% of lattice signs
changed, mean 0.20 m). Hashes stable across runs and 1 vs 6 workers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-03 08:59:46 +02:00
1 parent 81b7d6d0ff
commit 5441c7da5c
181 files changed
+1674 -51

No files matched your search

+74 -11
View File
@@ -1,7 +1,7 @@
# VoxelForge standalone world
This C++20 program loads the owner snapshot from `data/owner_world.json`, runs the copied
VoxelForge density pipeline and marching-cubes mesher, streams the clipmap with six worker threads
VoxelForge density pipeline and marching-cubes mesher, streams the clipmap with eight worker threads
by default, and displays it through Direct3D 11. Unreal is not linked or needed at run time.
## Build and launch
@@ -22,10 +22,10 @@ JSON beside itself under `Standalone\data\`.
### Daytime resource limit
Run tests and benchmarks at Idle or BelowNormal priority and use no more than 8 of this PC's 16
logical CPUs. The default viewer uses six workers. Use `Build\LaunchBelowNormal.ps1` for any test or
benchmark process; it starts the child at BelowNormal and verifies the priority. Builds use no more
than four compiler processes (the current build is serial) and retain `/fp:precise`. The all-core
16-worker runs documented below were the owner's one-night exception.
logical CPUs. The default viewer uses eight workers. Use `Build\LaunchBelowNormal.ps1` for any test or
benchmark process; it starts the child at BelowNormal, applies affinity `0xFF00`, and verifies both.
Builds use no more than four compiler processes (the current build is serial) and retain
`/fp:precise`. The all-core 16-worker runs documented below were the owner's one-night exception.
## Controls
@@ -33,8 +33,9 @@ than four compiler processes (the current build is serial) and retain `/fp:preci
- WASD moves; Space/Ctrl or E/Q moves vertically; Shift moves faster; the wheel changes speed.
- F toggles wireframe.
- 1 through 7 toggle clipmap levels 0 through 6 individually; 0 toggles every level.
- N/P changes the seed. T switches between the owner's base tunnels and the research-shaped round,
winding tunnel option; `--round-tunnels` starts in that variant. Either action rebuilds the clipmap.
- N/P changes the seed. T switches between the owner's base world and the added research-shaped
round, winding tunnels; `--round-tunnels` starts in that variant. G switches between legacy smooth
and detailed/smoothed tunnel walls. Either action rebuilds the clipmap.
Crossing a chunk recenters streaming:
tiles still desired stay resident, only new tiles are generated, and leaving tiles are dropped.
- Esc exits.
@@ -75,11 +76,15 @@ and seed. The export also records their geometry in JSON for reference.
season would need to be exported and mapped before it could affect this viewer.
- `WITH_EDITOR` research/debug branches, Unreal logging, startup trace, profiling counters, and
reflection metadata do not run in the standalone. The base generator path is the default.
- T selects a standalone-only tunnel-shape port. It disables the owner's first-strate tunnel
connections and adds the research field's cubic winding centerline and round elliptical tunnel
- T selects a standalone-only tunnel-shape port. It preserves the owner's rooms, tunnels, and
passages, then adds the research field's cubic winding centerline and round elliptical tunnel
profile (144-voxel pitch, 28-voxel radius, 26-voxel half-height, deterministic variable radius
and vertical wave), anchored around the camera's current height. It reuses the base rooms and
passages; it does not port the research field's room planner or full parameterized density field.
and vertical wave) at the fixed world height -80 voxels. Detailed walls use deterministic relief
at 8-, 16-, and 32-voxel wavelengths; the fixed-height field and copied `DetSin` keep the world
independent of camera placement and CRT trigonometry. An 8-voxel smooth union at the owner-field
boundary removes the small mouth wedges while retaining relief across several voxels. This is a
standalone addition; it does not port the research field's room planner or full parameterized
density field.
## Owner data and parity
@@ -244,3 +249,61 @@ BelowNormal workers:
| Before palette pass | After palette pass |
|---|---|
| ![Before tunnel palette](data/night18_tunnel_view_before.png) | ![After tunnel palette](data/night19_tunnel_view_after.png) |
## 2026-10 speed round
The owner export still says `ClipRadius=6`, which selects a 112 m full-detail cube. The standalone
now overrides this to radius 3: a 64 m cube at the same 25 cm lattice spacing, with 960 LOD0/1 tiles
instead of 4,753. The far clipmap remains enabled; the radius change reduces how much world is at
full detail and does not change density values in the overlapping region. The viewer reports both
the exported radius and the standalone override at launch.
| Path | Before | After |
|---|---:|---:|
| Full detail, uncached | 112.243 s, radius 6, 4,753 tiles, 8 workers | 20.266 s, radius 3, 960 tiles, 6 workers |
| Full detail, seed-0 base cache hit | — | 0.270 s cache read + 0.028 s headless handoff; viewer full-detail ready at 0.059 s |
| Full clipmap, uncached | 175.056 s, radius 6, 12,054 tiles, 16-worker historical night run | 170.642 s, radius 3, 6,498 tiles, 8 workers |
| Full clipmap, seed-0 base 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 ready at 0.058 s |
| Detailed round full clipmap, cache hit | — | 0.282 s cache read + 0.092 s headless; viewer ready at 0.165 s |
All new timings use BelowNormal priority and affinity `0xFF00`; worker counts are shown above. The
historical 16-worker baseline is outside the daytime resource limit and is not a controlled worker
comparison. Raw generation still misses both time targets. For the owner-start tile set, the base
viewer reports full-detail readiness at 0.059 s and full-clipmap readiness at 0.161 s after
generation starts. The detailed round viewer reports 0.058 s and 0.165 s. Including their 0.266 s /
0.284 s cache reads, both modes are below 0.45 s from cache-read start. The base cache is
`data/VoxelForge_seed0_r3_base.vfmesh` (215.64 MiB); the combined base-plus-round cache is
`data/VoxelForge_seed0_r3_round_detailed.vfmesh` (226.55 MiB). Their raw bakes took 170.642 s and
173.114 s. These timings start from new processes, but the cache files were in the OS file cache; a
cold-storage read was not measured. Cache metadata includes seed, radius, source data, and tunnel
mode. The caches cover the owner-start tile set for seed 0; other seeds, legacy walls, and camera
positions outside that set generate missing tiles normally.
The round-tunnel wall change keeps the base generator and 25 cm sampling grid. Legacy and detailed
variants were compared over 16 fixed LOD0 tiles (686,000 lattice samples): 10,539 signs changed
(1.5363%). Symmetric nearest-vertex distance was 0.1955 m mean and 2.0457 m maximum, with no
unmatched vertices. This is a mesh-vertex estimate, not a triangle-surface Hausdorff measurement.
The larger maximum is local to tunnel/room joins. Captures below show the full-detail chamber,
tunnel, and inter-strate passage. The far pair waits for all 6,498 clipmap tiles to upload.
| Fixed view | Legacy walls | Detailed/smoothed walls |
|---|---|---|
| Chamber `(-11.75,-123.25,-19.85) m`, yaw 0° | [capture](Research/VoxelSpeedRound/final/chamber_legacy.png) | [capture](Research/VoxelSpeedRound/final/chamber_detailed.png) |
| Tunnel `(-11.75,-123.25,-19.85) m`, yaw 90° | [capture](Research/VoxelSpeedRound/final/tunnel_legacy.png) | [capture](Research/VoxelSpeedRound/final/tunnel_detailed.png) |
| Passage `(-39.19,6.27,-28.51) m`, yaw 63° | [capture](Research/VoxelSpeedRound/final/passage_legacy.png) | [capture](Research/VoxelSpeedRound/final/passage_detailed.png) |
| Full clipmap `(-11.75,-123.25,-19.85) m`, yaw 90° | [capture](Research/VoxelSpeedRound/final/farclip_legacy.png) | [capture](Research/VoxelSpeedRound/final/farclip_detailed.png) |
The detailed wall field uses seeded value noise at 8, 16, and 32 voxels (2, 4, and 8 m), avoiding
per-voxel speckle. The legacy capture has a smooth tube interior and visible triangular mouth
wedges. The detailed capture carries rock relief into the tube and removes those larger wedges;
small color variation at the seam remains. The base tunnel graph and generated strate passage are
retained, so the round mode only adds air to the owner's walkable field.
`Research\VoxelSpeedRound\final\` contains the captures, benchmark output, and process logs for
this round. See the [final report and launch ledger](Research/VoxelSpeedRound/final/REPORT.md) for
PIDs and discarded runs. Each viewer/benchmark was started with `Build\LaunchBelowNormal.ps1`, which
prints its PID, BelowNormal priority, and `0xFF00` affinity. A previous max-level benchmark changed
the clipmap ring alignment and was discarded; a corrected post-filter run preserves the original
ring set.