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
@@ -0,0 +1,46 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$Root = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..\..'))
|
||||
$Viewer = Join-Path $Root 'Standalone\bin\VoxelForgeCoreStandalone.exe'
|
||||
$Data = Join-Path $Root 'Standalone\data\owner_world.json'
|
||||
$SeedFile = Join-Path $PSScriptRoot 'seeds.txt'
|
||||
$LogDir = Join-Path $Root 'Saved\Linux'
|
||||
[IO.Directory]::CreateDirectory($LogDir) | Out-Null
|
||||
|
||||
$Recipes = @(
|
||||
@{ Name = 'surface-world'; Camera = '0,-35,-487.94,0,-22' },
|
||||
@{ Name = 'floating-islands'; Camera = '0,0,-32,0,-22' }
|
||||
)
|
||||
$Seeds = @(Get-Content -LiteralPath $SeedFile | ForEach-Object { [int]$_.Trim() })
|
||||
if ($Seeds.Count -ne 48) { throw "Expected 48 seeds in $SeedFile" }
|
||||
if (-not (Test-Path -LiteralPath $Viewer -PathType Leaf)) { throw "Viewer not found: $Viewer" }
|
||||
|
||||
foreach ($Recipe in $Recipes) {
|
||||
foreach ($Seed in $Seeds) {
|
||||
foreach ($Workers in @(1, 12)) {
|
||||
$Arguments = @(
|
||||
$Data,
|
||||
"--seed=$Seed",
|
||||
"--recipe=$($Recipe.Name)",
|
||||
'--render-distance-chunks=0',
|
||||
"--workers=$Workers",
|
||||
'--world-assembler-prototype',
|
||||
'--stream-benchmark',
|
||||
'--stream-pipeline',
|
||||
'--stream-hash',
|
||||
'--force-generate',
|
||||
'--clip-radius=1',
|
||||
'--max-clip-level=0',
|
||||
"--camera=$($Recipe.Camera)",
|
||||
'--far-horizon-lod8-step=0',
|
||||
'--process-affinity=4095',
|
||||
'--process-priority=Normal',
|
||||
'--frame-limit=60'
|
||||
)
|
||||
$Stem = "windows2-seed-$Seed-$($Recipe.Name)-w$Workers"
|
||||
$Log = Join-Path $LogDir "$Stem.log"
|
||||
Write-Host "& `"$Viewer`" $($Arguments -join ' ')"
|
||||
& $Viewer @Arguments *> $Log
|
||||
if ($LASTEXITCODE -ne 0) { throw "Viewer failed ($LASTEXITCODE); see $Log" }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user