From a4e214561f22b3e9bd0a01eeb43700b45249cc37 Mon Sep 17 00:00:00 2001 From: Fr0zka Date: Sun, 1 Nov 2026 10:08:37 +0100 Subject: [PATCH] proto: continuous swept road deck; coarse-LOD proxies keep thin pillars intact (L143) Road: one swept-deck stamp on a shared cubic-Hermite centerline (stamp vocabulary V5), 376.8 m, max 8.5 deg, walk audit clean, short-road control fails as expected. Pillars: regular fillPillar stamps get deterministic 24-sided capped-cylinder proxies once the LOD step exceeds their radius or half-height (applies to all worlds). Owner hashes unchanged (v227); five-fixture Clang/GCC determinism; fast tier green. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1 --- .../include/VoxelForgeCore/VoxelForgeCore.h | 5 + Standalone/Core/src/ResolvedLayoutInternal.h | 137 +++++- Standalone/Core/src/ShapeWorldInternal.h | 292 +++++++++++ Standalone/Core/src/VoxelForgeCore.cpp | 23 +- .../Linux143/BuildL143Fixtures.py | 113 +++++ .../WorldAssemblerM3/Linux143/CaptureL143.py | 463 ++++++++++++++++++ .../WorldAssemblerM3/Linux143/REPORT.md | 64 +++ .../captures/flatField-monolith-eye.jpg | Bin 0 -> 26523 bytes .../captures/flatField-monolith-wide.jpg | Bin 0 -> 23358 bytes .../Linux143/captures/periodicHills-eye.jpg | Bin 0 -> 25065 bytes .../Linux143/captures/periodicHills-wide.jpg | Bin 0 -> 60906 bytes .../Linux143/captures/pillar-grid-eye.jpg | Bin 0 -> 53780 bytes .../Linux143/captures/pillar-grid-wide.jpg | Bin 0 -> 74691 bytes .../captures/road-in-clouds-cloud-up.jpg | Bin 0 -> 36889 bytes .../Linux143/captures/road-in-clouds-eye.jpg | Bin 0 -> 27028 bytes .../Linux143/captures/road-in-clouds-wide.jpg | Bin 0 -> 45695 bytes Standalone/Source/StreamBenchmarkHeadless.cpp | 35 +- Standalone/Source/StreamBenchmarkPipeline.h | 78 ++- Standalone/Source/WorldAssemblyPrototype.h | 30 +- 19 files changed, 1167 insertions(+), 73 deletions(-) create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/BuildL143Fixtures.py create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/CaptureL143.py create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/REPORT.md create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-eye.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-wide.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-eye.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-wide.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/pillar-grid-eye.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/pillar-grid-wide.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/road-in-clouds-cloud-up.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/road-in-clouds-eye.jpg create mode 100644 Standalone/Research/WorldAssemblerM3/Linux143/captures/road-in-clouds-wide.jpg diff --git a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h index 204242d..edeb226 100644 --- a/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h +++ b/Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h @@ -892,6 +892,7 @@ namespace VoxelForgeCore inline constexpr std::uint32_t ResolvedLayoutStampVocabularyVersionV2 = 2; inline constexpr std::uint32_t ResolvedLayoutStampVocabularyVersionV3 = 3; inline constexpr std::uint32_t ResolvedLayoutStampVocabularyVersionV4 = 4; + inline constexpr std::uint32_t ResolvedLayoutStampVocabularyVersionV5 = 5; inline constexpr std::uint32_t ResolvedLayoutCavernGraphVocabularyVersionV1 = 1; inline constexpr std::uint32_t ResolvedLayoutOreVeinVocabularyVersionV1 = 1; enum class ResolvedLayoutValidationModeV3 : std::uint8_t { compatibility, strict }; @@ -918,6 +919,9 @@ namespace VoxelForgeCore std::array anchorPositionMicrometres{}; // Present only for fillSweptDeckSegment; defines its directed centerline. std::array, 2> sweepEndpointsMicrometres{}; + // V5 permits one continuous swept deck to carry its complete sampled centerline. + // Empty retains the V4 single-segment interpretation. + std::vector> sweepPathMicrometres; std::int64_t placementRadiusMicrometres = 0; std::array halfExtentsMicrometres{}; std::int64_t smoothWidthMicrometres = 0; @@ -938,6 +942,7 @@ namespace VoxelForgeCore ResolvedSdfStampKindV1 kind = ResolvedSdfStampKindV1::carveEllipsoid; std::array positionMicrometres{}; std::array, 2> sweepEndpointsMicrometres{}; + std::vector> sweepPathMicrometres; std::array boundsMinimumMicrometres{}; std::array boundsMaximumMicrometres{}; std::array halfExtentsMicrometres{}; diff --git a/Standalone/Core/src/ResolvedLayoutInternal.h b/Standalone/Core/src/ResolvedLayoutInternal.h index 5074335..4a47b04 100644 --- a/Standalone/Core/src/ResolvedLayoutInternal.h +++ b/Standalone/Core/src/ResolvedLayoutInternal.h @@ -599,6 +599,7 @@ namespace <<",\"irregularity_seed\":"<(stamp.yawQuarterTurns); if(stamp.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment) + { out<<",\"sweep_endpoints_um\":[[" <=ResolvedLayoutStampVocabularyVersionV3) out<<",\"rounding_radius_um\":"< stampIds; for(const auto& stamp:stamps) { @@ -1184,9 +1199,30 @@ bool ResolvedLayoutSnapshotV3::validate(ResolvedLayoutValidationModeV3 mode, -stamp.sweepEndpointsMicrometres[0][axis]; lengthSquared+=delta*delta; } - if(!(lengthSquared>0.0) - ||std::sqrt(lengthSquared)>2.0*stamp.halfExtentsMicrometres[0]+1.0) + if(stamp.sweepPathMicrometres.empty()&&(!(lengthSquared>0.0) + ||std::sqrt(lengthSquared)>2.0*stamp.halfExtentsMicrometres[0]+1.0)) add("stamp_sweep",stamp.stableId+" has invalid endpoints or longitudinal extent"); + if(!stamp.sweepPathMicrometres.empty()) + { + bool validPath=stampVocabularyVersion>=ResolvedLayoutStampVocabularyVersionV5 + &&stamp.sweepPathMicrometres.size()>=2 + &&stamp.sweepPathMicrometres.size()<=1025 + &&stamp.sweepPathMicrometres.front()==stamp.sweepEndpointsMicrometres[0] + &&stamp.sweepPathMicrometres.back()==stamp.sweepEndpointsMicrometres[1]; + for(std::size_t pointIndex=0;pointIndex=-1000000000000ll + &&coordinate<=1000000000000ll; + if(pointIndex>0) + validPath=validPath + &&stamp.sweepPathMicrometres[pointIndex-1][0](stamp.halfExtentsMicrometres[axis]+pad); + radiusSquared+=expanded*expanded; + } + const auto radius=static_cast(std::ceil(std::sqrt(radiusSquared))); + std::array minimum=stamp.sweepPathMicrometres.front(); + std::array maximum=minimum; + for(const auto& point:stamp.sweepPathMicrometres) + for(std::size_t axis=0;axis<3;++axis) + { + minimum[axis]=std::min(minimum[axis],point[axis]); + maximum[axis]=std::max(maximum[axis],point[axis]); + } + for(std::size_t axis=0;axis<3;++axis) + if(stamp.boundsMinimumMicrometres[axis]!=minimum[axis]-radius + ||stamp.boundsMaximumMicrometres[axis]!=maximum[axis]+radius) + add("stamp_bounds",stamp.stableId + +" conservative continuous-sweep bounds do not match its path"); + } else { const std::array extents={ @@ -1556,6 +1616,14 @@ std::optional ResolvedLayoutSnapshotV3::FromJson( for(std::size_t axis=0;axis<3&&axis point{}; + const auto& values=value.AsArray(); + for(std::size_t axis=0;axis<3&&axis1000000000000ll) {error="stamp request "+request.stableId+" has an unbounded anchor";return false;} - if(request.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment) + if(request.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment + &&request.sweepPathMicrometres.empty()) { double lengthSquared=0.0; for(std::size_t axis=0;axis<3;++axis) @@ -1729,6 +1803,25 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t ||std::sqrt(lengthSquared)>2.0*request.halfExtentsMicrometres[0]+1.0) {error="stamp request "+request.stableId+" has invalid swept-segment extents";return false;} } + if(request.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment + &&!request.sweepPathMicrometres.empty()) + { + if(request.sweepPathMicrometres.size()<2 + ||request.sweepPathMicrometres.size()>1025 + ||request.sweepPathMicrometres.front()!=request.sweepEndpointsMicrometres[0] + ||request.sweepPathMicrometres.back()!=request.sweepEndpointsMicrometres[1]) + {error="stamp request "+request.stableId+" has an invalid continuous deck path";return false;} + for(std::size_t pointIndex=0;pointIndex1000000000000ll) + {error="stamp request "+request.stableId+" has an unbounded path point";return false;} + if(pointIndex>0&&request.sweepPathMicrometres[pointIndex-1][0]>=point[0]) + {error="stamp request "+request.stableId+" path X coordinates must increase strictly";return false;} + } + } // The shared JSON value type stores numbers as IEEE-754 doubles; keep the // serialized seed in its exact integer range so the canonical round trip holds. @@ -1748,6 +1841,7 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t ResolvedLayoutStampV1 stamp;stamp.stableId=request.stableId; stamp.strateIndex=request.strateIndex;stamp.kind=request.kind; stamp.sweepEndpointsMicrometres=request.sweepEndpointsMicrometres; + stamp.sweepPathMicrometres=request.sweepPathMicrometres; stamp.halfExtentsMicrometres=request.halfExtentsMicrometres; stamp.smoothWidthMicrometres=request.smoothWidthMicrometres; stamp.irregularityAmplitudeMicrometres=request.irregularityAmplitudeMicrometres; @@ -1769,7 +1863,8 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t stamp.positionMicrometres[axis]=request.anchorPositionMicrometres[axis]+offset[axis]; const std::int64_t pad=stamp.smoothWidthMicrometres +stamp.irregularityAmplitudeMicrometres; - if(stamp.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment) + if(stamp.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment + &&stamp.sweepPathMicrometres.empty()) { double radiusSquared=0.0; for(const auto extent:stamp.halfExtentsMicrometres) @@ -1788,6 +1883,30 @@ bool ResolveResolvedLayoutStampsV1(ResolvedLayoutSnapshotV3& layout,std::int32_t stamp.boundsMaximumMicrometres[axis]=maximum+radius; } } + else if(stamp.kind==ResolvedSdfStampKindV1::fillSweptDeckSegment) + { + double radiusSquared=0.0; + for(std::size_t axis=1;axis<3;++axis) + { + const double expanded=static_cast(stamp.halfExtentsMicrometres[axis]+pad); + radiusSquared+=expanded*expanded; + } + const std::int64_t radius=static_cast( + std::ceil(std::sqrt(radiusSquared))); + std::array minimum=stamp.sweepPathMicrometres.front(); + std::array maximum=minimum; + for(const auto& point:stamp.sweepPathMicrometres) + for(std::size_t axis=0;axis<3;++axis) + { + minimum[axis]=std::min(minimum[axis],point[axis]); + maximum[axis]=std::max(maximum[axis],point[axis]); + } + for(std::size_t axis=0;axis<3;++axis) + { + stamp.boundsMinimumMicrometres[axis]=minimum[axis]-radius; + stamp.boundsMaximumMicrometres[axis]=maximum[axis]+radius; + } + } else { const std::array extents={ diff --git a/Standalone/Core/src/ShapeWorldInternal.h b/Standalone/Core/src/ShapeWorldInternal.h index b9a8c8a..ed036ec 100644 --- a/Standalone/Core/src/ShapeWorldInternal.h +++ b/Standalone/Core/src/ShapeWorldInternal.h @@ -3536,6 +3536,7 @@ private: const VoxelForgeCore::ResolvedLayoutStampV1* record=nullptr; std::array positionVoxels{},halfExtentsVoxels{}; std::array,2> sweepEndpointsVoxels{}; + std::vector> sweepPathVoxels; float smoothWidthVoxels=0.0f; float irregularityAmplitudeVoxels=0.0f; float irregularityWavelengthVoxels=0.0f; @@ -3710,6 +3711,15 @@ private: static_cast(stamp.sweepEndpointsMicrometres[endpoint][axis]) /Owner->CoreVoxelSizeMicrons); } + runtime.sweepPathVoxels.reserve(stamp.sweepPathMicrometres.size()); + for(const auto& pointMicrometres:stamp.sweepPathMicrometres) + { + std::array point{}; + for(std::size_t axis=0;axis<3;++axis) + point[axis]=static_cast(static_cast(pointMicrometres[axis]) + /Owner->CoreVoxelSizeMicrons); + runtime.sweepPathVoxels.push_back(point); + } const std::size_t xAxis=stamp.yawQuarterTurns%2?1:0; const std::size_t yAxis=stamp.yawQuarterTurns%2?0:1; runtime.halfExtentsVoxels={ @@ -5169,6 +5179,20 @@ private: } public: + static std::int32_t& CurrentStampSamplingStep() noexcept + { + static thread_local std::int32_t Step=0; + return Step; + } + struct FScopedStampSamplingStep + { + explicit FScopedStampSamplingStep(std::int32_t Step) + :Previous(CurrentStampSamplingStep()) + {CurrentStampSamplingStep()=std::max(0,Step);} + ~FScopedStampSamplingStep(){CurrentStampSamplingStep()=Previous;} + std::int32_t Previous=0; + }; + bool GetNativeSurfaceHeightsAt(float X,float Y,int32 ChunkZ, float& OutGroundZ,float& OutCeilingZ) const { @@ -7123,6 +7147,111 @@ private: const float top=std::max(StampEllipsoidSdf(x,y,z,halfSize),-z); return SmoothMinDistance(lower,top,round*2.0f); } + static float StampContinuousSweptDeckSdf(const FStampRuntime& stamp, + float x,float y,float z) + { + const auto& path=stamp.sweepPathVoxels; + if(path.size()<2)return std::numeric_limits::infinity(); + const float halfWidth=stamp.halfExtentsVoxels[1]; + const float halfThickness=stamp.halfExtentsVoxels[2]; + const float round=std::min(0.35f,std::min(halfWidth,halfThickness)*0.15f); + const float searchMargin=halfWidth+halfThickness+2.0f; + const auto first=std::lower_bound(path.begin(),path.end(),x-searchMargin, + [](const auto& point,float value){return point[0](first-path.begin()); + const std::size_t lastIndex=static_cast(last-path.begin()); + const std::size_t segmentBegin=std::min(path.size()-2, + firstIndex==0?std::size_t{0}:firstIndex-1); + const std::size_t segmentEnd=std::min(path.size()-2,lastIndex); + std::size_t nearestSegment=path.size(); + float nearestProjection=0.0f; + float nearestDistanceSquared=std::numeric_limits::infinity(); + for(std::size_t segment=segmentBegin;segment<=segmentEnd;++segment) + { + const auto& a=path[segment];const auto& b=path[segment+1]; + const float dx=b[0]-a[0],dy=b[1]-a[1]; + const float horizontalSquared=dx*dx+dy*dy; + if(!(horizontalSquared>1.0e-10f))continue; + const float projection=std::clamp(((x-a[0])*dx+(y-a[1])*dy) + /horizontalSquared,0.0f,1.0f); + const float nearestX=a[0]+projection*dx; + const float nearestY=a[1]+projection*dy; + const float offsetX=x-nearestX,offsetY=y-nearestY; + const float distanceSquared=offsetX*offsetX+offsetY*offsetY; + if(distanceSquared=path.size()-1)return std::numeric_limits::infinity(); + const auto evalCenterline=[&](float parameter,std::array& center, + std::array& tangent) + { + const auto& p0=path[nearestSegment]; + const auto& p1=path[nearestSegment+1]; + const auto& before=path[nearestSegment==0?nearestSegment:nearestSegment-1]; + const auto& after=path[nearestSegment+2=path.size()?p1[axis]-p0[axis] + :0.5f*(after[axis]-p0[axis]); + center[axis]=h00*p0[axis]+h10*m0+h01*p1[axis]+h11*m1; + tangent[axis]=d00*p0[axis]+d10*m0+d01*p1[axis]+d11*m1; + } + }; + std::array center{},tangent{}; + for(int refinement=0;refinement<2;++refinement) + { + evalCenterline(nearestProjection,center,tangent); + const float derivativeSquared=tangent[0]*tangent[0]+tangent[1]*tangent[1]; + if(!(derivativeSquared>1.0e-10f))return std::numeric_limits::infinity(); + const float offsetX=center[0]-x,offsetY=center[1]-y; + nearestProjection=std::clamp(nearestProjection + -(offsetX*tangent[0]+offsetY*tangent[1])/derivativeSquared,0.0f,1.0f); + } + evalCenterline(nearestProjection,center,tangent); + const float tangentLength=std::sqrt(tangent[0]*tangent[0] + +tangent[1]*tangent[1]+tangent[2]*tangent[2]); + if(!(tangentLength>1.0e-8f))return std::numeric_limits::infinity(); + for(float& component:tangent)component/=tangentLength; + const float horizontalLength=std::sqrt(tangent[0]*tangent[0] + +tangent[1]*tangent[1]); + if(!(horizontalLength>1.0e-8f))return std::numeric_limits::infinity(); + const std::array side={-tangent[1]/horizontalLength, + tangent[0]/horizontalLength,0.0f}; + const std::array up={-tangent[2]*side[1],tangent[2]*side[0], + tangent[0]*side[1]-tangent[1]*side[0]}; + const std::array relative={x-center[0],y-center[1],z-center[2]}; + const auto dot=[&](const std::array& axis) + {return relative[0]*axis[0]+relative[1]*axis[1]+relative[2]*axis[2];}; + const float lateral=dot(side),vertical=dot(up); + if((nearestSegment==0&&nearestProjection<=0.0f) + ||(nearestSegment+2==path.size()&&nearestProjection>=1.0f)) + return StampRoundedBoxSdf(dot(tangent),lateral,vertical, + {halfThickness+round,halfWidth,halfThickness},round); + const float qSide=std::abs(lateral)-halfWidth+round; + const float qUp=std::abs(vertical)-halfThickness+round; + const float outside=std::sqrt(std::max(qSide,0.0f)*std::max(qSide,0.0f) + +std::max(qUp,0.0f)*std::max(qUp,0.0f)); + return outside+std::min(std::max(qSide,qUp),0.0f)-round; + } float StampSdf(const FStampRuntime& stamp,float x,float y,float z) const { float localX=x-stamp.positionVoxels[0]; @@ -7161,6 +7290,11 @@ private: break; case VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment: { + if(!stamp.sweepPathVoxels.empty()) + { + distance=StampContinuousSweptDeckSdf(stamp,x,y,z); + break; + } std::array tangent{},side{},up{},delta{}; float lengthSquared=0.0f,horizontalSquared=0.0f; for(std::size_t axis=0;axis<3;++axis) @@ -7199,6 +7333,15 @@ private: static double StampAbsMinimum(double minimum,double maximum) {return minimum<=0.0&&maximum>=0.0?0.0:std::min(std::abs(minimum),std::abs(maximum));} + static bool UsesCoarsePillarProxy(const FStampRuntime& stamp,std::int32_t sampleStep) + { + if(!stamp.record||stamp.record->kind + !=VoxelForgeCore::ResolvedSdfStampKindV1::fillPillar + ||sampleStep<=0||stamp.irregularityAmplitudeVoxels>0.0f)return false; + return static_cast(sampleStep)>std::min(stamp.halfExtentsVoxels[0], + stamp.halfExtentsVoxels[1]) + ||static_cast(sampleStep)>stamp.halfExtentsVoxels[2]; + } static double StampRoundedBoxSdfDouble(const std::array& absolute, const std::array& halfSize,double rounding) { @@ -7300,6 +7443,7 @@ private: if(index>=StampRuntime.size())return; const auto& runtime=StampRuntime[index];const auto& record=*runtime.record; if(record.strateIndex!=bound->StrateIndex)return; + if(UsesCoarsePillarProxy(runtime,CurrentStampSamplingStep()))return; for(std::size_t axis=0;axis<3;++axis) if(worldMicrometres[axis]record.boundsMaximumMicrometres[axis])return; @@ -7317,6 +7461,154 @@ private: apply(static_cast(index)); return composed; } + +public: + std::uint32_t AppendCoarsePillarProxies(FVoxelMeshData& mesh, + const FIntVector& tileOrigin,std::int32_t tileExtent,std::int32_t sampleStep) const + { + if(!Owner||Owner->CoreVoxelSizeMicrons==0||tileExtent<=0||sampleStep<=0 + ||StampRuntime.empty())return 0; + constexpr int32 sideCount=24; + constexpr double TwoPi=6.2831853071795864769; + const int32 originalVertexCount=mesh.Vertices.Num(); + const int32 originalSurfaceVertices=std::clamp(mesh.NumSurfaceVertices,0, + originalVertexCount); + const bool hasNormals=mesh.Normals.Num()==originalVertexCount; + const bool hasUvs=mesh.UVs.Num()==originalVertexCount; + const bool hasColors=mesh.Colors.Num()==originalVertexCount; + const double voxelCentimetres=Owner->CoreVoxelSizeMicrons/10000.0; + const std::int64_t tileMinimum[3]={tileOrigin.X,tileOrigin.Y,tileOrigin.Z}; + const std::int64_t tileMaximum[3]={static_cast(tileOrigin.X)+tileExtent, + static_cast(tileOrigin.Y)+tileExtent, + static_cast(tileOrigin.Z)+tileExtent}; + std::vector proxyIndices; + std::uint32_t proxyCount=0; + const auto addVertex=[&](const FVector& position,const FVector& normal, + const FVector2f& uv) + { + const int32 index=mesh.Vertices.Add(position); + if(hasNormals)mesh.Normals.Add(normal); + if(hasUvs)mesh.UVs.Add(uv); + if(hasColors)mesh.Colors.Add(FColor::White); + return index; + }; + for(const auto& stamp:StampRuntime) + { + if(!UsesCoarsePillarProxy(stamp,sampleStep))continue; + const auto& center=stamp.positionVoxels; + if(center[0]=tileMaximum[0] + ||center[1]=tileMaximum[1] + ||center[2]=tileMaximum[2])continue; + const double radiusX=stamp.halfExtentsVoxels[0]; + const double radiusY=stamp.halfExtentsVoxels[1]; + const double bottomVoxel=center[2]-stamp.halfExtentsVoxels[2]-1.0; + const double topVoxel=center[2]+stamp.halfExtentsVoxels[2]; + const auto point=[&](double angle,double z) + { + return FVector((center[0]+radiusX*std::cos(angle))*voxelCentimetres, + (center[1]+radiusY*std::sin(angle))*voxelCentimetres, + z*voxelCentimetres); + }; + const int32 capTopCenter=addVertex(FVector(center[0]*voxelCentimetres, + center[1]*voxelCentimetres,topVoxel*voxelCentimetres), + FVector(0.0,0.0,1.0),FVector2f(0.5f,0.5f)); + const int32 capBottomCenter=addVertex(FVector(center[0]*voxelCentimetres, + center[1]*voxelCentimetres,bottomVoxel*voxelCentimetres), + FVector(0.0,0.0,-1.0),FVector2f(0.5f,0.5f)); + for(int32 sideIndex=0;sideIndex(sideIndex)/sideCount; + const double u1=static_cast(sideIndex+1)/sideCount; + const double a0=TwoPi*u0,a1=TwoPi*u1; + const FVector n0=FVector(std::cos(a0)/radiusX, + std::sin(a0)/radiusY,0.0).GetSafeNormal(); + const FVector n1=FVector(std::cos(a1)/radiusX, + std::sin(a1)/radiusY,0.0).GetSafeNormal(); + const int32 bottomA=addVertex(point(a0,bottomVoxel),n0,FVector2f(u0,0.0f)); + const int32 bottomB=addVertex(point(a1,bottomVoxel),n1,FVector2f(u1,0.0f)); + const int32 topB=addVertex(point(a1,topVoxel),n1,FVector2f(u1,1.0f)); + const int32 topA=addVertex(point(a0,topVoxel),n0,FVector2f(u0,1.0f)); + proxyIndices.insert(proxyIndices.end(),{bottomA,bottomB,topB, + bottomA,topB,topA}); + + const int32 topAIndex=addVertex(point(a0,topVoxel),FVector(0.0,0.0,1.0), + FVector2f(static_cast(0.5+0.5*std::cos(a0)), + static_cast(0.5+0.5*std::sin(a0)))); + const int32 topBIndex=addVertex(point(a1,topVoxel),FVector(0.0,0.0,1.0), + FVector2f(static_cast(0.5+0.5*std::cos(a1)), + static_cast(0.5+0.5*std::sin(a1)))); + proxyIndices.insert(proxyIndices.end(),{capTopCenter,topAIndex,topBIndex}); + + const int32 bottomAIndex=addVertex(point(a0,bottomVoxel),FVector(0.0,0.0,-1.0), + FVector2f(static_cast(0.5+0.5*std::cos(a0)), + static_cast(0.5+0.5*std::sin(a0)))); + const int32 bottomBIndex=addVertex(point(a1,bottomVoxel),FVector(0.0,0.0,-1.0), + FVector2f(static_cast(0.5+0.5*std::cos(a1)), + static_cast(0.5+0.5*std::sin(a1)))); + proxyIndices.insert(proxyIndices.end(), + {capBottomCenter,bottomBIndex,bottomAIndex}); + } + ++proxyCount; + } + if(proxyIndices.empty())return 0; + const int32 proxyVertexCount=mesh.Vertices.Num()-originalVertexCount; + const auto insertProxyVertices=[&](auto& values) + { + if(values.Num()!=originalVertexCount+proxyVertexCount)return; + using FArray=std::remove_reference_t; + FArray reordered; + reordered.Reserve(values.Num()); + for(int32 index=0;index(proxyIndices.size()/3); + TArray mergedIndices; + mergedIndices.Reserve(mesh.Triangles.Num()+static_cast(proxyIndices.size())); + for(int32 index=0;index=originalSurfaceVertices + ?oldIndex+proxyVertexCount:oldIndex); + } + for(const int32 index:proxyIndices) + mergedIndices.Add(originalSurfaceVertices+index-originalVertexCount); + for(int32 index=ceilingStart;index=originalSurfaceVertices + ?oldIndex+proxyVertexCount:oldIndex); + } + mesh.Triangles=MoveTemp(mergedIndices); + + TArray mergedMasks; + mergedMasks.Reserve(oldTriangleCount+proxyTriangleCount); + for(int32 triangle=0;triangle0) + std::printf("[CoarsePillarProxy] key=(%d,%d,%d,lod%d) sampling_step_vox=%d " + "pillars=%u mode=exact_capped_cylinder status=EMITTED\n", + key.coordinate.x,key.coordinate.y,key.coordinate.z,key.lod,MeshStep, + coarsePillarProxyCount); l77RefineStage.Restore(); out.densitySampleCount=static_cast(std::max(0,sampleCount)); diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/BuildL143Fixtures.py b/Standalone/Research/WorldAssemblerM3/Linux143/BuildL143Fixtures.py new file mode 100644 index 0000000..4a78407 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux143/BuildL143Fixtures.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +"""Build the L143 liminal pictures and walk-audit controls.""" +from __future__ import annotations + +import argparse +import json +import os +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[4] +OWNER = Path(os.environ.get("VOXELFORGE_OWNER_DATA", + ROOT / "Standalone/data/owner_world.json")) +OUT_DEFAULT = Path(os.environ.get("VOXELFORGE_VERIFY_OUT", ROOT / "Saved/Linux/l143")) + +FLAT_FIELD = { + "version": 1, + "kind": "flatField", + "minimum_arena_clearance_m": 0.0, +} + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", type=Path, default=OUT_DEFAULT / "fixtures") + args = parser.parse_args() + args.out.mkdir(parents=True, exist_ok=True) + base = json.loads(OWNER.read_text(encoding="utf-8")) + + monolith = dict(base) + monolith["surface_profile_override"] = dict(FLAT_FIELD) + monolith["motif_family_override"] = { + "version": 1, + "strate_index": 0, + "placement_policy": "seed,strate,stable_id", + "motifs": [{ + "stable_id": "liminal/oversized-familiar-monolith-v1", + "kind": "cappedCylinder", + "radius_m": 1.6, + "height_m": 26.0, + "route_side_offset_m": 42.0, + "placement_radius_m": 0.0, + "fillet_radius_m": 0.6, + "blend_width_m": 1.2, + "minimum_spacing_m": 0.0, + "yaw_quarter_turns": 0, + "attachment": "seated_floor", + }], + } + + hills = dict(base) + hills["surface_profile_override"] = { + "version": 1, + "kind": "periodicHills", + "amplitude_x_m": 2.2, + "amplitude_y_m": 2.2, + "wavelength_x_m": 80.0, + "wavelength_y_m": 80.0, + "minimum_arena_clearance_m": 0.0, + } + + road_override = { + "stable_id": "liminal/road-clouds-v2", + "strate_index": 0, + "start_xy_m": [120.0, 340.0], + "path_length_m": 360.0, + "curve_control_offset_m": 84.0, + "deck_height_above_field_m": 44.0, + "rise_control_m": 22.0, + "half_width_m": 4.0, + "half_thickness_m": 1.0, + "sample_spacing_m": 1.0, + "support_spacing_m": 24.0, + "support_radius_m": 0.55, + } + road = dict(base) + road["surface_profile_override"] = dict(FLAT_FIELD) + road["liminal_road_override"] = dict(road_override) + + short_control = dict(base) + short_control["surface_profile_override"] = dict(FLAT_FIELD) + short_override = dict(road_override) + short_override["path_length_m"] = 180.0 + short_control["liminal_road_override"] = short_override + + pillars = dict(base) + pillars["surface_profile_override"] = dict(FLAT_FIELD) + pillars["liminal_pillar_grid_override"] = { + "stable_id": "liminal/horizon-pillar-grid-v1", + "strate_index": 0, + "center_xy_m": [700.0, 800.0], + "rows": 15, + "columns": 15, + "spacing_m": 76.0, + "radius_m": 5.5, + "height_m": 40.0, + } + + fixtures = ( + ("flatField-monolith", monolith), + ("periodicHills", hills), + ("road-in-clouds", road), + ("road-short-control", short_control), + ("pillar-grid", pillars), + ) + for name, fixture in fixtures: + path = args.out / f"liminal-{name}.json" + path.write_text(json.dumps(fixture, indent=2) + "\n", encoding="utf-8") + print(f"[L143Fixture] name={name} file={path} status=PASS") + + +if __name__ == "__main__": + main() diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/CaptureL143.py b/Standalone/Research/WorldAssemblerM3/Linux143/CaptureL143.py new file mode 100644 index 0000000..f9822eb --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux143/CaptureL143.py @@ -0,0 +1,463 @@ +#!/usr/bin/env python3 +"""Run L143 liminal determinism checks, walk audits and multi-LOD captures.""" +from __future__ import annotations + +import argparse +import hashlib +import json +import math +import os +from pathlib import Path +import re +import shutil +import subprocess +import sys +import time + + +ROOT = Path(__file__).resolve().parents[4] +OUT_DEFAULT = Path(os.environ.get("VOXELFORGE_VERIFY_OUT", ROOT / "Saved/Linux/l143")) +CAPTURE_DEFAULT = Path(__file__).resolve().parent / "captures" +LIMIT = ["taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--"] +Q_PER_METRE = 1024.0 +FOG_COLOR = "0.66,0.73,0.77" + +sys.path.insert(0, str(ROOT / "Standalone/Tools/verify")) +from runner import bounded_run, current_stamp, first_stamp + + +def fmt(values) -> str: + return ",".join(f"{value:.6f}" for value in values) + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def run_step(name: str, command: list[object], log: Path, *, env: dict[str, str], + stamped: bool = False, timeout_seconds: int = 1740, + expected_exit: int = 0) -> str: + expected_stamp = current_stamp() if stamped else None + if stamped: + binary = Path(str(command[0])) + probe = bounded_run([str(binary), "--print-source-stamp"], timeout=15) + if probe is None or probe.returncode != 0 or first_stamp(probe.stdout or "") != expected_stamp: + raise RuntimeError(f"{name} refused a stale executable: {binary}") + started = time.monotonic() + log.parent.mkdir(parents=True, exist_ok=True) + with log.open("w", encoding="utf-8") as stream: + result = subprocess.run([*LIMIT, f"timeout", f"{timeout_seconds}s", + *map(str, command)], cwd=ROOT, env=env, + stdout=stream, stderr=subprocess.STDOUT, + timeout=timeout_seconds + 5, check=False) + elapsed = time.monotonic() - started + output = log.read_text(encoding="utf-8", errors="replace") + print(f"[L143Run] step={name} elapsed_s={elapsed:.3f} exit={result.returncode} log={log}", + flush=True) + if stamped and (first_stamp(output) != expected_stamp or current_stamp() != expected_stamp): + raise RuntimeError(f"{name} source stamp mismatch; see {log}") + if result.returncode != expected_exit: + raise RuntimeError(f"{name} exit={result.returncode}, expected={expected_exit}; see {log}") + return output + + +def route_frame(manifest_path: Path) -> tuple[tuple[float, float, float], + tuple[float, float, float]]: + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + strata = [entry for entry in manifest["plan"]["strates"] + if entry.get("route") and len(entry["route"]) >= 2] + if not strata: + raise RuntimeError(f"no planned SurfaceWorld route in {manifest_path}") + route = strata[0]["route"] + points = [tuple(float(value) / Q_PER_METRE for value in item["position_q"]) + for item in route] + lengths = [math.dist(a, b) for a, b in zip(points, points[1:])] + total = sum(lengths) + if total <= 1.0e-6: + raise RuntimeError(f"degenerate planned route in {manifest_path}") + + def at(distance: float) -> tuple[float, float, float]: + remaining = max(0.0, min(total, distance)) + for index, (a, b, length) in enumerate(zip(points, points[1:], lengths)): + if remaining <= length or index == len(lengths) - 1: + if length <= 1.0e-9: + return b + t = remaining / length + return tuple(a[axis] + (b[axis] - a[axis]) * t for axis in range(3)) + remaining -= length + return points[-1] + + center = at(total * 0.5) + before, after = at(total * 0.5 - 1.0), at(total * 0.5 + 1.0) + dx, dy = after[0] - before[0], after[1] - before[1] + length = math.hypot(dx, dy) + if length <= 1.0e-9: + raise RuntimeError(f"degenerate route tangent in {manifest_path}") + return center, (dx / length, dy / length, 0.0) + + +def camera_angles(camera, target) -> tuple[float, float]: + dx, dy, dz = (target[index] - camera[index] for index in range(3)) + return math.degrees(math.atan2(dx, dy)), math.degrees(math.atan2(dz, math.hypot(dx, dy))) + + +def point_toward(camera, target) -> tuple[float, ...]: + yaw, pitch = camera_angles(camera, target) + return (*camera, yaw, pitch) + + +def stamp(layout: dict, stable_id: str) -> dict: + for record in layout.get("stamps", []): + if record.get("stable_id") == stable_id: + return record + raise RuntimeError(f"missing resolved stamp {stable_id}") + + +def make_views(name: str, manifest_path: Path, layout_path: Path): + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + layout = json.loads(layout_path.read_text(encoding="utf-8")) + center, tangent = route_frame(manifest_path) + tx, ty, _ = tangent + nx, ny = -ty, tx + base_height = manifest["recipe"]["surface_profile"]["h0_q"] / Q_PER_METRE + if name == "flatField-monolith": + monolith = stamp(layout, "liminal/oversized-familiar-monolith-v1") + sx, sy, _ = (value / 1.0e6 for value in monolith["position_um"]) + floor = monolith["floor_um"] / 1.0e6 + eye_camera = (sx - tx * 36.0, sy - ty * 36.0, floor + 1.6) + eye_target = (sx, sy, floor + 10.5) + wide_camera = (sx - tx * 42.0 - nx * 18.0, + sy - ty * 42.0 - ny * 18.0, floor + 42.0) + wide_target = (sx, sy, floor + 8.0) + return { + "eye": (eye_camera, eye_target, 20), + "wide": (wide_camera, wide_target, 24), + "height_center": floor, + "height_range": 38.0, + } + if name == "periodicHills": + # Route points are capsule centers: +0.72 m places the view at 1.60 m above ground. + eye_camera = (center[0], center[1], center[2] + 0.72) + eye_target = (center[0] - tx * 360.0, center[1] - ty * 360.0, + center[2] + 0.72) + wide_camera = (center[0] - tx * 36.0 - nx * 28.0, + center[1] - ty * 36.0 - ny * 28.0, center[2] + 30.0) + wide_target = (center[0] - tx * 310.0, center[1] - ty * 310.0, + center[2] + 0.72) + return { + "eye": (eye_camera, eye_target, 20), + "wide": (wide_camera, wide_target, 28), + "height_center": base_height, + "height_range": 6.0, + } + if name == "road-in-clouds": + deck = stamp(layout,"liminal/road-clouds-v2/deck/000") + path_um = deck.get("sweep_path_um", []) + if len(path_um) < 2: + raise RuntimeError("road layout has no resolved continuous swept path") + points = [tuple(value / 1.0e6 for value in point) for point in path_um] + half_thickness = deck["half_extents_um"][2] / 1.0e6 + top = lambda point: point[2] + half_thickness + index = max(1, len(points) // 12) + camera_dx = points[index + 1][0] - points[index - 1][0] + camera_dy = points[index + 1][1] - points[index - 1][1] + camera_tangent_length = math.hypot(camera_dx, camera_dy) + camera_tx, camera_ty = (camera_dx / camera_tangent_length, + camera_dy / camera_tangent_length) + camera_nx, camera_ny = -camera_ty, camera_tx + half_width = deck["half_extents_um"][1] / 1.0e6 + eye_target_index = min(len(points) - 1, index + 25) + eye_camera = (points[index][0] + camera_nx * (half_width + 2.0), + points[index][1] + camera_ny * (half_width + 2.0), + top(points[index]) + 1.6) + eye_target = (points[eye_target_index][0] + camera_nx * (half_width - 0.4), + points[eye_target_index][1] + camera_ny * (half_width - 0.4), + top(points[eye_target_index]) + 0.3) + middle = len(points) // 2 + dx = points[middle + 1][0] - points[middle - 1][0] + dy = points[middle + 1][1] - points[middle - 1][1] + tangent_length = math.hypot(dx, dy) + tx, ty = dx / tangent_length, dy / tangent_length + nx, ny = -ty, tx + wide_target_index = min(len(points) - 1, middle + 30) + wide_camera = (points[middle][0] - tx * 35.0 + nx * 30.0, + points[middle][1] - ty * 35.0 + ny * 30.0, + top(points[middle]) + 25.0) + wide_target = (points[wide_target_index][0], points[wide_target_index][1], + top(points[wide_target_index]) - 5.0) + cloud_camera = (points[middle][0] - tx * 18.0 + nx * 12.0, + points[middle][1] - ty * 18.0 + ny * 12.0, + base_height + 1.6) + cloud_target = (points[middle][0] + tx * 8.0, + points[middle][1] + ty * 8.0, + points[middle][2] - half_thickness * 0.35) + return { + "eye": (eye_camera, eye_target, 3), + "wide": (wide_camera, wide_target, 3), + "cloud-up": (cloud_camera, cloud_target, 3), + "height_center": base_height + 23.0, + "height_range": 60.0, + "road_deck": top(points[middle]), + "road_width": 2.0 * half_width, + } + if name == "pillar-grid": + pillars = [row for row in layout.get("stamps", []) + if row.get("stable_id", "").startswith("liminal/horizon-pillar-grid-v1/pillar/")] + if len(pillars) < 9: + raise RuntimeError("pillar-grid layout has too few resolved supports") + xs = [row["position_um"][0] / 1.0e6 for row in pillars] + ys = [row["position_um"][1] / 1.0e6 for row in pillars] + floor = min((row["position_um"][2] - row["half_extents_um"][2]) / 1.0e6 + for row in pillars) + cx, cy = (min(xs) + max(xs)) * 0.5, (min(ys) + max(ys)) * 0.5 + eye_camera = (min(xs) - 78.0, cy, floor + 1.6) + eye_target = (max(xs) + 90.0, cy, floor + 1.6) + wide_camera = (cx - 280.0, cy - 420.0, floor + 230.0) + wide_target = (cx, cy, floor + 6.0) + return { + "eye": (eye_camera, eye_target, 3), + "wide": (wide_camera, wide_target, 3), + "height_center": floor + 12.0, + "height_range": 42.0, + } + raise RuntimeError(f"no capture framing for fixture {name}") + + +def headless_command(binary: Path, fixture: Path, camera, mesh: Path, + manifest: Path, layout: Path, workers: int, + clip_radius: int, *, hash_tiles: bool = False, + audit_road: bool = False, max_level: int = 0, + far_lods: bool = False, + max_clip_override: int | None = None) -> list[object]: + max_clip_level = (max_clip_override if max_clip_override is not None else + 8 if far_lods else max_level) + command: list[object] = [binary, fixture, f"--workers={workers}", + "--seed=0", "--world-assembler-prototype", "--stream-benchmark", "--stream-pipeline", + "--force-generate", f"--clip-radius={clip_radius}", + f"--max-clip-level={max_clip_level}", + f"--max-level={max_level}", "--render-distance-chunks=0", + f"--camera={fmt(point_toward(camera, (camera[0], camera[1] + 1.0, camera[2])))}", + f"--mesh-export={mesh}", f"--world-assembler-manifest-output={manifest}", + f"--resolved-layout-output={layout}"] + if hash_tiles: + command.append("--stream-hash-tiles") + if audit_road: + command.append("--audit-liminal-road-walk") + return command + + +def determinism_digest(output: str, manifest_path: Path, + layout_path: Path) -> tuple[str, str, str]: + tile_hashes = sorted(line for line in output.splitlines() + if line.startswith("[PipelineTileHash] ")) + if not manifest_path.is_file() or not layout_path.is_file() or not tile_hashes: + raise RuntimeError("determinism run omitted manifest, layout or per-tile hashes") + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + layout = json.loads(layout_path.read_text(encoding="utf-8")) + manifest_digest = (manifest["content_hash"],manifest["recipe"]["content_hash"], + manifest["plan"]["content_hash"]) + return ("|".join(manifest_digest),layout["stable_identity"],"\n".join(tile_hashes)) + + +def run_determinism(name: str, fixture: Path, view, *, binaries: dict[str, Path], + out: Path, env: dict[str, str], max_level: int = 0, + far_lods: bool = False, max_clip_override: int | None = None) -> None: + camera, _, _ = view["eye"] + clip_radius = 1 + max_clip = 0 + baseline = None + cells = 0 + for compiler, workers in ((compiler, workers) + for compiler in ("clang", "gcc") + for workers in (1, 8, 12)): + tag = f"{name}-{compiler}-w{workers}" + run_dir = out / "determinism" / tag + run_dir.mkdir(parents=True, exist_ok=True) + mesh = run_dir / "feature.vfmesh" + manifest = run_dir / "manifest.json" + layout = run_dir / "layout.json" + command = headless_command(binaries[compiler], fixture,camera,mesh,manifest, + layout,workers,max_clip,hash_tiles=True,max_level=max_level, + far_lods=far_lods,max_clip_override=max_clip_override) + output = run_step(tag,command,out/"logs"/f"determinism-{tag}.log", + env=env,stamped=True) + digest = determinism_digest(output,manifest,layout) + if baseline is None: + baseline = digest + elif digest != baseline: + raise RuntimeError(f"{name} diverged at {compiler} W{workers}; see determinism logs") + cells += 1 + print(f"[L143Determinism] fixture={name} compiler_worker_cells={cells} identical=yes status=PASS", + flush=True) + + +def export_and_capture(name: str, fixture: Path, views: dict, *, + headless: Path, renderer: Path, out: Path, + artifact_dir: Path, env: dict[str, str]) -> None: + view_names = ("eye", "wide", "cloud-up") if name == "road-in-clouds" else ("eye", "wide") + for view_name in view_names: + camera, target, clip_radius = views[view_name] + clip_radius = min(clip_radius,3) + stem = f"{name}-{view_name}" + mesh = out / "capture-meshes" / f"{stem}.vfmesh" + manifest = out / "capture-manifests" / f"{stem}.json" + layout = out / "capture-layouts" / f"{stem}.json" + png = out / "capture-png" / f"{stem}.png" + image = artifact_dir / f"{stem}.jpg" + for path in (mesh,manifest,layout,png,image): + path.parent.mkdir(parents=True,exist_ok=True) + command = headless_command(headless,fixture,camera,mesh,manifest,layout,12, + clip_radius,max_level=-1,far_lods=True, + max_clip_override=2 if name == "road-in-clouds" else None) + output = run_step(f"capture-{stem}-export",command, + out/"logs"/f"capture-{stem}-export.log",env=env,stamped=True) + if not mesh.is_file() or mesh.stat().st_size == 0: + raise RuntimeError(f"{stem} produced an empty mesh") + yaw, pitch = camera_angles(camera,target) + height_center = views["height_center"] + height_range = views["height_range"] + if name == "road-in-clouds": + fog_start,fog_end,fog_color=(24,260,"0.88,0.93,0.95") + elif name == "pillar-grid": + fog_start,fog_end,fog_color=220,1250,"0.82,0.88,0.91" + elif name == "periodicHills": + fog_start,fog_end,fog_color=210,1000,"0.78,0.84,0.88" + else: + fog_start,fog_end,fog_color=30,105,FOG_COLOR + renderer_command = [renderer,mesh,png,"--size=1600x900","--fov-deg=72", + f"--camera-m={fmt(camera)}",f"--yaw-deg={yaw:.6f}", + f"--pitch-deg={pitch:.6f}","--tile-skirts=on","--shade=readable", + "--headlamp=off","--height-tint=on",f"--height-center-m={height_center:.6f}", + f"--height-range-m={height_range:.6f}","--light-direction=-0.42,-0.58,0.70", + "--fog=on",f"--fog-start-m={fog_start}",f"--fog-end-m={fog_end}", + f"--fog-color={fog_color}"] + run_step(f"capture-{stem}-render",renderer_command, + out/"logs"/f"capture-{stem}-render.log",env=env,stamped=True) + run_step(f"capture-{stem}-jpeg",["ffmpeg","-nostdin","-hide_banner","-loglevel", + "error","-y","-i",png,"-frames:v","1","-q:v","4",image], + out/"logs"/f"capture-{stem}-jpeg.log",env=env) + quality = run_step(f"capture-{stem}-quality", + [sys.executable,ROOT/"Standalone/Tools/verify/capture_quality.py",image], + out/"logs"/f"capture-{stem}-quality.log",env=env) + if "[CaptureQuality]" not in quality or not image.is_file() \ + or image.stat().st_size > 300_000: + raise RuntimeError(f"{stem} capture failed quality or size checks") + eye_height = "1.600m" if view_name in ("eye", "cloud-up") else "wide" + print(f"[L143Capture] fixture={name} view={view_name} eye_height={eye_height} " + f"camera_m=({fmt(camera)}) target_m=({fmt(target)}) bytes={image.stat().st_size} " + f"sha256={sha256(image)} status=PASS",flush=True) + + +def run_road_walk_audit(fixture: Path, view, *, headless: Path, + out: Path, env: dict[str, str]) -> None: + camera = view["eye"][0] + run_dir = out / "road-walk-audit" + run_dir.mkdir(parents=True,exist_ok=True) + output = run_step("road-walk-audit",headless_command(headless,fixture,camera, + run_dir/"audit.vfmesh",run_dir/"manifest.json",run_dir/"layout.json",12,1, + audit_road=True),out/"logs"/"road-walk-audit.log",env=env,stamped=True) + if not re.search(r"\[LiminalRoadWalkAudit\].*status=PASS",output): + raise RuntimeError("raised road failed the Core capsule walk audit") + + +def run_road_short_negative_control(fixture: Path, view, *, headless: Path, + out: Path, env: dict[str, str]) -> None: + camera = view["eye"][0] + run_dir = out / "road-short-negative-control" + run_dir.mkdir(parents=True,exist_ok=True) + output = run_step("road-short-negative-control", + headless_command(headless,fixture,camera,run_dir/"control.vfmesh", + run_dir/"manifest.json",run_dir/"layout.json",12,1,audit_road=True), + out/"logs"/"road-short-negative-control.log",env=env,stamped=True, + expected_exit=14) + match = re.search(r"\[LiminalRoadWalkAudit\].*path_length_m=([0-9.]+).*status=FAIL",output) + if not match or float(match.group(1)) >= 300.0: + raise RuntimeError("short-road negative control did not falsify the length gate") + print(f"[L143RoadNegativeControl] path_length_m={match.group(1)} " + "expected=FAIL status=PASS",flush=True) + + +def retain_unchanged_captures(artifact_dir: Path) -> None: + reference_dir = Path(__file__).resolve().parents[1] / "Linux142" / "captures" + for name in ("flatField-monolith", "periodicHills"): + for view in ("eye", "wide"): + filename = f"{name}-{view}.jpg" + source, destination = reference_dir / filename, artifact_dir / filename + if not source.is_file(): + raise RuntimeError(f"missing L142 reference capture {source}") + shutil.copy2(source,destination) + if sha256(source) != sha256(destination): + raise RuntimeError(f"unchanged reference capture copy differs: {filename}") + print(f"[L143Capture] fixture={name} view={view} retained_from=Linux142 " + f"sha256={sha256(destination)} status=PASS",flush=True) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", type=Path, default=OUT_DEFAULT) + parser.add_argument("--artifact-dir", type=Path, default=CAPTURE_DEFAULT) + parser.add_argument("--headless-clang", type=Path, required=True) + parser.add_argument("--headless-gcc", type=Path, required=True) + parser.add_argument("--renderer", type=Path, required=True) + args = parser.parse_args() + + out = args.out.resolve() + artifact_dir = args.artifact_dir.resolve() + fixture_dir = out / "fixtures" + for directory in (out,fixture_dir,artifact_dir): + directory.mkdir(parents=True,exist_ok=True) + env = os.environ.copy() + env["VOXELFORGE_VERIFY_OUT"] = str(out) + env["VOXELFORGE_OWNER_DATA"] = str(ROOT/"Standalone/data/owner_world.json") + env["LP_NUM_THREADS"] = "12" + env["XDG_CACHE_HOME"] = str(out/"xdg-cache") + run_step("build-fixtures",[sys.executable, + ROOT/"Standalone/Research/WorldAssemblerM3/Linux143/BuildL143Fixtures.py", + f"--out={fixture_dir}"],out/"logs"/"build-fixtures.log",env=env) + + binaries = {"clang":args.headless_clang.resolve(),"gcc":args.headless_gcc.resolve()} + fixtures = { + "flatField-monolith":fixture_dir/"liminal-flatField-monolith.json", + "periodicHills":fixture_dir/"liminal-periodicHills.json", + "road-in-clouds":fixture_dir/"liminal-road-in-clouds.json", + "pillar-grid":fixture_dir/"liminal-pillar-grid.json", + } + probed = {} + for name,fixture in fixtures.items(): + probe_dir=out/"plan-probes"/name + probe_dir.mkdir(parents=True,exist_ok=True) + camera=(0.0,0.0,-500.0) + output=run_step(f"plan-probe-{name}",headless_command(binaries["clang"],fixture, + camera,probe_dir/"probe.vfmesh",probe_dir/"manifest.json", + probe_dir/"layout.json",12,1),out/"logs"/f"plan-probe-{name}.log", + env=env,stamped=True) + if "[WorldAssemblerFullManifest]" not in output: + raise RuntimeError(f"{name} probe omitted its full plan manifest") + probed[name]=make_views(name,probe_dir/"manifest.json",probe_dir/"layout.json") + + for name,fixture in fixtures.items(): + run_determinism(name,fixture,probed[name],binaries=binaries,out=out,env=env) + run_determinism("pillar-grid-far-lod",fixtures["pillar-grid"],probed["pillar-grid"], + binaries=binaries,out=out,env=env,max_level=-1,far_lods=True,max_clip_override=8) + run_road_walk_audit(fixtures["road-in-clouds"],probed["road-in-clouds"], + headless=binaries["clang"],out=out,env=env) + run_road_short_negative_control(fixture_dir/"liminal-road-short-control.json", + probed["road-in-clouds"],headless=binaries["clang"],out=out,env=env) + retain_unchanged_captures(artifact_dir) + for name in ("road-in-clouds", "pillar-grid"): + fixture=fixtures[name] + export_and_capture(name,fixture,probed[name],headless=binaries["clang"], + renderer=args.renderer.resolve(),out=out,artifact_dir=artifact_dir,env=env) + return 0 + + +if __name__ == "__main__": + try: + raise SystemExit(main()) + except Exception as error: + print(f"[L143Capture] status=FAIL error={error}",file=sys.stderr,flush=True) + raise SystemExit(1) diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/REPORT.md b/Standalone/Research/WorldAssemblerM3/Linux143/REPORT.md new file mode 100644 index 0000000..cd177f6 --- /dev/null +++ b/Standalone/Research/WorldAssemblerM3/Linux143/REPORT.md @@ -0,0 +1,64 @@ +# L143 — liminal polish + +## Captures + +### Road + +Eye-height: + +![Road deck at eye height](captures/road-in-clouds-eye.jpg) + +Wide: + +![Road deck and supports, wide view](captures/road-in-clouds-wide.jpg) + +Looking up from the cloud floor: + +![Road deck underside from the cloud floor](captures/road-in-clouds-cloud-up.jpg) + +### Pillar grid + +Eye-height: + +![Pillar grid at eye height](captures/pillar-grid-eye.jpg) + +Wide: + +![Pillar grid, wide view](captures/pillar-grid-wide.jpg) + +### Kept from L142 + +These four captures are byte-identical to L142. + +![Monolith, eye view](captures/flatField-monolith-eye.jpg) + +![Monolith, wide view](captures/flatField-monolith-wide.jpg) + +![Periodic hills, eye view](captures/periodicHills-eye.jpg) + +![Periodic hills, wide view](captures/periodicHills-wide.jpg) + +## Result + +The road is one continuous swept deck, and the distant pillar silhouettes remain complete and consistent. The monolith and periodic hills were retained unchanged. + +## Changes and causes + +- The road edge broke where independently capped deck segments overlapped. The road now resolves to one swept-deck stamp with a shared cubic-Hermite centerline and continuous cross-section; the centerline is sampled at 1 m spacing (361 points). The 8 m deck is 376.829 m long and retains 17 support posts. The sweep path is serialized in stamp-vocabulary V5. +- Pillars disappeared or narrowed when the coarse marching-cubes lattice skipped their cross-section. The pillar stamp's interval proof is unsupported, so it conservatively kept tiles but did not protect the mesh from undersampling. At LOD4 the sample spacing is 32 voxels (8 m), already greater than the 5.5 m pillar radius; spacing rises to 64 and 128 voxels at LOD5 and LOD6. The shared meshing path now emits deterministic 24-sided capped-cylinder proxies for regular `fillPillar` stamps once the sample step exceeds their radius or half-height. The same rule applies outside the liminal fixture. The radial approximation error for this fixture is about 4.7 cm, below one 25 cm voxel. + +## Measurements + +- Road walk audit covered the full 376.829 m route at 1,081 surface stations, with 68,103 capsule samples and 7,096 support samples: 0 blocked, 0 unsupported, 0 grade failures, and 0 surface misses. Measured maximum grade was 8.512° against a 15° limit; deck width was 8 m against a 3 m minimum. `road-short-negative-control` failed the walk audit as expected at 210.351 m. +- Determinism covered five fixtures—monolith, periodic hills, road, pillar grid, and far-LOD pillar grid—across Clang/GCC and W1/W8/W12 (six compiler/worker cells per fixture). All five reported identical outputs. +- Clang and GCC builds passed on source stamp `1baa3a711f7f96df2e70fc93579f41ad0b0211eb42fcb51dabf522e33d888877`. The capture runner and capture-quality checks passed for all requested views. +- Fast tier passed in 292.3 s. Its pinned L130-v227 reach-unit owner hashes match exactly: 12/12 rows for each owner fixture, with W1 and W12 identical. Historical L46/L53 hash comparisons remain diagnostic-only and are not the current owner-hash gate. + +## Checks and limits + +- Passed: road audit and short-road negative control; five-fixture Clang/GCC determinism; Clang and GCC builds; capture quality; fast tier; `git diff --check`. +- Not run: Unreal build (no Unreal `Source/` files changed) and L80 performance timing (this round made no performance claim). +- The coarse proxy is limited to regular `fillPillar` stamps; irregular pillars and other stamp kinds continue through their existing SDF path. The proxy was exercised at LOD4–6 in the pillar-grid captures. +- Unreal `Source/` files changed: none. Changed standalone source files: `Standalone/Core/include/VoxelForgeCore/VoxelForgeCore.h`, `Standalone/Core/src/ResolvedLayoutInternal.h`, `Standalone/Core/src/ShapeWorldInternal.h`, `Standalone/Core/src/VoxelForgeCore.cpp`, `Standalone/Source/StreamBenchmarkHeadless.cpp`, `Standalone/Source/StreamBenchmarkPipeline.h`, and `Standalone/Source/WorldAssemblyPrototype.h`. + +Detailed logs are in `Saved/Linux/l143/`; the capture and audit transcript is `Saved/Linux/l143/logs/capture-runner.log`, the walk audit is `Saved/Linux/l143/logs/road-walk-audit.log`, and the fast-tier summary is `Saved/Linux/l143/fast-summary.json`. diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-eye.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-eye.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13eb05226c68fa203b35cb08c2c8e4b0d13fc301 GIT binary patch literal 26523 zcmeHv2{@Ep|NmG*WtXx`DGz1K60#(z5XzFWM~fo+RtCLzQq~$VWl3QOA$#^@3o$X4 zkli#P`#NL$pL?Gkf^kfsE8QLq0PJqe72 zjD&0}#TGJh7$sDXgp>?u5GBtPmpEjnxP^z}tYe0Qw^;h|GM|h8+N1UC%{cRpy250zzXc#*ywz4UabGJT=Zb@m(O_$vrJz+{xz;JYrg`k zE?F`tDd;WkUM?1%pY@Da$b2#2`QfzuLhs0s^lZfm{FFgSx1(C0eB~%DXLsS3;9V@* zsh`gFIVaSl34fAZfnhxR7J@0c4Hj)WOafe1VBAZ{DmRyD&-%L7dCj>M*nrISv-bX3 zLov^j6oQwQLKfu)I|{7li!zz$7;|rQW?VNz*&RFjPs8_bw3q92pV${xF?O>n9x+02 zn!8aL25yIiV-0~*SXy_N8MV5m8PU?*#j)t;_~^1-Z?WA4Ncdm_7iB171*O?zCPoW3HBJ&!m%TI7A4pHb8x!5_~Y~Wm{{YVztaG>dt+1Xr2D%_ zJult<8!`K5sSwf}eYViH!WVF5?W#JLZe;PNK_Xx>e;G ze2U}_nh0Awp2yp$3~Ad|9#dv zz%@tO@#*8|d@BT!P3SZo>zqz|ikF*DAcIq;V>?+?Zw*ErF`r+;t-zR7@$qOJP3 zf9_xINXT92o;|6kgr$pntHFEb1>!x6<*=q@4FS`hPAWpu^Pa(INViQ`Xhz^mSShy^ z!f<;9&Vr{##Xb$$x!XrYNTMs<<;5_$bhR+1h^YZtG*qmL;eM9dD*38bTcJ()Tynf9 zm#!Xjg?7}kowD5g^G!u2o0b%0ySrfh7J)?Qd!*g~8 zmNaeaVZ+Tw`DtQuYHHa;fl>iGHNHfCi!$<`<-)(uT1xf``7xRq&uyAJ777nHFY>#} zjHNvBpe-1_Is=#M+|>o9Tt4Nwf~uOV9rA_l|_%`&C{zLeR+%*$u@SrpvCEqQY2!bdkv>sOj9ec+$FsP z?D}_~%@0lIOKt6FPf~(|XlPTivae z)4Wp&ZA&I}E)Y`H#1Ko_LWewvZ17?XV3S20WdT^B+;G{p$Bvtypo5VghM?+*QZ3l` zQi&Id?h-0cq}5Ujg_m>HAuB^%sv+J zb1E>?GQ4bkUi)#v9G$^Ju5cvE1xh>Ri%xaS%DcSB=@3I z(Oe%YjYs{*JcE%M!MqCzR4R%}xVN+SPS7x~k)i?CcK<3T>d9m~Yxd0I&bjf8ThUir zL2=ejWzUhkgk7G4$j~m$M%c#5ivydnfL2^4t~YRmy>Vl1De#m8XePsJQe68o7xY3Dt(TOIzMM884H>W1D^=hz{IiJxJx%7Zy>XbasFwf3f17!+a2@KBr3dmzAMVGM>t=u696>R-&NnR=Zh{fgB(R5#t+UVx?I zO!3{pBVEHL2d?2_WHjdTTWi`~dg|nYs4;D25yBzS2VFek<&~x`A)}GIKWAv>+x|Mp z51$xiq$at*OX8I>sat%G_k_6VI852(oEvXivK->WZjSA!*45pz3$kE!zdV8+8GQ++ zEkcRXbkvwrT4>fS?lt1`pvHUv0Tn5ofnUbSpC4Q5P7FRXd3)1B@q>={t`XizZuB*X z|M2e4uCtYgoS>+x9dx|F*D0mgFc9t7yS-5h-~W-9g){@~whRW6;V(`FSd@Z|aq){; z730Bg@dVcGZiPi%gV4f#ZH5{^HWSwHiG9Ds=hkV7y>Vpx%9AQEKlP%+jzr?k3uZ)z ze!jig2rLfyBTuTT6Z)U`=MBKaJ!GPViA#wKt%L`}c#>Uf~fG zt)S91r;j(#SY%B|FAaB-a=-?yz$hhu#?wX+t>yPjgktpAMVWBw`TWWAkeG`{X~9O-xmNmVP29uDU*{a zlj(cBq0O=GD541S;k!Jzgk4(YK^tYGm~Ovjb?tivWglaL`KOWuVhV4bM9wzo;PE#_ z3EJ`VnkjD$U3#MzTs3#PPI>!Enh0R4hP||&e?7F&U|XJCo;wfL@Xkg27&u?cfDqTi!D6Oi`(2!_nN^Xr2PbfpLWUvz zOi144666=}53;747K9&kTpqlUmG6^}=A*Nj8ilZ$Um`}A)03Pr7Nw!-;;?S1>PCVA zykBrfA*%nu5F<6)0p2W%ZGHt!yHAKy-X@iq)4XUrXi@q)-^kgEqe@_^gNV^iyn7=% zSPEtiYDDzP=knN2C#a7{8{B_2T=7J<$L?ydl(hXoG)rV2U!`!{$(OFLe_-gQ6~jlC z-OJtOHMTD<+$F#xPE9{w?LM^pqWlqvil0OL9{YSJ<9p z$53mF($Yd>z-|Lbp}CuGMYhK-Bl^0fe9!YRe&shiTpYpXD?$_#>jakxV5(RUnF-## zSt0mQzv&{9K4JVy&WZYmyBD3pL=OkVCPdnC%it=61DonojXH^A7!QP1-g;ohC*D&Kn z?z+2**|Wi}y(=)9eh%haPFKF@SK7_R+_>sE@d*_Wh z&i-9Or;0)d1nV!E?Is1m785_}(WaH-Z+Wc17^YI;TC>q57?%wA?dHY9TfA_ zw3oQ;Ed|@&f(qOzz<+`8V(3|gdM_vc>xEXjnnu@?sbg6|T7&G=fBoc75obo?S4fuqC*;r+Z)CCq(wL zpi&%qID1{-%mbG9%p_hie&J-ly1|jTwa~&Y&&9vii;4HuN5yg(MXE4W8>&GK%C1)) z=R)4dX#Z<2l{*xLv9=ha_}I|JP;hWI1O$+9XH}N#?M(~74>}I7Pyo?WpEtoUH?}w& zy`xxIA+e-WDsnk~1?JdCSd^ArFed{c)D8vDYiG09;2k1K05kJJ(*O!OlBYp2&z|-g zckdgS90ackg^cn(q3VfW(t?sh82L>|&#yF^pWvSsg62>3k| zIYGk$USpg+L*}~yry(v_q$WFIjF{CWv_*9#w8faUMWyfE3zm8mh1vGpbom}vZ_h^7 zZ1#MTNki@qZ=VH65HoXSowL>p?vHpH;(WI4gzb3#;AzEKZT-r9{;= z>U)gpXv4)o%N>ZPt7CoKqUtuOfL}PZov;mJ7VqfADD9$FbLY+FHDABtIiyDaY%hV= z&DUomRhvDZvU)t)IvU?)8*Pm&N0^vVIqvrH+sX1?D+Y3Mc#9~#I2W}=xvuPUk_u=< z;|SpG4M#x*wsb4P&|`PsF7o{c##PwddE{TLeDp zh?_GjtF!E-@OnzEtX&gM7U%|_MdqTf_xJ=EH4Z&{8794}b{KMaq2+mnn9!JfYi)H$ zU1n_^Wu4~Jt4qq(h!^}Yr@q_n z^yY*NZUGf{#SAJn{favhF`>+&v8)0&wU3^dJn<47AXGA_X&12vFg4ENbtJ)>$v^2| z-VZzri=Xox64}P0aC6+lzeldscOX%AJ+zFA07~rkRTi#u043`>Ic&oY-i?gi)cF)1 ztC7SiRd4BuHJrc9@%XTFBzwvJQH)p4)s8MvN$3Kf2}+T>e}1UylDrOra7m(ctEKWC z7)n#%qd2Po*gWh&NO&Pmk+RiPdOv_Ray3uYI0{hMqoQw%X9+#0aDLxMDP;{MVl4ec zY2$%N;UP@qJ65UU8$^_jOj?gfu|t;wSKN#GnV`!qGz8GjTj_0dp}fWSTLI}!L(e~Q zVTW{do_X=}lBn=f@T6dGkW?2H8yj~E+<9~I(1cTp=|Hz|64izvt%uS#kl22P()XYO zAVrvfNr_cEIB(~?8b*35=Gx?J>r(o1=BFq;h$_}H4kF73-iDBn2xwwE&=w%~=czAr$RqnFZ+=I?{tRgz-_J6^2 zsZSW7KK!J@@4*M7JW`Pt+SLI^@%c?1D9XXB8s-&APu!~;LgPm zLMm<&VG=Uzikz<~gf19xRN{3Xn#PlMv=OzFFPqcf#7Ae`t+>)Cic8V2RP!5JoD+v#XUaE1x_YI*`2+&XE8 z^^Jgl@&1X<_h4De1L#E7jA5|+vf7W0Mq(eL&=DAL?&}ZWj0zUJ8TZD6g;_CsZL)#08drO>79bH&|1F>&*XNYE1+R~>SKw2;Mo??#;)YP4{*2)G$^ zGA|!GqsIYGgV9P9RTQCNvw`$V6#lX>t(a%AtVseeCEhG@`^lr`a&P*NIuPd}D{77o zR7;@;g9h zy`b}W-=-Y4uD&juj~m5ZoCXyUqj&grAU0s^HAs|4%9Dj{egxu3`6i(p1N2YgTzfweRG2JB#4~M zaL>UmB1-IK+_NLJMo|1P8K=iknbIBI0{$HMmR~sOR=3?$m$6DG#0-UC(yeZ_MI$WI zxoSxi(t5Qc6w;Z6Q6nr0SJ#QH`g8J(@pvE;ga58kg9O%h<%4-kT@JXUfzhfkuE58p z{WVjQSE5_TyH2B1cS_&>zUBW1xuk+-PTS(1XD3RAYU$`VMW`kU2wqo5>4fgg-rty{ z>aQPiO?RJiib_@z;#oVtWa!{&UyHc*U8qBxF(HZD8z0j)s5Jdb%)EYV5M(waZjXEG z?5`0g6vETa&vri_l+XH&NYeiV5It=d1R@P@NHm?Gn58elb4&ZTnS)2<8!VcB#V8SP zgBDkz3Ppm{3(B!toZ?wxBRc~%ti$zLXZ=qk99D<&^M)LZ#KlH9Ic9h;YD$s~4QTC% z_^_}Wv9V8}5(hg@o|MzDe%M%-<>=7#X;6KmjBx!6IYB|UB0I&iGN9I^^RHdM+%6+M zv(=c0FW)RA1{_nE5)+)YBANeb7 zm3>w8U!+!brAS_3nGH(SkL={n6sgK`vTOP@jDk|mc1;6+lCocyI(;wo`?~6n@5sew zh5>I`y%SyS80N~wV2h#t#OhWxDD~w(NVPo*238@&BJ7`srhlw2vp zh5LmmHbAe}m)j=s|qb!=Y8ma0WQS}T>(BX07e{f?jUQ6QGu6V6y?Z+A{j32&r zez2HAoB*zI*ASOGpt zyl$U+#3@1bT1#DG}Moyc@-4- zRv(mEZHSnFf3GlT4`?N}*XV9>s6aUesWS5vv;y5TvCckPgRutkdKSt;;S#_3nWfbZ z{q$Fs0Xl0&cKYeBRt}5Sr%wGivLlP|{xaz1>is>CTH%fIV#0{3KKU7($RQd7m4=M^ zEBDm*enxyP-UqVu`5mLRs8bs(P>t@V)(qbLM-zZFzQq?Rd@Y-YD7--|8%C^p4aL_4 zwRBBo2C5mZMKnJCA!K~RzYC$7KnN+lhT7i*n%(~}LW?8yeYpOOQ}zYNh&ob!LB%)u z3S`BE0Z~$;A0$dv-B`3*YlI4_bs%dGR10+RYlFb9HPH_n{7o&;)r}hb??iioCE6L( zl*_Lqjf_>z-E?u`i)m_h$gD0v?W{|>d0a-kjimv>Q({JT-nK*XD96yVjO5*=wTT(Y zf~L};N=E1O$s%+lnlF*mq_SIPfC-?J?FTpN0=pTAkg%<7%?ztzRK`;tX$sZ&3y6RvR8#2Q-1lgpX}6Y z%nRm|WIu(+)*lhucIl-@W@30}yHEpjgG^$Q7!x@B-*UuXiT{SoeP|qGt}BItzNjbC zg3&A}87FP@Y)4l6{~yscVuQLUVuR-%5_RdHg>>lxk$fDhF3?5zOS-<+0v2x6;5X49 z`^67*8O2~!H4`cHEV3Fyh7?2F1;yhC_b)s9tMkietqN1VEBtLuEzA(`mLTZQdnn2U zi8UM4G>J8V5Na0c5olIfXjRLO{59zyRQMV3r;%VivC^O3En3h>HHTG3Y5drrw)$IH zFcy%5J_AuFAUB9$Ad(~AExz)PAd#H_i-KCfrh15CKsXUO5kw|LZmT~bK59^l1H1&8 z43QbcPx_L_i|oI{xenbG@3t-xaclS}}xL&=Z6NwNTA( znSa*o?{q^2p)aHYe81Te3hepb_YXF%H&%1|;B(Tyevxy9%?ZP}usyHckb$OhwUsZq zu>I%h>?dAOrm?-g^@CfUYYW-OLQ9fSV~N{y!ffB#0C{lLKvT)Kn7!~Z^LGo1FI)th zuiu?4yO)$^$<`w8C)BabeIzx_Dm_VU&>8$!W8b=w1G6@y?aO_`VG$K*$tj(w^f)JPS*tQT5My?SGsSa& z#_ZOs>wF*3S!wMw7xlItpJN-E^*LUw#k>0IJ$&Iei}V|I{Eczoj}x13w)jn>Y4 zqmR1jp6a3=wu*V>y46XJ>xfQ`Jzq)ug3ySByQ7~lAVXOd^hob@C@aDOy!?A ihba0VGxw)CKRxi%13x|R(*r*}@Y4hTn;xKBY5RXc_m5ft literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-wide.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/flatField-monolith-wide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3975e8ae20d5aff093f2c6b6a46c1988bb15d244 GIT binary patch literal 23358 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 BeH{P* literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-eye.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-eye.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92ba34ac5a8a18214eabea40811f3d28c32b284d GIT binary patch literal 25065 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 b8d^9dSVcWNEtAsrTKpWq&bx? literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-wide.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/periodicHills-wide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c066a5fcf6028b8c2de48ce7f842f6d8bffc31d GIT binary patch literal 60906 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/pillar-grid-wide.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/pillar-grid-wide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94bc81e0cdcd9cc7967d00f093ec3c6d4ead00f4 GIT binary patch literal 74691 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�|>&|P0 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/WorldAssemblerM3/Linux143/captures/road-in-clouds-wide.jpg b/Standalone/Research/WorldAssemblerM3/Linux143/captures/road-in-clouds-wide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80984a340b4eb45516fe4a64a6b30baed71f18d4 GIT binary patch literal 45695 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 G@V@|M3;?JA literal 0 HcmV?d00001 diff --git a/Standalone/Source/StreamBenchmarkHeadless.cpp b/Standalone/Source/StreamBenchmarkHeadless.cpp index d8ed139..8051136 100644 --- a/Standalone/Source/StreamBenchmarkHeadless.cpp +++ b/Standalone/Source/StreamBenchmarkHeadless.cpp @@ -1935,15 +1935,24 @@ int main(int argc,char** argv) std::sort(deck.begin(),deck.end(),[](const auto* a,const auto* b) {return a->stableIdstableId;}); double pathLength=0.0,maxGradeDegrees=0.0; - for(std::size_t i=0;i> centerline; + if(deck.size()==1&&!deck.front()->sweepPathMicrometres.empty()) + centerline=deck.front()->sweepPathMicrometres; + else { - const auto* segment=deck[i]; - const double dx=(segment->sweepEndpointsMicrometres[1][0] - -segment->sweepEndpointsMicrometres[0][0])/1.0e6; - const double dy=(segment->sweepEndpointsMicrometres[1][1] - -segment->sweepEndpointsMicrometres[0][1])/1.0e6; - const double dz=std::abs(segment->sweepEndpointsMicrometres[1][2] - -segment->sweepEndpointsMicrometres[0][2])/1.0e6; + for(std::size_t i=0;isweepEndpointsMicrometres[0]); + centerline.push_back(segment->sweepEndpointsMicrometres[1]); + } + } + for(std::size_t i=1;ihalfExtentsMicrometres[1]/1.0e6; std::printf("[LiminalRoadResolved] vocabulary=%u id=liminal/road-clouds-v2 " - "strate=%d shape=swept_deck_segments deck_segments=%zu supports=%zu " + "strate=%d shape=continuous_swept_deck deck_stamps=%zu centerline_points=%zu supports=%zu " "path_length_m=%.3f width_m=%.3f grade_max_deg=%.3f " "placement=free route_keepout=PASS band_clearance=PASS status=%s\n", resolvedLayout.stampVocabularyVersion, - deck.empty()?-1:deck.front()->strateIndex,deck.size(),supportCount,pathLength, - width,maxGradeDegrees,deck.size()>1&&pathLength>=300.0&&width>=3.0 + deck.empty()?-1:deck.front()->strateIndex,deck.size(),centerline.size(), + supportCount,pathLength,width,maxGradeDegrees, + deck.size()==1&¢erline.size()>=2&&pathLength>=300.0&&width>=3.0 &&maxGradeDegrees<=15.0?"PASS":"FAIL"); - if(deck.size()<2||pathLength<80.0||width<3.0||maxGradeDegrees>15.0) + if(deck.size()!=1||centerline.size()<2||pathLength<80.0 + ||width<3.0||maxGradeDegrees>15.0) {std::fprintf(stderr,"Liminal road resolved outside the walkable road bounds\n");return 2;} } if(hasLiminalPillarGrid) diff --git a/Standalone/Source/StreamBenchmarkPipeline.h b/Standalone/Source/StreamBenchmarkPipeline.h index dab5001..8cb1410 100644 --- a/Standalone/Source/StreamBenchmarkPipeline.h +++ b/Standalone/Source/StreamBenchmarkPipeline.h @@ -2981,28 +2981,48 @@ namespace StandaloneStreamBenchmark constexpr double HalfCapsuleHeightMetres=CapsuleHeightMetres*0.5; constexpr double SlopeCapsuleClearanceMetres=0.12; std::vector> roadPath; - roadPath.reserve(deck.size()*4); std::vector> centerline; - centerline.reserve(deck.size()+1); - bool surfacePathValid=true; - for(std::size_t i=0;ikind + ==VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment + &&deck.front()->sweepPathMicrometres.size()>=2; + bool surfacePathValid=continuousDeck; + if(continuousDeck) { - const auto* segment=deck[i]; - if(segment->kind!=VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment) - surfacePathValid=false; - const auto point=[&](std::size_t endpoint) - {return std::array{ - segment->sweepEndpointsMicrometres[endpoint][0]/1.0e6, - segment->sweepEndpointsMicrometres[endpoint][1]/1.0e6, - segment->sweepEndpointsMicrometres[endpoint][2]/1.0e6};}; - const auto a=point(0),b=point(1); - if(i==0)centerline.push_back(a); - else if(std::abs(centerline.back()[0]-a[0])>1.0e-6 - ||std::abs(centerline.back()[1]-a[1])>1.0e-6 - ||std::abs(centerline.back()[2]-a[2])>1.0e-6) - surfacePathValid=false; - centerline.push_back(b); + centerline.reserve(deck.front()->sweepPathMicrometres.size()); + for(const auto& point:deck.front()->sweepPathMicrometres) + centerline.push_back({point[0]/1.0e6,point[1]/1.0e6,point[2]/1.0e6}); + surfacePathValid=surfacePathValid + &¢erline.front()[0] + ==deck.front()->sweepEndpointsMicrometres[0][0]/1.0e6 + &¢erline.back()[0] + ==deck.front()->sweepEndpointsMicrometres[1][0]/1.0e6; } + else + { + centerline.reserve(deck.size()+1); + surfacePathValid=true; + for(std::size_t i=0;ikind + !=VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment) + surfacePathValid=false; + const auto point=[&](std::size_t endpoint) + {return std::array{ + segment->sweepEndpointsMicrometres[endpoint][0]/1.0e6, + segment->sweepEndpointsMicrometres[endpoint][1]/1.0e6, + segment->sweepEndpointsMicrometres[endpoint][2]/1.0e6};}; + const auto a=point(0),b=point(1); + if(i==0)centerline.push_back(a); + else if(std::abs(centerline.back()[0]-a[0])>1.0e-6 + ||std::abs(centerline.back()[1]-a[1])>1.0e-6 + ||std::abs(centerline.back()[2]-a[2])>1.0e-6) + surfacePathValid=false; + centerline.push_back(b); + } + } + roadPath.reserve(centerline.size()*4); double pathLengthMetres=0.0,maxGradeDegrees=0.0; std::uint64_t surfaceProbes=0,surfaceMisses=0; const auto surfaceTopAt=[&](double xMetres,double yMetres, @@ -3010,11 +3030,18 @@ namespace StandaloneStreamBenchmark { ++surfaceProbes; double low=nominalTop-0.25,high=nominalTop+1.0; - if(Shape.densityAt({xMetres/coreMetres,yMetres/coreMetres, - low/coreMetres})>=0.0f - ||Shape.densityAt({xMetres/coreMetres,yMetres/coreMetres, - high/coreMetres})<0.0f) - {++surfaceMisses;return false;} + const float lowDensity=Shape.densityAt({xMetres/coreMetres, + yMetres/coreMetres,low/coreMetres}); + const float highDensity=Shape.densityAt({xMetres/coreMetres, + yMetres/coreMetres,high/coreMetres}); + if(lowDensity>=0.0f||highDensity<0.0f) + { + ++surfaceMisses; + std::printf("[LiminalRoadSurfaceProbeMiss] x_m=%.6f y_m=%.6f " + "nominal_top_m=%.6f low_density=%.6f high_density=%.6f\n", + xMetres,yMetres,nominalTop,lowDensity,highDensity); + return false; + } for(int iteration=0;iteration<20;++iteration) { const double middle=(low+high)*0.5; @@ -3059,8 +3086,7 @@ namespace StandaloneStreamBenchmark const FWalkAudit roadAudit=auditPlayerPath(Shape,roadPath, 0.125,0.125,1.125,3,0.45); const double widthMetres=2.0*deck.front()->halfExtentsMicrometres[1]/1.0e6; - passed=std::all_of(deck.begin(),deck.end(),[](const auto* road) - {return road->kind==VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment;}) + passed=continuousDeck &&pathLengthMetres>=300.0&&widthMetres>=3.0 &&maxGradeDegrees<=15.0&&surfacePathValid&&roadAudit.passed; std::printf("[LiminalRoadWalkAudit] id=liminal/road-clouds-v2 " diff --git a/Standalone/Source/WorldAssemblyPrototype.h b/Standalone/Source/WorldAssemblyPrototype.h index 8897078..b0aac21 100644 --- a/Standalone/Source/WorldAssemblyPrototype.h +++ b/Standalone/Source/WorldAssemblyPrototype.h @@ -707,26 +707,16 @@ namespace StandaloneWorldAssemblyPrototype requests.push_back(std::move(request)); }; const std::int64_t deckSmoothUm=250000; - const std::int64_t segmentOverlapUm=350000; - for(std::uint32_t i=1;i(b[0]-a[0]); - const double dy=static_cast(b[1]-a[1]); - const double dz=static_cast(b[2]-a[2]); - const std::int64_t halfLengthUm=static_cast(std::ceil( - std::sqrt(dx*dx+dy*dy+dz*dz)*0.5))+segmentOverlapUm; - ResolvedLayoutStampRequestV1 request; - request.stableId=*id+"/deck/"+std::to_string(10000+i-1).substr(1); - request.strateIndex=strateIndex; - request.kind=ResolvedSdfStampKindV1::fillSweptDeckSegment; - request.anchorPositionMicrometres={ - (a[0]+b[0])/2,(a[1]+b[1])/2,(a[2]+b[2])/2}; - request.sweepEndpointsMicrometres={a,b}; - request.halfExtentsMicrometres={halfLengthUm,halfWidthUm,halfThicknessUm}; - request.smoothWidthMicrometres=deckSmoothUm; - requests.push_back(std::move(request)); - } + ResolvedLayoutStampRequestV1 deck; + deck.stableId=*id+"/deck/000"; + deck.strateIndex=strateIndex; + deck.kind=ResolvedSdfStampKindV1::fillSweptDeckSegment; + deck.anchorPositionMicrometres=path[path.size()/2]; + deck.sweepEndpointsMicrometres={path.front(),path.back()}; + deck.sweepPathMicrometres=path; + deck.halfExtentsMicrometres={500000,halfWidthUm,halfThicknessUm}; + deck.smoothWidthMicrometres=deckSmoothUm; + requests.push_back(std::move(deck)); const std::int64_t supportBaseUm=fieldFloorMicrometres-2000000; const std::int64_t supportRadiusUm=metresToMicrometres(supportRadius); double distanceSinceSupport=supportSpacing;