Owner's rooms, tunnels, passages, landings and strate shells compiled as shapes, solved along lattice lines with packed signs; rock detail only in a band sized by its supremum; far levels from the same shapes; multithreaded meshing. 8 workers, BelowNormal, affinity 0xFF00, zero cache hits: full detail (960 tiles): 669 ms shapes + 290 ms mesh = 0.959 s (was 20.3 s) full clipmap (6,498 tiles): 870 ms + 1.398 s = 2.268 s (was 170.6 s) Checks: 5,642 passage centreline samples open; smoothed and per-voxel-noise variants both fail the detail audit; same hash across runs and 1 vs 6 workers. V toggles owner field / shape world. Look: 6-12% of lattice signs changed; captures show flat planes without detail (passage floor, a wall band), telescoping tunnel segments, blocky stair patches. Not accepted as the owner's world yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
7.4 KiB
Owner shape world: standalone results
The standalone path now builds the owner world from its room, tunnel, passage,
landing, floor, ceiling, and seal shapes. It does not read or write the mesh
cache. The active voxel lattice remains 25 cm; rock detail is evaluated only in
the surface band. V switches between the current owner density and the shape
world in the viewer.
Method
Source/StandaloneShapeWorld.hcompiles the known shapes into column intervals, combines their signs in packed words, and locates surface cells with bit operations. Round and winding tunnels use line-solved/approximated shape primitives; protected passage air is applied after solid overlays.- The coherent rock detail has a proven maximum amplitude of 3.20 voxels and a 4-voxel evaluation band. Detail outside that band cannot change the base sign. The far field is compiled from parent shapes and meshed coarsely.
- Existing marching-cubes meshing runs on worker threads. Benchmark runs use
--force-generate; shape-world mode also bypasses cache loading. The reports below show zero cache hits. - Builds are serial (no
/MPflag). The build host sets BelowNormal priority and affinity0xFF00; launched viewers use BelowNormal and0xFF00too.
Cold generation timings
Each timing is shape compilation plus uncached mesh generation. The full-detail area is the 64 m cube with 960 LOD0–1 tiles. The full clipmap contains 6,498 tiles through LOD6. Hashing is off for these timing runs.
| Cold job | Shape stage | Mesh generation wall | Total | Result |
|---|---|---|---|---|
| Full detail, 8 workers | 668.566 ms | 290 ms | 0.959 s | 960/960 tiles; cache hits 0 |
| Full clipmap, 8 workers | 870.418 ms, including far parents | 1.398 s | 2.268 s | 6,498/6,498 tiles; cache hits 0 |
Full-detail stage breakdown: local shapes 53.892 ms, intervals/signs 196.326 ms, surface band 417.952 ms. Full-clipmap breakdown: local shapes 53.281 ms, intervals/signs 195.162 ms, surface band 424.921 ms, far parents 196.578 ms. The measured full-detail total is close to the 1 s limit; the full clipmap has more margin under 5 s.
Logs: final/full_detail_cold_w8_final.stdout.log and
final/full_clipmap_cold_w8_final.stdout.log.
Similarity and captures
The viewer captures use explicit positions and yaws. Owner and shape images are paired at the same camera settings. The far owner image is the existing cold baseline capture at the default start view; its matching shape capture was made at the same position and yaw.
| View | Owner capture | Shape capture |
|---|---|---|
| Chamber, yaw 0° | final/chamber_fixed_owner.png |
final/chamber_fixed_shape.png |
| Tunnel, yaw 90° | final/tunnel_fixed_owner.png |
final/tunnel_fixed_shape.png |
| Passage, yaw 63° | final/passage_fixed_owner.png |
final/passage_fixed_shape.png |
| Far view, yaw 0° | final/far_owner.png |
final/far_fixed_shape.png |
Comparison results:
| View/LOD | Tiles | Lattice samples | Changed signs | Share changed | Mean / max surface distance* | Unmatched surface samples |
|---|---|---|---|---|---|---|
| Chamber, LOD0–1 | 960 | 35,103,600 | 4,165,142 | 11.8653% | 1.1763 m / 6.5210 m | 69,626 |
| Tunnel, LOD0–1 | 960 | 35,103,600 | 4,165,142 | 11.8653% | 1.1763 m / 6.5210 m | 69,626 |
| Passage, LOD0–1 | 960 | 37,240,000 | 2,352,343 | 6.3167% | 1.0102 m / 6.7059 m | 35,520 |
| Far view, outer LOD6 | 4,770 | 9,470,835 | 856,305 | 9.0415% | 3.5551 m / 5.7456 m | 475,722 |
* Surface distance samples every fourth mesh vertex. The mean and maximum include matched samples only; unmatched samples are listed separately. The distance check searches neighboring 1 m buckets, so treat it as a sampled comparison rather than a continuous Hausdorff distance. Chamber and tunnel share the same camera position and tile set; only yaw differs.
The captures show that the shape world retains broad passage structure, but they also show a visible change in chamber profiles and rock relief. In particular, this does not reproduce the painterly cave reference image. The sign shares and sampled distances quantify that gap; the current result should be treated as a fast, coherent alternate world rather than a visual match.
Detail, walkability, and determinism
The final coherent detail audit reports supremum=3.20 vox, band=4, 476,494
surface sign flips, adjacent correlation 0.9899, and both detail checks PASS.
Two deliberately bad variants were also run:
| Variant | Surface-detail check | Spatial-scale check | Process result |
|---|---|---|---|
| Coherent detail | PASS | PASS | exit 0 |
| Smoothed detail | FAIL | PASS | exit 7, expected |
| Per-voxel noise | PASS | FAIL | exit 7, expected |
The route audit samples packed lattice signs along every exported passage centerline: 5,642/5,642 samples remain open, with native landing floors retained. This is a centerline/sign check, not a character-capsule collision simulation.
Three cold hash runs at the passage camera agree across two 6-worker runs and one 1-worker run:
| Hash | 6 workers, run A | 6 workers, run B | 1 worker |
|---|---|---|---|
| Full detail | 0x88e5818a444c1ab3 |
0x88e5818a444c1ab3 |
0x88e5818a444c1ab3 |
| LOD0 | 0x3d37fc984f0ee55b |
0x3d37fc984f0ee55b |
0x3d37fc984f0ee55b |
| LOD1 | 0xc314a1f6457f8a31 |
0xc314a1f6457f8a31 |
0xc314a1f6457f8a31 |
This confirms repeatability and worker-count independence on this machine; a second hardware/architecture was not available for a cross-machine hash run.
Viewer and evidence files
Press V in the standalone viewer to swap owner density and shape intervals;
the viewer rebuilds the resident field. The control is handled in
Source/StandaloneViewer.cpp near the keyboard input handler.
The logs under final/ include the cold timings, audits, comparisons, captures,
and determinism runs. In particular:
audit_coherent_final.stdout.log,audit_smooth_bad_final.stdout.log,audit_per_voxel_bad_final.stdout.logchamber_compare_final.stdout.log,tunnel_compare_final.stdout.log,passage_compare_landingbox.stdout.log,far_compare_lod6.stdout.logdeterminism_final_w6_a.stdout.log,determinism_final_w6_b.stdout.log,determinism_final_w1.stdout.log
The LOD6 similarity command took 101.3 s because it also sampled nearest-surface distances over the entire outer tile set. That is comparison-analysis time, not world-generation time.
Failed and abandoned attempts
- The original build script could print success after failing to leave an
executable.
Build.ps1now invokescl.exedirectly, propagates its exit code, and checks the output file. A launcher attempt before that correction failed with WindowsCreateProcess error 2because the executable was absent. - The first checked compile then found an
FIntVectortoFVectorconversion error in the optional tile-sort path. The type was corrected; the final serial build succeeded. Visual Studio setup still emits avswhere.exe-not- recognized diagnostic, butcl.exeruns and produces the binary. - An earlier smooth-detail audit passed before its gate was tightened. The final smooth variant now exits 7 on the surface-detail check, as shown above.
- A fresh owner far-view capture was stopped after 55 s because the existing uncached owner clipmap run takes about 183 s. The existing owner capture was reused; the shape far capture completed in 2.65 s. No viewer started by someone else was closed.
No commit, push, or stash was made.