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
@@ -120,6 +120,32 @@ public:
|
||||
* launch async march tasks (capped), and apply finished results budgeted. Call every Tick. */
|
||||
void UpdateDecorations(const FVector& PlayerWorldPos);
|
||||
|
||||
/** Headless audit of worker-cell and steady UpdateDecorations cost using the active world route.
|
||||
* Audit sans rendu du coût par cellule worker et de UpdateDecorations avec la route active. */
|
||||
struct FDecorationPlacementCostAudit
|
||||
{
|
||||
bool bNativeSurface = false;
|
||||
bool bNativeFloatingIslands = false;
|
||||
bool bSyntheticWorkload = false;
|
||||
int32 NearEntries = 0;
|
||||
int32 FarEntries = 0;
|
||||
int32 SampledCells = 0;
|
||||
int32 ColumnsPerCell = 0;
|
||||
int32 Placements = 0;
|
||||
int32 AnchorChecks = 0;
|
||||
double MaximumAnchorErrorCm = 0.0;
|
||||
double MaximumDensityResidual = 0.0;
|
||||
double DensityQueriesPerCell = 0.0;
|
||||
double SurfaceQueriesPerCell = 0.0;
|
||||
double CellMedianMilliseconds = 0.0;
|
||||
double CellP95Milliseconds = 0.0;
|
||||
double UpdateMedianMilliseconds = 0.0;
|
||||
double UpdateP95Milliseconds = 0.0;
|
||||
};
|
||||
bool MeasurePlacementCostForValidation(const FVector& PlayerWorldPos,
|
||||
int32 SampleCellCount, int32 FrameSampleCount,
|
||||
FDecorationPlacementCostAudit& OutAudit, FString& OutError);
|
||||
|
||||
//--- LANDMARKS (rare large objects on a coarse hash lattice — the "mini-suns") -----------
|
||||
/** Stream rare landmark objects around the player. Unlike decorations, these sit on a COARSE hash
|
||||
* lattice (cell = `FStrateLandmark::SpacingChunks` chunks), so cost scales with the number of
|
||||
@@ -176,6 +202,12 @@ public:
|
||||
bool bInstanced = false;
|
||||
FTransform Xf = FTransform::Identity;
|
||||
};
|
||||
struct FPlacementBuildCounters
|
||||
{
|
||||
int32 Columns = 0;
|
||||
int32 DensityQueries = 0;
|
||||
int32 SurfaceQueries = 0;
|
||||
};
|
||||
/** A finished cell march: a snapshot of the resolved decoration list + the spawn commands. */
|
||||
struct FDecoCellResult
|
||||
{
|
||||
@@ -259,6 +291,8 @@ private:
|
||||
const UVoxelStrateDefinition* Def = nullptr; // game-thread only (biome/decoration resolve)
|
||||
int32 StrateIndex = INDEX_NONE;
|
||||
int32 RepChunkZ = 0; // representative chunk-Z for biome lookups
|
||||
float VoxelSizeCm = VOXEL_SIZE; // active field voxel size: Core when enabled, legacy otherwise
|
||||
float ActiveToOwnerVoxelScale = 1.0f; // map active Core units to the legacy generator's voxel units
|
||||
float TopVoxelZ = 0.0f; // strate band, voxel coords (march range)
|
||||
float BottomVoxelZ = 0.0f;
|
||||
float WaterLocalZ = -FLT_MAX; // water surface, actor-local cm (-FLT_MAX = no water)
|
||||
@@ -303,7 +337,8 @@ private:
|
||||
const TArray<FStrateDecoration>& Entries,
|
||||
const TArray<int32>& EntryBiome, uint32 InSeed,
|
||||
int32 Spacing, float Step, int32 MaxCrossings, float ColumnDepth,
|
||||
TArray<FDecoSpawn>& OutSpawns);
|
||||
TArray<FDecoSpawn>& OutSpawns,
|
||||
FPlacementBuildCounters* OutCounters = nullptr);
|
||||
|
||||
// Each step operates on ONE grid (G = NearGrid or FarGrid). LaunchDecoTasks throttles against the
|
||||
// COMBINED in-flight count (OtherInFlight = the other grid's in-flight cells) so the two grids share
|
||||
|
||||
Reference in new issue
Block a user