profile: per-LOD whole-view breakdown for the four-strate owner world (L73, no world change)
FI/TN/VS (legacy compiled-analytic) skip ZERO tiles at every LOD and evaluate ~44k density points per LOD0/1 tile; SW skips 359/512 at LOD0. The whole-tile skip requires a native tile with a uniform verdict, and the legacy paths return Mixed/unknown (R39 notes attached). Opt-in stage timers, sampled field timer, per-LOD classification and composer counters. 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
d970d75be8
commit
bd1b2a8f1d
10 files changed
+702
-5
No files matched your search
@@ -5052,6 +5052,13 @@ namespace StandaloneStreamBenchmark
|
||||
std::array<std::uint64_t,9> DensitySamplesByLOD{};
|
||||
std::array<std::uint64_t,9> SkirtTrianglesByLOD{};
|
||||
std::array<std::uint64_t,9> TileCountByLOD{};
|
||||
std::array<std::uint64_t,9> ClassifiedAirTilesByLOD{},ClassifiedSolidTilesByLOD{};
|
||||
std::array<std::uint64_t,9> ClassifiedMixedTilesByLOD{},UnclassifiedTilesByLOD{};
|
||||
std::array<std::uint64_t,9> MeshingSkippedTilesByLOD{},DensityGridTilesByLOD{};
|
||||
std::array<std::uint64_t,9> DensityPointCallsByLOD{},DensityFieldEvalNanosecondsByLOD{};
|
||||
std::array<std::uint64_t,9> DensityFieldEvalSamplePointsByLOD{};
|
||||
std::array<std::uint64_t,9> ProofAirCellsByLOD{},ProofSolidCellsByLOD{};
|
||||
std::array<double,9> PayloadBuildMsByLOD{};
|
||||
std::array<std::uint64_t,9> BaseRouteTilesByLOD{},PageRouteTilesByLOD{};
|
||||
for(const FVoxelTileKey& Tile:Desired.Tiles)
|
||||
if(Tile.Level>=0&&Tile.Level<static_cast<int32>(ExpectedTilesByLOD.size()))
|
||||
@@ -5101,6 +5108,28 @@ namespace StandaloneStreamBenchmark
|
||||
{
|
||||
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
|
||||
++TileCountByLOD[LOD];
|
||||
const auto& TileDiagnostics=Tile.CoreDiagnostics;
|
||||
if(TileDiagnostics.tileWasClassified)
|
||||
{
|
||||
switch(TileDiagnostics.tileClass)
|
||||
{
|
||||
case VoxelForgeCore::TileClass::allAir:++ClassifiedAirTilesByLOD[LOD];break;
|
||||
case VoxelForgeCore::TileClass::allSolid:++ClassifiedSolidTilesByLOD[LOD];break;
|
||||
case VoxelForgeCore::TileClass::mixed:++ClassifiedMixedTilesByLOD[LOD];break;
|
||||
case VoxelForgeCore::TileClass::unknown:++UnclassifiedTilesByLOD[LOD];break;
|
||||
}
|
||||
}
|
||||
else ++UnclassifiedTilesByLOD[LOD];
|
||||
if(TileDiagnostics.meshingSkipped)++MeshingSkippedTilesByLOD[LOD];
|
||||
if(Tile.DensitySamples>0)++DensityGridTilesByLOD[LOD];
|
||||
DensityPointCallsByLOD[LOD]+=TileDiagnostics.densityPointCalls;
|
||||
DensityFieldEvalNanosecondsByLOD[LOD]+=
|
||||
TileDiagnostics.densityFieldEvalNanoseconds;
|
||||
DensityFieldEvalSamplePointsByLOD[LOD]+=
|
||||
TileDiagnostics.densityFieldEvalSamplePoints;
|
||||
ProofAirCellsByLOD[LOD]+=TileDiagnostics.marchingCubesProofSkippedAirCells;
|
||||
ProofSolidCellsByLOD[LOD]+=TileDiagnostics.marchingCubesProofSkippedSolidCells;
|
||||
PayloadBuildMsByLOD[LOD]+=Tile.PayloadBuildMilliseconds;
|
||||
WorkerSecondsByLOD[LOD]+=Tile.WorkerSeconds;
|
||||
if(bReportLodWorkProfile)
|
||||
{
|
||||
@@ -5549,6 +5578,31 @@ namespace StandaloneStreamBenchmark
|
||||
GroundRefineExclusiveMsByLOD[LOD],CapRefineExclusiveMsByLOD[LOD],
|
||||
SkirtMsByLOD[LOD],static_cast<unsigned long long>(SkirtTrianglesByLOD[LOD]),
|
||||
MeshAssemblyMsByLOD[LOD]);
|
||||
if(bInstrumentTileDrain)
|
||||
{
|
||||
const double FieldEvalEstimateMs=DensityFieldEvalSamplePointsByLOD[LOD]
|
||||
?static_cast<double>(DensityFieldEvalNanosecondsByLOD[LOD])
|
||||
*static_cast<double>(DensityPointCallsByLOD[LOD])
|
||||
/static_cast<double>(DensityFieldEvalSamplePointsByLOD[LOD])/1.0e6
|
||||
:0.0;
|
||||
const double TileDivisor=TileCountByLOD[LOD]
|
||||
?static_cast<double>(TileCountByLOD[LOD]):1.0;
|
||||
std::printf("[WorldAssemblerLODClassification] lod=%zu tiles=%llu all_air=%llu all_solid=%llu mixed=%llu unclassified=%llu tile_skips=%llu density_grid_tiles=%llu density_point_calls=%llu density_points_per_tile=%.1f field_eval_ms_est=%.3f field_eval_sample_points=%llu proof_air_cells=%llu proof_solid_cells=%llu payload_build_ms=%.3f\n",
|
||||
LOD,static_cast<unsigned long long>(TileCountByLOD[LOD]),
|
||||
static_cast<unsigned long long>(ClassifiedAirTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(ClassifiedSolidTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(ClassifiedMixedTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(UnclassifiedTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(MeshingSkippedTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(DensityGridTilesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(DensityPointCallsByLOD[LOD]),
|
||||
static_cast<double>(DensityPointCallsByLOD[LOD])/TileDivisor,
|
||||
FieldEvalEstimateMs,
|
||||
static_cast<unsigned long long>(DensityFieldEvalSamplePointsByLOD[LOD]),
|
||||
static_cast<unsigned long long>(ProofAirCellsByLOD[LOD]),
|
||||
static_cast<unsigned long long>(ProofSolidCellsByLOD[LOD]),
|
||||
PayloadBuildMsByLOD[LOD]);
|
||||
}
|
||||
if(bReportLodWorkProfile)
|
||||
{
|
||||
const auto& Detail=*FarLODProfile;
|
||||
|
||||
Reference in new issue
Block a user