wip(L5, side branch): Linux offscreen captures + sampled far-LOD gate + no-op octave cutoff

Not for assembler/world: no octave qualifies under the cutoff's supremum criterion (world
unchanged), and the build is +4.6% slower than L4 with the flag off (reviewer interleaved W12).
Keeps the working EGL/GLES capture path and a gate whose metric is vertical height error, which
overstates screen error on steep slopes; its "exact far meshes exceed 1 px / 126 px pop" claims are
unconfirmed. See Linux5/REPORT.md "Orchestrator review".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED33VnqepD4YY6gDAAA832
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-19 20:39:41 +02:00
1 parent 7770074503
commit b21a19d561
33 files changed
+1977 -26

No files matched your search

+36 -2
View File
@@ -646,6 +646,18 @@ public:
int32 GetWorkerCount()const{return WorkerCount;}
uint64 GetCacheHits()const{return CacheHitCount.load(std::memory_order_relaxed);}
void SetVisualDetailCutoffBudgets(const std::array<std::int64_t,9>& Budgets,bool Apply)
{VisualDetailBudgetSubvoxels=Budgets;bEnableVisualDetailCutoff=true;bApplyVisualDetailCutoff=Apply;}
void SetVisualDetailProfilingEnabled(bool Enabled)
{bProfileVisualDetailOctaves=Enabled;}
FStandaloneCpuTile GenerateDiagnostic(const FVoxelTileKey& Key,
std::uint32_t GlobalOctaveDrop=0,std::uint32_t CellStride=1,
bool ForceExactVisualDetail=false)
{
FStandaloneTileJob Job;Job.Key=Key;Job.StartedAt=FClock::now();Job.QueuedAt=Job.StartedAt;
return Generate(Job,GlobalOctaveDrop,CellStride,0,ForceExactVisualDetail);
}
private:
FStandaloneStreamingUpdate UpdateDesiredSet(FStandaloneDesiredTileSet NewDesired,
const std::vector<FVoxelTileKey>& ResidentKeys,uint64 CrossingIndex)
@@ -761,12 +773,15 @@ private:
Wake.notify_all();
return Stats;
}
FStandaloneCpuTile Generate(const FStandaloneTileJob& Job)
FStandaloneCpuTile Generate(const FStandaloneTileJob& Job,
std::uint32_t DiagnosticGlobalOctaveDrop=0,std::uint32_t DiagnosticCellStride=1,
std::int64_t DiagnosticVisualBudgetSubvoxels=0,
bool ForceExactVisualDetail=false)
{
const auto StartTime=Job.StartedAt;
FStandaloneCpuTile Out;Out.Key=Job.Key;Out.RequestedCrossing=Job.RequestedCrossing;
Out.QueuedAt=Job.QueuedAt;Out.StartedAt=Job.StartedAt;
if(MeshCache)
if(MeshCache&&!ForceExactVisualDetail)
{
if(const FStandaloneCpuTile* Cached=MeshCache->Find(Job.Key))
{
@@ -805,6 +820,21 @@ private:
Options.skipMaterialGroups=bSkipMaterialGroups;Options.skipUv=bSkipUV;Options.skipColors=bSkipColors;
Options.captureColumnCoordinates=bCaptureColumnCoordinates;
Options.lod8HorizonInteriorStepVoxels=Lod8HorizonInteriorStepVoxels;
Options.visualDetailPixelBudgetSubvoxels=DiagnosticVisualBudgetSubvoxels;
if(DiagnosticVisualBudgetSubvoxels==0&&bEnableVisualDetailCutoff
&&Level>=3&&Level<static_cast<int32>(VisualDetailBudgetSubvoxels.size()))
Options.visualDetailPixelBudgetSubvoxels=
VisualDetailBudgetSubvoxels[static_cast<std::size_t>(Level)];
Options.visualDetailSampleStepVoxels=FMath::Max(1,Extent/Cells);
Options.profileVisualDetailOctaves=bProfileVisualDetailOctaves&&!ForceExactVisualDetail;
Options.visualDetailCutoffEnabled=bApplyVisualDetailCutoff
&&!ForceExactVisualDetail&&Level>=3
&&Options.visualDetailPixelBudgetSubvoxels>0;
Options.visualDetailContractVersion=Options.visualDetailCutoffEnabled
?VoxelForgeCore::CurrentVisualDetailCutoffContractVersion:0;
Options.diagnosticGlobalOctaveDrop=DiagnosticGlobalOctaveDrop;
Options.diagnosticColumnInterpolationStride=
std::max<std::uint32_t>(1,DiagnosticCellStride);
std::string Error;
auto Result=CoreWorld->generateTile(
{{Job.Key.Coord.X,Job.Key.Coord.Y,Job.Key.Coord.Z},Job.Key.Level},Options,Error);
@@ -977,6 +1007,10 @@ private:
bool bSkipColors=false;
bool bCaptureColumnCoordinates=false;
int32 Lod8HorizonInteriorStepVoxels=0;
std::array<std::int64_t,9> VisualDetailBudgetSubvoxels{};
bool bEnableVisualDetailCutoff=false;
bool bApplyVisualDetailCutoff=false;
bool bProfileVisualDetailOctaves=false;
std::atomic<uint64> CacheHitCount{0};
mutable std::mutex Mutex;
std::condition_variable Wake;