wip(assembler): round L2 -- the cross-platform hash check can fail; FP contraction changes the world
Clang -ffp-contract=on/fast and GCC's default (fast) all change the density hash on the L1 view; contraction off reproduces L1 (= Windows S13) at W1/W12. Seed sweep: 48 FloatingIslands seeds and 14 effective SurfaceWorld seeds (34 of 48 fell on a seed-independent cube) match across Clang/GCC and W1/W12. Standalone gains --seed/--recipe/--render-distance-chunks (viewer + headless) and a Windows replay script. Linux standalone workers get 32 MiB pthread stacks (TLS is 17.3 MiB/thread), so no external stack limit is needed. No Core or world-output change; MSVC compile unverified. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1276fd11e3
commit
303b7b9f24
17 files changed
+1401
-13
No files matched your search
@@ -78,6 +78,28 @@ namespace StandaloneStreamBenchmark
|
||||
if(MaxLevel>=0)
|
||||
Desired.Tiles.erase(std::remove_if(Desired.Tiles.begin(),Desired.Tiles.end(),
|
||||
[&](const FVoxelTileKey& Tile){return Tile.Level>MaxLevel;}),Desired.Tiles.end());
|
||||
if(!Desired.Tiles.empty())
|
||||
{
|
||||
FIntVector volumeMin(INT32_MAX,INT32_MAX,INT32_MAX);
|
||||
FIntVector volumeMax(INT32_MIN,INT32_MIN,INT32_MIN);
|
||||
int32 minimumLod=INT32_MAX,maximumLod=INT32_MIN;
|
||||
for(const FVoxelTileKey& tile:Desired.Tiles)
|
||||
{
|
||||
const FIntVector origin=tile.OriginVoxels();
|
||||
const int32 extent=tile.ExtentVoxels();
|
||||
volumeMin.X=std::min(volumeMin.X,origin.X);
|
||||
volumeMin.Y=std::min(volumeMin.Y,origin.Y);
|
||||
volumeMin.Z=std::min(volumeMin.Z,origin.Z);
|
||||
volumeMax.X=std::max(volumeMax.X,origin.X+extent);
|
||||
volumeMax.Y=std::max(volumeMax.Y,origin.Y+extent);
|
||||
volumeMax.Z=std::max(volumeMax.Z,origin.Z+extent);
|
||||
minimumLod=std::min(minimumLod,tile.Level);
|
||||
maximumLod=std::max(maximumLod,tile.Level);
|
||||
}
|
||||
std::printf("[PipelineVolume] tiles=%zu lod=%d..%d min_voxel=(%d,%d,%d) max_voxel=(%d,%d,%d)\n",
|
||||
Desired.Tiles.size(),minimumLod,maximumLod,volumeMin.X,volumeMin.Y,volumeMin.Z,
|
||||
volumeMax.X,volumeMax.Y,volumeMax.Z);
|
||||
}
|
||||
FIntVector FineMin(INT32_MAX,INT32_MAX,INT32_MAX),FineMax(INT32_MIN,INT32_MIN,INT32_MIN);
|
||||
FIntVector ClipMin(INT32_MAX,INT32_MAX,INT32_MAX),ClipMax(INT32_MIN,INT32_MIN,INT32_MIN);
|
||||
for(const FVoxelTileKey& Tile:Desired.Tiles)
|
||||
|
||||
Reference in new issue
Block a user