perf(core): FloatingIslands whole view 16.7 s -> 7.4 s (L51); research R20
Measured first: 45% of FI tiles are all-air, yet FloatingIslandFieldV1 returned unknown for any box near an island AABB (25,536 unknown boxes, 0 tile skips). Conservative ranges for island bodies, root lobes, buttresses, connectors, surface detail and smooth-min budgets now let the shared box classifier prove FI air/solid (216 tile skips; 28.6 M audited samples, 0 violations). The X8 path reuses its FI preflight samples. LOD7-8 far-shell and column work is skipped outside per-tile island/connector influence bounds (farHorizonVersion 4 -> 5). FI 16.74 -> 7.36 s (-56%), FI moving entering-tile p50 halved; SW unchanged. Peer determinism (Clang/GCC W1/W8/W12, random cameras) PASS; fast/medium/full PASS. Research R20: world-type catalogue and dreamcore/liminal concepts (revised after a deepening pass). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
ca85e876ad
commit
75550256ef
9 files changed
+793
-23
No files matched your search
@@ -3121,20 +3121,36 @@ public:
|
||||
}
|
||||
bool bHasLegacySurfaceSample=false;
|
||||
bool bHasNativeIslandSample=false;
|
||||
std::array<float,8> NativeIslandDensity{};
|
||||
std::array<bool,8> HasNativeIslandSample{};
|
||||
for(int32 Lane=0;Lane<Count;++Lane)
|
||||
{
|
||||
const float SampleX=static_cast<float>(XStart+Lane*XStep);
|
||||
const float SampleY=static_cast<float>(Y);
|
||||
const float SampleZ=static_cast<float>(Z);
|
||||
bHasLegacySurfaceSample|=UsesLegacySurfaceField(SampleX,SampleY,SampleZ);
|
||||
float IslandDensity=0.0f;
|
||||
bHasNativeIslandSample|=NativeFloatingIslandDensityAt(
|
||||
SampleX,SampleY,SampleZ,IslandDensity);
|
||||
HasNativeIslandSample[static_cast<std::size_t>(Lane)]=NativeFloatingIslandDensityAt(
|
||||
SampleX,SampleY,SampleZ,NativeIslandDensity[static_cast<std::size_t>(Lane)]);
|
||||
bHasNativeIslandSample|=HasNativeIslandSample[static_cast<std::size_t>(Lane)];
|
||||
}
|
||||
if(bHasLegacySurfaceSample||bHasNativeIslandSample)
|
||||
{
|
||||
for(int32 Lane=0;Lane<Count;++Lane)
|
||||
OutDensity[Lane]=DensityAtLattice(XStart+Lane*XStep,Y,Z);
|
||||
{
|
||||
const std::size_t Index=static_cast<std::size_t>(Lane);
|
||||
if(HasNativeIslandSample[Index])
|
||||
{
|
||||
++ThreadClassificationStats().NativeFloatFieldCalls;
|
||||
const float SampleX=static_cast<float>(XStart+Lane*XStep);
|
||||
const float SampleY=static_cast<float>(Y);
|
||||
const float SampleZ=static_cast<float>(Z);
|
||||
OutDensity[Lane]=ApplyEditBrushes(ApplyResolvedStrateComposition(
|
||||
NativeIslandDensity[Index],SampleX,SampleY,SampleZ),
|
||||
SampleX,SampleY,SampleZ);
|
||||
}
|
||||
else
|
||||
OutDensity[Lane]=DensityAtLattice(XStart+Lane*XStep,Y,Z);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(bAnalyticOnly)
|
||||
@@ -5044,8 +5060,7 @@ public:
|
||||
// A box crossing recipes cannot use one field interval; unknown composition stays Mixed.
|
||||
// Une boite qui traverse plusieurs recettes reste Mixed, car l'intervalle d'un seul champ ne suffit pas.
|
||||
if(bBadPlan||(bSurfaceOverlap&&(bIslandOverlap||bOtherStrateOverlap))
|
||||
||(bIslandOverlap&&(bIslandOtherStrateOverlap
|
||||
||(!bSurfaceOverlap&&bOtherStrateOverlap))))
|
||||
||(bIslandOverlap&&bIslandOtherStrateOverlap))
|
||||
return Finish(EVoxelTileClass::Mixed,true);
|
||||
// The native interval path below is the exact field selected first by DensityAtLattice
|
||||
// for SurfaceWorld and FloatingIslands. Legacy analytic primitives/layer bounds cannot
|
||||
|
||||
Reference in new issue
Block a user