Files
VoxelForge/Standalone/Research/OwnerShapeWorld/REPORT.md
T
Fr0zkaandClaude Opus 5.5 8c068ee2cd research(standalone): shape world -- 64 m full detail in 0.96 s, whole view in 2.27 s, cold; look not there
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
2026-10-03 11:44:45 +02:00

7.4 KiB
Raw Blame History

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.h compiles 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 /MP flag). The build host sets BelowNormal priority and affinity 0xFF00; launched viewers use BelowNormal and 0xFF00 too.

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.log
  • chamber_compare_final.stdout.log, tunnel_compare_final.stdout.log, passage_compare_landingbox.stdout.log, far_compare_lod6.stdout.log
  • determinism_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.ps1 now invokes cl.exe directly, propagates its exit code, and checks the output file. A launcher attempt before that correction failed with Windows CreateProcess error 2 because the executable was absent.
  • The first checked compile then found an FIntVector to FVector conversion error in the optional tile-sort path. The type was corrected; the final serial build succeeded. Visual Studio setup still emits a vswhere.exe-not- recognized diagnostic, but cl.exe runs 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.