wip(assembler): round S1 -- one Core voxel-size source; per-tile feature lists (islands)
AVoxelWorld::CoreVoxelSizeCm (default 25, 32 voxels/tile) flows through plan, field, mesher, content, water, atmosphere, edits and collision. Staged-owner BuildHost passes at 20 cm (SurfaceWorld + islands, W1/W8/W16, anchors, BP edits, collision) with a fixed-25cm negative control; default-size hashes match round 4; Core off stays legacy 12.5 cm. Reusable BuildWorldAssemblyFeatureTileListV1; wired into FloatingIslands only so far. 256-island stress: tile p95 112.5 -> 2.0 ms, 0 mismatches, dropped-feature control fails. Content placement measured (no populated cells): island ground search 7.25 ms/cell vs legacy 0.29 ms -- open. Outside-review evaluation in Round5/REPORT.md. 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
111cf3d262
commit
d6e69420e8
25 files changed
+2136
-250
No files matched your search
+31
-7
@@ -117,6 +117,16 @@ pass. Reusing exact detail-lattice hash corners across adjacent mixed bricks red
|
||||
step-3 259³ median from 1.502908 s to 1.169567 s; the separate step-2f 600 ms worst-profile timing
|
||||
bar still does not pass at the finer voxel size.
|
||||
|
||||
The opt-in Core route resolves physical voxel size from `AVoxelWorld::CoreVoxelSizeCm` (default
|
||||
**25 cm**) and keeps **32 voxels per Core tile**. `GetActiveVoxelSizeCm()` is the runtime conversion
|
||||
point for coordinates, mesh vertices, collision, streaming, LOD, content, water, atmosphere, and
|
||||
brushes; `WorldConfiguration::voxelSizeMicrons` plus `tileVoxelCount` carries the resolved values
|
||||
through Core. A nondefault size participates in Core snapshot/season identity, while 25 cm preserves
|
||||
the recorded default hashes. Core-off continues using the legacy 12.5 cm grid. This is currently a
|
||||
per-world setting; per-strate sizes still need physical-coordinate sampling, transition stitching,
|
||||
cross-boundary edit rasterization, per-strate LOD agreement, and a canonically ordered size map in the
|
||||
hashed identity.
|
||||
|
||||
The reachable roughness envelope is `roughness * VOXEL_NOISE_SCALE * 1.5`, or `roughness * 1.875`
|
||||
voxels. The new defaults keep it below the relevant feature radius: **0.625** of the minimum
|
||||
TunnelNetwork tunnel radius, **0.300** of Maze corridor radius, **0.469/0.625** of shaft/connector
|
||||
@@ -824,6 +834,14 @@ second density path.
|
||||
| `VoxelForgePlayerFitWindow.h` | — | Shared measurement-window policy for player-fit diagnostics (test/editor side only). |
|
||||
|
||||
### 3.13 Core runtime integration (rounds 2–5)
|
||||
Scale symbols: AVoxelWorld::CoreVoxelSizeCm is the opt-in per-world Core size setting and
|
||||
AVoxelWorld::GetActiveVoxelSizeCm() is the authoritative runtime conversion. CoreTileVoxelCount in
|
||||
the public Core API is 32 voxels per tile. UVoxelContentManager::MeasurePlacementCostForValidation
|
||||
is a headless diagnostic only; it measures placement-grid cell queries and steady manager update
|
||||
cost without changing normal spawning. FloatingIslandTileListAudit.cpp and
|
||||
BuildFloatingIslandTileListAudit.ps1 under WorldAssemblerM3/Round5 hold the candidate-list
|
||||
benchmark and dropped-feature negative control. See ARCHITECTURE §8.22.
|
||||
|
||||
The public Core API is linked as the `VoxelForgeCore` runtime module, with canonical implementation
|
||||
sources still under `Standalone/`. UBT validates the 18-row manifest and its shims; BuildHost linked
|
||||
the module and passed `CheckCoreSymbols.ps1` against the actual shim objects. See
|
||||
@@ -856,13 +874,19 @@ settings or assets.
|
||||
|
||||
When enabled, `AVoxelWorld` uses Core desired keys and priorities, compiles/generates through Unreal
|
||||
tasks, carries `Epoch` through the existing MPSC result queues, and uploads converted payloads through
|
||||
RealtimeMesh and its collision cook. Core voxel coordinates use 25 cm per voxel; Core tile keys are
|
||||
retained, and Core mesh vertices are already in centimetres. High-level legacy brush dimensions and
|
||||
density strength are scaled from 12.5 cm voxel units to Core units so their physical effect stays the
|
||||
same. Edits use
|
||||
sequenced `applyEditTransaction` calls after in-flight Core work drains, then regenerate Core's
|
||||
affected keys under a new epoch. Existing streaming anchors participate; the headless move proof
|
||||
covers `CollisionOnly` policy.
|
||||
RealtimeMesh and its collision cook. Core voxel coordinates use the size resolved from
|
||||
`CoreVoxelSizeCm` (25 cm by default); Core tile keys remain in 32-voxel units, and mesh vertices are
|
||||
in centimetres. Legacy brush dimensions and density strength are converted from the 12.5 cm owner
|
||||
grid using the resolved Core size, preserving their physical effect. SurfaceWorld owner-chunk mapping
|
||||
uses the owner/Core ratio as well. Edits use sequenced `applyEditTransaction` calls after in-flight
|
||||
Core work drains, then regenerate Core's affected keys under a new epoch. Existing streaming anchors
|
||||
participate; the headless move proof covers `CollisionOnly` policy.
|
||||
|
||||
The reusable `BuildWorldAssemblyFeatureTileListV1` accepts conservative inclusive feature bounds for
|
||||
future caves, shafts, pits, and passages. Floating Islands builds one `FloatingIslandTileFeatureListV1`
|
||||
per tile and the scoped worker context makes `FloatingIslandFieldV1::densityAt` evaluate only that
|
||||
candidate list. Candidate order stays canonical, the field hash remains bit-identical, and a dropped-
|
||||
feature negative control is part of the standalone Round 5 audit.
|
||||
|
||||
`-coreworldtest=1` in the BuildHost editor commandlet validates initial tiles, expected collision
|
||||
bodies/empty tiles, anchor movement, a carve transaction, travel to the B landing and native surface
|
||||
|
||||
Reference in new issue
Block a user