wip(step2f): coherent field -- flakes, speckle, grid, roof fixed; 3 crumbs + 636 ms left; last edits UNCOMPILED

Stopped by low memory (another app at 14 GB; processes failed with 0xC0000142).
r6 (compiled and measured, owner playing during the run), step 2e -> step 2f r6:
  crumbs < 1 m^3 (max per profile)   2,898 -> 3        FAIL (0,0,0,0,2,1,3,2)
  flakes (shard share / p95 angle)   40.7% / 84.2 deg -> 2.1% / 33.1 deg   pass
  lattice-scale detail energy        0.832 -> 0.016    pass
  grid signature (autocorrelation)   0.666 -> 0.349    pass
  min solid share / roof openings    2.7%, 26,657 -> 79.2%, 0   pass
  worst profile ring time            642.8 -> 636.3 ms FAIL (6 workers, 259^3)
Step 2e measured 642.8 ms here vs 570 ms idle earlier: the game was costing ~12% during this run.
Brick proofs + audit, seams + injected seam, 1 vs 6 worker determinism pass. After r6, feature
probabilities were lowered to remove the last crumbs: NOT compiled, NOT measured. TraversalSeeds,
in-game captures and the LOD-rejection figure for 2e are still to do. Reject screenshots included.

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-09-30 19:50:42 +02:00
1 parent 0a7492ffab
commit d6555df5fa
9 files changed
+1665 -65

No files matched your search

+16 -3
View File
@@ -74,10 +74,20 @@ static bool VF_TileFootprintsOverlap(const FVoxelTileKey& A, const FVoxelTileKey
#if WITH_EDITOR
#include "VoxelStrateComposer.h"
#include "VoxelStrateMeasure.h"
#include "VoxelRedefinedDensityField.h"
#endif
namespace
{
bool IsParameterizedResearchFieldActive()
{
#if WITH_EDITOR
return VoxelForgeRedefinedDensityField::IsParameterizedEnabled();
#else
return false;
#endif
}
int32 GVoxelForgeCollisionGate = 1;
FAutoConsoleVariableRef CVarVoxelForgeCollisionGate(
TEXT("voxel.CollisionGate"),
@@ -2197,7 +2207,8 @@ void AVoxelWorld::BeginPlay()
Mesher->bGenerateSkirts = Settings->bGenerateSkirts;
Mesher->SkirtCells = Settings->SkirtCells;
Mesher->LODOctaveDrop = Settings->LODOctaveDrop; // T2.b — 0 = off
Mesher->bUseBlockEarlyOut = GVoxelForgeUseBlockEarlyOut != 0;
Mesher->bUseBlockEarlyOut = GVoxelForgeUseBlockEarlyOut != 0
&& !IsParameterizedResearchFieldActive();
UE_LOG(LogTemp, Display,
TEXT("[VoxelForgeClassifierConfig] outer_mode=%d sealed_solid_proof=%d nested_block_early_out=%d"),
@@ -10368,7 +10379,8 @@ void AVoxelWorld::GenerateTileResult(const FVoxelTileKey& Tile, const FIntVector
// même pour les cellules uniformes, et ces tuiles sont rares (fenêtre d'ombre).
// (Gate IsoLevel == 0 : les verdicts du classifieur supposent l'iso MC à zéro exactement.)
bool bTrivialEmpty = false;
if (GVoxelForgeSealedSolidProof != 0
if (!IsParameterizedResearchFieldActive()
&& GVoxelForgeSealedSolidProof != 0
&& !bWantCapture && SharedDensityOverride == nullptr
&& Generator && Mesher
&& Mesher->IsoLevel == 0.0f)
@@ -10411,7 +10423,8 @@ void AVoxelWorld::GenerateTileResult(const FVoxelTileKey& Tile, const FIntVector
return;
}
const int32 OuterClassifierMode = FMath::Clamp(GVoxelForgeOuterClassifierMode, 0, 1);
if (!bTrivialEmpty && OuterClassifierMode != 0
if (!IsParameterizedResearchFieldActive()
&& !bTrivialEmpty && OuterClassifierMode != 0
&& !bWantCapture && SharedDensityOverride == nullptr
&& Generator && Mesher && Mesher->IsoLevel == 0.0f)
{