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

147 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.