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
This commit is contained in:
1 parent
5441c7da5c
commit
8c068ee2cd
33 files changed
+1676
-32
No files matched your search
@@ -0,0 +1,146 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user