Files
Fr0zkaandClaude Opus 5.5 d0f97bf79a wip(assembler): round S3 -- far ground from the native heightfield; LOD7/8 tiles 36-66% cheaper
Far-shell repair (81-96% of S2's LOD7/8 tile time) is skipped for certified
SurfaceWorld tiles; ground and cap come from the shared planar heightfield.
Near LOD0-3 hashes equal S2; far recipe version 1 salts LOD5+ identities.
Cold first view 6.6 -> 3.4 s (aim 1.57 s). Not a visual sign-off: distant cap
shows floating pieces, sprint streaming arrives late.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
2026-10-18 21:29:52 +02:00

10 KiB
Raw Permalink Blame History

World assembler S3 / M3 Round 7

Date: 2026-10-18. Base: S2 / 6ddb834, building on S1 / d6e6942. No commit, push or stash.

Result

The far-ground profile is now sampled directly from the native SurfaceWorld heightfield and the S2 far-shell cost centre is largely removed. BuildHost checks pass, far LOD7/8 agree with the near field within 0.043 cm at shared points, and LOD0–LOD3 hashes match S2 exactly.

This is not a horizon sign-off. Cold full-view presentation is still 3.42 s against the 1.57 s aim. At 60 m/s the clipmap completes after the player has crossed the route, and the approach captures show missing horizon/large faces during loading. The new cap is visible at distance, but its isolated pieces and the persistent distant cliff need visual review. The captures do not prove a clean approach/retreat with no visible pop.

What changed and what the counters said

The owner-walk LOD8 hypothesis was mostly right about repair geometry and wrong about classification. In S2's warmed eight-key timings, SurfaceWorld LOD7 spent 26.378/32.739 ms (81%) in far-shell repair and LOD8 spent 135.960/168.545 ms (81%). FloatingIslands LOD8 spent 69.930/73.038 ms (96%). These shell timings exclude LOD8 cap refinement. The old M1 Round 4 whole-clipmap measurement had 165 unknown LOD8 tiles, 13.27 M field calls and 49.8 s summed column time versus 1.85 s meshing. That M1 window predates S1's relief changes, the shared feature lists and the single voxel-size source; it is historical context, not a comparable S2 baseline.

The final SurfaceWorld actor route reports the following LOD7/8 tile p95 diagnostics. The sub-stage percentiles are separate timers and are not additive; column-cache time overlaps native horizon work.

LOD Full tile p95 MC mesh Shell repair Native horizon Unknown boxes Field calls Column misses
7 19.801 ms 4.864 ms 0.0001 ms 13.156 ms 1 6,167 3,025
8 58.346 ms 6.013 ms 0.0001 ms 47.204 ms 1 11,304 9,679

The shared broad-box classifier is not the current bottleneck: the route has one unknown box per sampled far tile and classification is only a few microseconds. S2 repair connectors dominated. After removing that work for certified SurfaceWorld tiles, native heightfield sampling/building is the new LOD8 cost centre. I did not change noise octave evaluation.

Owner timing comparison

Warmed BuildHost p95s use the staged 25 cm plans and eight owner keys per LOD; the S2 values are from Round 6's same workload. These are tile timings, not rendered-frame percentiles.

Family LOD S2 p95 S3 p95 Change
SurfaceWorld 7 32.739 ms 19.801 ms -39.5%
SurfaceWorld 8 168.545 ms 58.346 ms -65.4%
FloatingIslands 7 20.409 ms 13.112 ms -35.8%
FloatingIslands 8 72.923 ms 24.638 ms -66.2%

S2 and S3 standalone stream benchmarks used the same owner JSON (SHA-256 289CD75597C5510FE8751102144FDC949D9B20B8BB23EEECDA37D049A49AD711), camera, 2,553 desired tiles, 12 workers and cold generation. CPU-only full-clipmap wall time was 6.099 -> 2.975 s (51% lower). It is a different timing scope from the rendered viewer run.

The matched cold viewer runs used the owner walk camera, 12 workers, 60 fps with VSync and 2,553 tiles. S2 reached InitialClipmapReady at 6.567 s and first whole-view presentation at 6.622 s. S3 reached them at 3.081 s and 3.420 s. The first presentation is still 2.18x the 1.57 s aim.

At the requested sprint speed, a cold approach from y=-1800 m at 60 m/s crossed 250 centers in 41.520 s. Nearest-tile ready p95 was 83.978 ms, maximum crossing wall time 40.050 s, and the full clipmap completed at 42.339 s; status was FAIL. All 2,553 tiles eventually became resident, so this is a late-horizon failure rather than a permanent missing-tile count. A second visual approach at 10 m/s from y=-900 m also failed its streaming gate: 50 crossings, 47.471 s elapsed, 134.014 ms nearest-ready p95, 41.881 s maximum crossing wall time and InitialClipmapReady at 53.752 s. A separate 60 m/s retreat run completed at 42.660 s and failed its latency gate as well.

Shape agreement, determinism and regressions

The commandlet agreement check uses 128 shared LOD7/8 XY samples on the staged walk route. At each point it compares far ground vertices to a near-field density root. Tolerance is 2 cm:

Measure Result
Maximum LOD7 to near-field error 0.0427 cm
Maximum LOD8 to near-field error 0.0427 cm
Maximum LOD7 to LOD8 error 0.0000 cm
Negative control, 100 cm datum offset 100.0427 cm; detected

The negative control fails the 2 cm gate as required. This checks the ground profile; the cap is sampled from the same native heightfield at its shared 128-voxel grid, but this round did not add a separate cap-to-near-root metric. That limitation and the visual cap artifacts remain open.

A direct S2/S3 full-clipmap hash comparison used --stream-hash at the same walk camera. All four hashes below are identical per LOD, establishing the near terrain result:

LOD Density Mesh Payload Topology
0 769f2a706d585a72 33eeeb39fa443816 645621a1d968983f c2457ed905036c9d
1 69cc5a5c0a2c60af b48335f5410c57d5 d15c5480162ab8ba feca1bd025823604
2 85deed5683a77202 53469895987aeea2 e55f8ae7e1532033 d5feb12a0e85c09b
3 6518caefb3be7e7f ec513c90b853a614 f62fa1137ff17f82 ccf1dcf681965816

The whole-clipmap density hash also matches S2: c10697a8f48380c7. S3's BuildHost SurfaceWorld W1/W8/W16 hashes match at density 0cd2a1a4152ee4aa, mesh 96df0c8767fd98c6, payload 377dce268955d353 and topology 5165549880b1c16a. FloatingIslands W1/W8/W16 match at density 4dcfb37585d7d986, mesh 112f6f2486ac56c5, payload b2c0a75cf5b9f12a and topology dfffcf4a5e29a111.

Core-off legacy at 12.5 cm passes. M2 V1/V2 fixture repeats, borders, V2 MC identity and 125 doorway phases pass. BuildHost's staged SurfaceWorld and FloatingIslands actor checks pass at 25 cm. Surface edit, carve/fill, scale, reference and anchor checks pass. No 20 cm run was made.

Visual evidence

All included images are 640x400 and under 300 KB. S2 and S3 stills are separate cold runs with the same owner plan and 60 fps/VSync capture setup.

View S2 S3 Readout
Owner walk horizon before after Broad ground shape is similar.
Cap at distance before after S2 shows open sky; S3 shows the ceiling, with isolated-looking pieces.
Far view, y=-1800 m before after The same tall cliff is present in both; S3 has a small detached-looking cap band.

The 60 m/s approach and retreat captures are a failed streaming sequence, not a no-pop claim: approach 0.1 s, 15 s, 32 s; retreat 0.1 s, 15 s, 32 s. Horizon coverage is absent or obscured during loading. The slower 10 m/s approach also shows large distant faces: start, 15 s, 32 s. Raw back-buffer PNGs and full logs remain under Saved/BuildHost/Round7S3Evidence. VSync was on and the viewer was capped at 60 fps and closed at run completion.

Run ledger and limits

  • BuildHost Core/UBT and standalone viewer builds pass, with at most 12 workers. One early commandlet compile failed on C4456 variable shadowing; renaming the local fixed it. The final BuildHost source build and link-safety audit pass.
  • The first agreement audit had fewer than 64 shared points in the chosen p95 keys. A walk-route LOD7/8 fallback was added; the 128-point audit now passes.
  • The first OS screen-grab attempt failed with an invalid desktop handle. I added optional render-loop back-buffer capture to StandaloneViewer and rebuilt; those captures work.
  • One normal-speed capture launch exited before generation because Start-Process split a path at the workspace's space. Correct quoting allowed the run to complete; its streaming status still failed. A JPEG helper syntax error wrote no files and was corrected. A CIM memory query was denied, so launch checks used GlobalMemoryStatusEx instead. No Unreal/viewer process overlapped another.
  • The process working-set high-water observed during BuildHost actor runs was 3.1 GiB; flight viewer runs stayed near 1.1 GiB. Free physical memory was above 4 GiB before launches. No run returned 0xC0000142, timed out or exceeded the 15 minute step limit. The BuildHost crash directory contains only the existing 2026-09-17 UECC folder; no new UECC folder appeared.
  • BuildHost emitted existing warnings for the optional NewDataAsset, certificate store and PIX initialization. They did not fail the owner checks.

Files and owner note

New source files: none.

Modified source/header files:

  • Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h
  • Standalone/Core/src/VoxelForgeCore.cpp
  • Standalone/Core/src/FarShellsInternal.h
  • Source/VoxelForgeEditor/Private/VoxelForgeExploreCommandlet.cpp
  • Standalone/Source/StandaloneViewer.cpp

Likely compile spots are the Core public API and implementation, the canonical Core shim/link audit, the editor commandlet under BuildHost UBT/UHT, and the standalone viewer target. No generated header was edited. CODEMAP section 3 and ARCHITECTURE section 8.24 describe the change.

The far recipe version is 1. It salts far mesh, payload and topology identities from LOD5 upward; density hashes and LOD0–LOD3 identities remain unchanged. Bump it when changing this far mesh recipe. The only family-specific planar representation is declared by SurfaceWorld's ground/cap heightfield. FloatingIslands has no planar datum and keeps the shared 3D connector/field path. Player-edited tiles continue through the authoritative field and repair path at every visible LOD.

Owner note: keep Core enabled at the existing 25 cm setting; no asset or owner-project change is needed. The tile cost and near-hash checks pass, but the horizon is not ready for sign-off: cold presentation misses the target, sprint streaming arrives late, and the captures do not prove a pop-free transition. Do not treat these results as a completed visual acceptance.