research(standalone): far-field round -- measured only; LOD8 1.35 s but unproven, LOD6 default 1.74 s

No source change kept. LOD8 changes a remote view (29k of 1.02 M pixels) and no check proves distant
strata survive; LOD7 renders the same remote view as LOD8. Default stays LOD6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-04 19:26:11 +02:00
1 parent 9ffe296cd1
commit 5602a281b9
5 files changed
+43

No files matched your search

@@ -1,5 +1,40 @@
# Shape world speed round — final half-load verification # Shape world speed round — final half-load verification
## Round 5 — far-field LOD8 trial (2026-10-04)
### Result and decision
The coarse far-shell candidate meets the requested **under-1.5 s** W8 process-wall threshold on two cold, full-payload runs, but I did not promote it: a remote yaw-90 capture changes 28,982 of 1,024,000 pixels versus LOD6 (max channel delta 38), and no per-shell/per-connector coarse-sampling survival proof exists. The source and rebuilt default therefore remain at exported LOD6. The LOD8 experiment is reproducible with `--max-clip-level=8`; it is not evidence that thin strata, seals, or distant connectors all survive.
### Cold full-payload W8 measurements
All runs used `--force-generate`, 8 workers, full UVs/colors/material groups, no cache, BelowNormal priority and affinity `0xFF00`. Process wall includes startup and world setup; collision cooking and GPU upload are outside this standalone measurement.
| Max LOD | Process wall A/B (mean) | Shape stage A/B (mean) | Full-detail stream A/B | Full clipmap A/B (mean) | Tiles | Payload allocation | Cache hits |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 6, final exported default | 1.809 / 1.664 s (**1.737 s**) | 706 / 696 ms (**701 ms**) | 247 / 226 ms | 850 / 861 ms (**856 ms**) | 6,498 | 235.29 MiB | 0 |
| 8, candidate | 1.406 / 1.289 s (**1.348 s**) | 698 / 703 ms (**700 ms**) | 215 / 212 ms | 434 / 431 ms (**433 ms**) | 2,226 | 92.61 MiB | 0 |
The candidate cuts full clipmap wall by about 49% and reduces LOD6–8 samples from 32.717 M to 3.415 M (about 90%). It retains full payload channels. The full-payload logs are [default LOD6 A](round5_final_default6_full_payload_w8_a.stdout.log), [B](round5_final_default6_full_payload_w8_b.stdout.log), [candidate LOD8 A](round5_final_default_full_payload_w8_a.stdout.log), and [B](round5_final_default_full_payload_w8_b.stdout.log), with runner records alongside them. LOD6 remains 0.237 s above the process-wall target on this pair; the candidate is 0.152 s below it.
### Determinism and audits
The final LOD6 executable, [build log](round5_farfield/round5_default6_build.log), matches all 36 density/mesh/full-payload/oriented-topology fields across W1/W8 for full detail, whole clipmap, and LOD0–6: [comparison](round5_final_default6_hash_compare.log), [W1](round5_final_default6_hash_w1.stdout.log), [W8](round5_final_default6_hash_w8.stdout.log). The candidate LOD8 W1/W8 comparison matches all 44 fields across full detail, whole clipmap, and LOD0–8: [comparison](round5_lod8_default_hash_compare.log), [W1](round5_lod8_default_hash_w1.stdout.log), [W8](round5_lod8_default_hash_w8.stdout.log). Both workloads report 5,642/5,642 route samples open and zero cache hits. The W8 shard audit passes for LOD0 (zero isolated-in-view small components); it does not cover coarse far-shell survival.
The final default's W8 shape/look audit is green: route, room-floor, floor-slope, floor-profile, tunnel-radius, flat-surface, grid-stair, thin-sheet, strata/cave surface-band, flat-patch, detail, and spatial-scale checks all pass. See [audit output](round5_final_default6_shape_audit_w8.stdout.log). The LOD8 candidate audit is [here](round5_lod8_shape_audit_w8.stdout.log); these audits run the detailed shape checks in the near compiled region and are not the missing far-LOD survival check.
### Captures and far-field discrepancy
The six requested before/after capture pairs were taken after `[InitialClipmapReady]`. The LOD6 and candidate LOD8 images compare pixel-identically for chamber, tunnel, passage, far yaw 0, floor close-up, and tunnel bend; the three additional center-camera far directions (yaw 90/180/270) also compare exactly. [Pixel comparison](round5_default_capture_pixel_compare.stdout.log). Example: [LOD6 chamber](round5_farfield/lod6_fixed_chamber.png) / [LOD8 chamber](round5_farfield/default_fixed_chamber.png); [LOD6 far yaw 90](round5_farfield/lod6_far_yaw90.png) / [LOD8 far yaw 90](round5_farfield/default_far_yaw90.png).
I added a remote camera at X=500 m and swept four headings. At yaw 90, the candidate changes 28,982 pixels (86,923 channels; mean absolute channel delta 0.227); the changed region is concentrated in lower far silhouettes. Yaw 180 is identical; yaw 270 changes 143 pixels with max delta 1. Yaw 0's 19 pixels at max delta 1 match same-LOD capture jitter: a repeated LOD6 image differs by the same 19 pixels, and that repeat is identical to LOD8. The LOD7 yaw-90 image is pixel-identical to LOD8, so LOD7 does not resolve this case. See [remote sweep comparison](round5_remote_sweep_pixel_compare.stdout.log), [capture variance check](round5_remote_capture_variance_compare.stdout.log), [LOD6 yaw 90](round5_farfield/lod6_remote_x500_yaw90.png), [LOD8 yaw 90](round5_farfield/default_remote_x500_yaw90.png), [LOD7 yaw 90](round5_farfield/lod7_remote_x500_yaw90.png), and [scaled difference](round5_farfield/remote_yaw90_diff_x5.png). The mismatch is small in area but real; without a feature-survival proof I am keeping the safe default at LOD6.
### Builds and failed invocations
Both the temporary-default-LOD8 candidate and the restored-default-LOD6 executable built successfully with `/MP8` or less under the machine cap. The build logs contain the recurring French `vswhere.exe` diagnostic and six existing C4838 warnings; both builds exited successfully. Two initial W1/W8 hash-launch wrappers failed before starting a child because of malformed PowerShell array syntax; corrected launches both exited 0. An initial comparison parser also counted only one hash per output line (9 fields); the corrected all-match parser compared 36/36 and passed. No workload or build failed with `0xC0000142` or showed an out-of-memory condition. No viewer was closed.
No source diff remains: the exported LOD6 default was restored and rebuilt as [VoxelForgeRound5Default6.exe](../../../bin/VoxelForgeRound5Default6.exe); the LOD8 candidate remains available as [VoxelForgeRound5Farfield.exe](../../../bin/VoxelForgeRound5Farfield.exe). No commit, push, or stash was made. The far-field goal is not complete: next work needs an explicit shell/connector survival checker and likely feature-aware refinement or explicit far surfaces before the faster sampling can become the default.
## Round 3 update — measured payload path and current result ## Round 3 update — measured payload path and current result
This update supersedes the earlier headline timings, hash values, and capture references below. The sections that follow retain the previous-round context. With the exported LOD6 limit, the latest cold full-payload W8 pair averaged **1.917 s**. The best tested opt-in LOD8 far-shell pair averaged **1.451 s**, still **0.451 s above** the under-one-second goal. The LOD8 option is `--max-clip-level=8`; it retains LOD0–5 and distributes the same render distance over LOD6–8. Cache hits were zero in every run. This update supersedes the earlier headline timings, hash values, and capture references below. The sections that follow retain the previous-round context. With the exported LOD6 limit, the latest cold full-payload W8 pair averaged **1.917 s**. The best tested opt-in LOD8 far-shell pair averaged **1.451 s**, still **0.451 s above** the under-one-second goal. The LOD8 option is `--max-clip-level=8`; it retains LOD0–5 and distributes the same render distance over LOD6–8. Cache hits were zero in every run.
@@ -85,3 +85,11 @@ Takeover continuation — half-load rule restored
- Regenerated six fixed captures under the cap; five are byte-identical to the preceding rebuilt captures. Passage differs in 662/1,024,000 pixels (max channel delta 97) but looks unchanged side by side; owner/world visual differences remain, documented in REPORT.md. - Regenerated six fixed captures under the cap; five are byte-identical to the preceding rebuilt captures. Passage differs in 662/1,024,000 pixels (max channel delta 97) but looks unchanged side by side; owner/world visual differences remain, documented in REPORT.md.
- Failed invocations preserved in REPORT.md: one wrong executable name stopped before starting a child, and the first capture batch split --camera/--capture values and exited 2 before opening a viewer. Corrected runs all passed. One earlier dense-cache build had CellsPerAxis out of scope; corrected build succeeded before that prototype was reverted. The final build succeeds with recurring vswhere diagnostic and six existing C4838 warnings. - Failed invocations preserved in REPORT.md: one wrong executable name stopped before starting a child, and the first capture batch split --camera/--capture values and exited 2 before opening a viewer. Corrected runs all passed. One earlier dense-cache build had CellsPerAxis out of scope; corrected build succeeded before that prototype was reverted. The final build succeeds with recurring vswhere diagnostic and six existing C4838 warnings.
- Updated REPORT.md with the full-payload stage table, per-LOD data, complete hashes, skip and reserve A/B, route/edit/audit results, six captures, and failure log. No changes outside Standalone; no commit, push, or stash. - Updated REPORT.md with the full-payload stage table, per-LOD data, complete hashes, skip and reserve A/B, route/edit/audit results, six captures, and failure log. No changes outside Standalone; no commit, push, or stash.
Round 5 continuation — far-field LOD8 trial (2026-10-04)
- Read REPORT.md and predecessor progress first. Built a temporary LOD8-default candidate, measured it, then restored and rebuilt the source's exported LOD6 default. No tracked source diff remains; all build outputs, captures, logs and report updates are under Standalone.
- Cold W8 full-payload LOD8 process walls were 1.406/1.289 s (mean 1.348); shape stage 698/703 ms; full-detail stream 215/212 ms; full clipmap 434/431 ms. It generated 2,226 tiles, used 92.61 MiB payload allocation and had zero cache hits. LOD6–8 used 3.415 M density samples versus LOD6's 32.717 M.
- Restored-default LOD6 W8 full-payload process walls were 1.809/1.664 s (mean 1.737); shape stage 706/696 ms; full-detail stream 247/226 ms; full clipmap 850/861 ms. It generated 6,498 tiles, used 235.29 MiB and had zero cache hits. Thus LOD8 crosses 1.5 s, but LOD6 misses it by 0.237 s.
- Candidate LOD8 and final-default LOD6 both match their W1/W8 full-payload hashes (44/44 and 36/36 respectively), retain 5,642/5,642 open route samples and pass the requested W8 detailed shape/look audit. LOD0 shard audit passes with no isolated-in-view small components; it is not a far-shell proof.
- Six fixed after-clipmap captures and three additional center-camera far headings are pixel-identical between LOD6 and LOD8. The remote X=500 m yaw-90 comparison changes 28,982/1,024,000 pixels (max channel delta 38); yaw 180 is identical and yaw 270 changes 143 pixels (max 1). LOD7's yaw-90 capture is identical to LOD8. Since the per-shell/per-connector coarse-sampling survival audit is not implemented, retained default LOD6 and left LOD8 opt-in; the far-field goal is not yet complete.
- Both builds succeeded at /MP8 or less and all child runs used BelowNormal/0xFF00. Build logs retain the non-fatal vswhere diagnostic and six existing C4838 warnings. Two initial hash wrapper invocations failed before child launch due to PowerShell array syntax; corrected W1/W8 runs exited 0. An initial hash parser counted 9 fields because it took one match per line; corrected all-match parser passed. No build/run OOM or 0xC0000142; never closed a viewer.
- Updated REPORT.md with timings, hash checks, audit scope, captures, remote discrepancy, machine setup and failed invocations. No commit, push, or stash.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB