2 Commits
Author SHA1 Message Date
Fr0zkaandClaude Opus 5.5 303b7b9f24 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>
2026-10-19 18:18:34 +02:00
Fr0zkaandClaude Opus 5.5 1276fd11e3 wip(assembler): round L1 -- Linux baseline on abyss: Linux world identical to Windows
Headless Linux benchmark/hash tool (Clang 19 / GCC 14) sharing the viewer's plan builder and
streaming pipeline (moved verbatim into StreamBenchmarkPipeline.h / WorldAssemblyPrototype.h).
Owner Round17 view: density/mesh/payload/topology hashes equal the Windows S13 reference at
W1/W8/W12 (Clang, 3 runs each) and W8 (GCC), with -ffp-contract=off. No output change.
Baseline (i9-12900H, CPUs 0-11, powersave/balance_performance): whole view W8 3.562 s median,
W12 3.512 s, W1 16.555 s; peak RSS < 605 MiB.
Review: the default-stack crash is 17.3 MiB of static TLS per thread (glibc puts it in the
thread stack; HeightfieldColumnCache 6.8 MB), not recursion -- open, after S14.
MSVC compile of the viewer refactor not verified (no MSVC here).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:18:34 +02:00
23 changed files with 2702 additions and 766 deletions

No files matched your search

+8 -2
View File
@@ -874,8 +874,14 @@ round-2 matched capture source and results are under
[`Standalone/Research/WorldAssemblerM3/Round2/`](Standalone/Research/WorldAssemblerM3/Round2/). [`Standalone/Research/WorldAssemblerM3/Round2/`](Standalone/Research/WorldAssemblerM3/Round2/).
`RefineLod8NativeCap` in [`Standalone/Core/src/VoxelForgeCore.cpp`](Standalone/Core/src/VoxelForgeCore.cpp) `RefineLod8NativeCap` in [`Standalone/Core/src/VoxelForgeCore.cpp`](Standalone/Core/src/VoxelForgeCore.cpp)
replaces coarse LOD8 ceiling surfaces with the planned 2D cap field while retaining ceiling skirts. replaces coarse LOD8 ceiling surfaces with the planned 2D cap field while retaining ceiling skirts.
The standalone SurfaceWorld plan composer and capture/audit entry point live in The standalone SurfaceWorld plan composer (`AttachRound1WorldAssemblyPrototype`) lives in
[`Standalone/Source/StandaloneViewer.cpp`](Standalone/Source/StandaloneViewer.cpp). [`Standalone/Source/WorldAssemblyPrototype.h`](Standalone/Source/WorldAssemblyPrototype.h), and the
streaming benchmark/hash pipeline (`RunPipelinedStreamingBenchmark`, `HashTileRows`) in
[`Standalone/Source/StreamBenchmarkPipeline.h`](Standalone/Source/StreamBenchmarkPipeline.h); both are
shared by the D3D11 viewer ([`StandaloneViewer.cpp`](Standalone/Source/StandaloneViewer.cpp), which
keeps the capture/audit entry points) and the Linux headless tool
([`StreamBenchmarkHeadless.cpp`](Standalone/Source/StreamBenchmarkHeadless.cpp), built by
`Standalone/BuildLinux.sh`; see `Standalone/Research/WorldAssemblerM3/Linux1/REPORT.md`).
`RunStandaloneWorldExport` in `VoxelForgeExploreCommandlet.cpp` serializes owner assets on the game `RunStandaloneWorldExport` in `VoxelForgeExploreCommandlet.cpp` serializes owner assets on the game
thread to schema-v1 JSON. The adapter parses it through `ResolvedWorldSnapshot::FromJson` and keeps thread to schema-v1 JSON. The adapter parses it through `ResolvedWorldSnapshot::FromJson` and keeps
+121
View File
@@ -0,0 +1,121 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ "${VOXELFORGE_LIMITED_BUILD:-0}" != "1" ]]; then
exec taskset -c 0-11 prlimit --as=6442450944 -- env VOXELFORGE_LIMITED_BUILD=1 "$0" "$@"
fi
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
ROOT="$SCRIPT_DIR"
COMPILER="clang++-19"
VARIANT="clang19"
FP_CONTRACT="off"
JOBS=12
while (($#)); do
case "$1" in
--compiler=*) COMPILER="${1#*=}" ;;
--variant=*) VARIANT="${1#*=}" ;;
--fp-contract=*) FP_CONTRACT="${1#*=}" ;;
--jobs=*) JOBS="${1#*=}" ;;
*) printf 'Unknown build option: %s\n' "$1" >&2; exit 2 ;;
esac
shift
done
if [[ ! "$JOBS" =~ ^[0-9]+$ ]] || ((JOBS < 1 || JOBS > 12)); then
printf 'jobs must be from 1 to 12\n' >&2
exit 2
fi
if [[ "$FP_CONTRACT" != "default" && "$FP_CONTRACT" != "off" && "$FP_CONTRACT" != "on" && "$FP_CONTRACT" != "fast" ]]; then
printf 'fp-contract must be default, off, on, or fast\n' >&2
exit 2
fi
command -v "$COMPILER" >/dev/null || { printf 'Compiler not found: %s\n' "$COMPILER" >&2; exit 2; }
command -v ar >/dev/null || { printf 'ar not found\n' >&2; exit 2; }
BUILD_DIR="$ROOT/Build/linux-$VARIANT"
BIN_DIR="$ROOT/bin/linux"
mkdir -p "$BUILD_DIR/wrappers" "$BUILD_DIR/objects" "$BIN_DIR"
INCLUDES=(
"-I$ROOT/Core/include"
"-I$ROOT/Core/src"
"-I$ROOT/Compat"
"-I$ROOT/Source"
"-I$ROOT/Source/VoxelForge/Public"
"-I$ROOT/Source/VoxelForge/Private"
)
FLAGS=(
-std=c++20 -O2 -mavx2 -mfma -fno-fast-math
-fexceptions -pthread "${INCLUDES[@]}"
)
if [[ "$FP_CONTRACT" != "default" ]]; then
FLAGS+=("-ffp-contract=$FP_CONTRACT")
fi
if [[ "$($COMPILER --version | head -n 1)" == *clang* ]]; then
FLAGS+=(-Wno-c++11-narrowing)
else
FLAGS+=(-Wno-narrowing)
fi
CORE_OBJECTS=()
LEGACY_OBJECTS=()
PIDS=()
wait_oldest() {
local pid="${PIDS[0]}"
wait "$pid"
PIDS=("${PIDS[@]:1}")
}
compile_background() {
local source="$1" output="$2"
"$COMPILER" "${FLAGS[@]}" -c "$source" -o "$output" &
PIDS+=("$!")
if ((${#PIDS[@]} >= JOBS)); then wait_oldest; fi
}
while IFS= read -r source_name || [[ -n "$source_name" ]]; do
source_name="${source_name%%#*}"
source_name="${source_name//[[:space:]]/}"
[[ -z "$source_name" ]] && continue
source_path="$ROOT/$source_name"
[[ -f "$source_path" ]] || { printf 'Missing source from core_sources.txt: %s\n' "$source_name" >&2; exit 2; }
if [[ "$source_name" == "Core/src/VoxelForgeCore.cpp" ]]; then
object="$BUILD_DIR/objects/VoxelForgeCore.o"
compile_background "$source_path" "$object"
CORE_OBJECTS+=("$object")
continue
fi
wrapper_name="vfcore_${source_name//[^A-Za-z0-9]/_}"
wrapper="$BUILD_DIR/wrappers/$wrapper_name.cpp"
cat > "$wrapper" <<WRAPPER
#include "CoreNamespacePreamble.h"
namespace vfcore::detail
{
#include "$source_path"
}
WRAPPER
object="$BUILD_DIR/objects/$wrapper_name.o"
compile_background "$wrapper" "$object"
CORE_OBJECTS+=("$object")
# The same copied compatibility implementations are also needed by the standalone owner
# loader/mesher host. They are compiled globally for that reference layer, as in Build.ps1.
legacy_object="$BUILD_DIR/objects/legacy_${wrapper_name}.o"
compile_background "$source_path" "$legacy_object"
LEGACY_OBJECTS+=("$legacy_object")
done < "$ROOT/Core/core_sources.txt"
headless_object="$BUILD_DIR/objects/StreamBenchmarkHeadless.o"
compile_background "$ROOT/Source/StreamBenchmarkHeadless.cpp" "$headless_object"
LEGACY_OBJECTS+=("$headless_object")
for pid in "${PIDS[@]}"; do wait "$pid"; done
PIDS=()
CORE_LIBRARY="$BUILD_DIR/libVoxelForgeCore.a"
"$(command -v ar)" rcs "$CORE_LIBRARY" "${CORE_OBJECTS[@]}"
OUTPUT="$BIN_DIR/VoxelForgeCoreHeadless-$VARIANT"
"$COMPILER" -pthread "${LEGACY_OBJECTS[@]}" "$CORE_LIBRARY" -o "$OUTPUT"
printf 'Built Core library: %s\nBuilt headless benchmark: %s\n' "$CORE_LIBRARY" "$OUTPUT"
printf 'Compiler: %s | variant: %s | fp-contract: %s | jobs: %s\n' "$COMPILER" "$VARIANT" "$FP_CONTRACT" "$JOBS"
+1
View File
@@ -10,6 +10,7 @@
#include <chrono> #include <chrono>
#include <charconv> #include <charconv>
#include <cctype> #include <cctype>
#include <cfloat>
#include <cstdarg> #include <cstdarg>
#include <cmath> #include <cmath>
#include <cstdint> #include <cstdint>
@@ -11,6 +11,11 @@ void UVoxelStrateDefinition::PostLoad()
GenerationParams.bTunnelFloorEnabled = true; GenerationParams.bTunnelFloorEnabled = true;
} }
FPrimaryAssetId UVoxelSeasonAsset::GetPrimaryAssetId() const
{
return FPrimaryAssetId(TEXT("VoxelSeason"),GetFName());
}
bool UVoxelSeasonAsset::LoadManifest(FVoxelSeasonManifest& OutManifest, FString& OutReport) const bool UVoxelSeasonAsset::LoadManifest(FVoxelSeasonManifest& OutManifest, FString& OutReport) const
{ {
OutManifest = FVoxelSeasonManifest(); OutManifest = FVoxelSeasonManifest();
@@ -10,6 +10,7 @@
#include <cassert> #include <cassert>
#include <cctype> #include <cctype>
#include <charconv> #include <charconv>
#include <cfloat>
#include <chrono> #include <chrono>
#include <cmath> #include <cmath>
#include <condition_variable> #include <condition_variable>
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""Run one child and report its wait4 peak RSS without /usr/bin/time."""
import os
import resource
import sys
import time
if len(sys.argv) < 2:
raise SystemExit("usage: MeasureProcess.py executable [arguments ...]")
address_limit, _ = resource.getrlimit(resource.RLIMIT_AS)
stack_limit, _ = resource.getrlimit(resource.RLIMIT_STACK)
if address_limit in (resource.RLIM_INFINITY, -1) or address_limit > 6 * 1024**3:
raise SystemExit("run under prlimit --as=6442450944")
if stack_limit in (resource.RLIM_INFINITY, -1) or stack_limit < 64 * 1024**2:
raise SystemExit("run under prlimit --stack=67108864:67108864")
if not os.sched_getaffinity(0).issubset(set(range(12))):
raise SystemExit("run under taskset -c 0-11")
print(f"[ProcessLimits] address_limit={address_limit} stack_limit={stack_limit} affinity={sorted(os.sched_getaffinity(0))}", flush=True)
started = time.monotonic()
pid = os.fork()
if pid == 0:
try:
os.execvp(sys.argv[1], sys.argv[1:])
except OSError as error:
print(f"MeasureProcess: exec failed: {error}", file=sys.stderr, flush=True)
os._exit(127)
_, status, usage = os.wait4(pid, 0)
wall = time.monotonic() - started
exit_code = os.waitstatus_to_exitcode(status)
print(f"[ProcessResources] exit_code={exit_code} wall_s={wall:.6f} peak_rss_kib={usage.ru_maxrss}", flush=True)
raise SystemExit(exit_code)
@@ -0,0 +1,153 @@
# L1 — Linux baseline (abyss)
## What changed
- `Standalone/Source/StreamBenchmarkPipeline.h` now holds the S13 streaming benchmark, hash helpers, and per-LOD reporting. The Windows viewer and the headless executable call the same functions.
- `Standalone/Source/WorldAssemblyPrototype.h` holds the existing Round 1 plan builder; both executables call it.
- `Standalone/Source/StreamBenchmarkHeadless.cpp` is the Linux CLI entry point. It loads the same owner JSON, resolves it through `StandaloneOwnerLoader`, builds the same Core snapshot, and runs the shared pipeline. It has no window, renderer, D3D11, or Win32 setup.
- `Standalone/BuildLinux.sh` builds the Core library and headless executable. `Linux1/MeasureProcess.py` checks affinity and memory/stack limits and records child peak RSS.
- `Standalone/Source/StandaloneViewer.cpp` now includes and calls the shared headers. `Standalone/Core/src/CoreNamespacePreamble.h` and `Standalone/Compat/CoreMinimal.h` include `<cfloat>` for existing `FLT_MAX` use. `Standalone/Compat/StandaloneDataAssetGlue.cpp` now supplies the standalone `UVoxelSeasonAsset::GetPrimaryAssetId` implementation matching the engine source.
The headless entry point retains the parsed JSON root for the existing snapshot adapter. The route planner, Core shape compile, tile generator, hash code, and pipeline counters are shared with the viewer, rather than reimplemented. Viewer-only command switches for process affinity, priority, and frame limit are accepted for command-line parity; the Linux runner pins and limits itself externally.
**Windows compile risk:** MSVC was unavailable here, so the Windows viewer was not compiled. The likely risk spots are the new includes and namespaced calls in `StandaloneViewer.cpp`, and the moved inline bodies in `StreamBenchmarkPipeline.h` and `WorldAssemblyPrototype.h`; `Build.ps1` compiles that viewer with `/std:c++20`. The Linux-only main, script, and RSS helper are not in the explicit Windows source list. The compatibility `GetPrimaryAssetId` mirrors `VoxelSeasonAsset.cpp`; keep the engine `.cpp` out of the Standalone compatibility manifest to avoid a duplicate if that manifest is expanded later. No density formula changed, so no recipe-version bump is needed.
## Build and run commands
Run from the repo root. `BuildLinux.sh` enforces CPUs 0–11 and a 6 GiB address-space limit itself; the explicit wrapper below makes those limits visible at the call site too. The build output is under `Standalone/Build/linux-*` and `Standalone/bin/linux/`.
```bash
taskset -c 0-11 prlimit --as=6442450944 -- \
bash Standalone/BuildLinux.sh --compiler=clang++-19 --variant=clang19 --jobs=12 --fp-contract=off \
> Saved/Linux/build-clang19-final.log 2>&1
taskset -c 0-11 prlimit --as=6442450944 -- \
bash Standalone/BuildLinux.sh --compiler=g++-14 --variant=gcc14 --jobs=12 --fp-contract=off \
> Saved/Linux/build-gcc14.log 2>&1
```
The measured build flags were `-std=c++20 -O2 -mavx2 -mfma -ffp-contract=off -fno-fast-math`; Clang also suppresses the legacy narrowing diagnostic that MSVC accepts. The benchmark wrapper below enforces the 6 GiB address-space cap, a 64 MiB stack, and CPU affinity, then records `wait4` peak RSS. These are the exact run calls; `yes` adds `--profile-column-overlap`.
```bash
run_bench() {
local variant="$1" workers="$2" overlap="$3" name="$4"
local profile=()
if [[ "$overlap" == yes ]]; then profile+=(--profile-column-overlap); fi
taskset -c 0-11 prlimit --as=6442450944 --stack=67108864:67108864 -- \
python3 Standalone/Research/WorldAssemblerM3/Linux1/MeasureProcess.py \
"Standalone/bin/linux/VoxelForgeCoreHeadless-$variant" Standalone/data/owner_world.json \
--workers="$workers" --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash \
--force-generate --clip-radius=3 --max-clip-level=8 \
--camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 \
--process-priority=Normal --process-affinity=4095 --frame-limit=60 \
"${profile[@]}" > "Saved/Linux/$name.log" 2>&1
}
run_bench clang19 1 no bench-clang19-w1-r1
run_bench clang19 8 no bench-clang19-w8-r1
run_bench clang19 12 no bench-clang19-w12-r1
run_bench clang19 8 no bench-clang19-w8-r2
run_bench clang19 12 no bench-clang19-w12-r2
run_bench clang19 1 no bench-clang19-w1-r2
run_bench clang19 12 no bench-clang19-w12-r3
run_bench clang19 1 no bench-clang19-w1-r3
run_bench clang19 8 no bench-clang19-w8-r3
run_bench clang19 8 yes bench-clang19-w8-columns-r1
run_bench clang19 8 yes bench-clang19-w8-columns-r2
run_bench clang19 8 yes bench-clang19-w8-columns-r3
run_bench gcc14 8 no bench-gcc14-w8
```
Every run used a fresh process and a newly constructed streamer; the pipeline reported `cache_hits=0`, so no process or thread-local tile/column cache carried over. `--force-generate` was passed for CLI parity, not relied on for isolation. The kernel file cache was not purged: doing so would require a system-wide setting outside the allowed write boundary. Owner JSON load is included in the cold-start timer and took about 5 ms.
## Hashes and determinism
Every Linux hash below covers the same 2,553-tile Round17 view. Clang used `-ffp-contract=off`, matching the intended MSVC `/fp:precise` behavior; GCC used the same contraction setting. Both builds enabled AVX2/FMA instructions but disabled contraction.
| Build / workers | Runs | Density | Mesh | Payload | Topology | Tiles |
|---|---:|---|---|---|---|---:|
| Windows S13 reference, W1/W8/W12 | S13 | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | 2,553 |
| Linux Clang 19, W1 | 3 | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | 2,553 |
| Linux Clang 19, W8 | 3 | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | 2,553 |
| Linux Clang 19, W12 | 3 | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | 2,553 |
| Linux GCC 14, W8 | 1 | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | 2,553 |
There was no divergence in this owner seed/view, so there is no first sample or stage to bisect and no density fix to make. The result covers the full hashed view, not every possible seed or platform math-library input. The tested flags show no observable FMA, libm, integer-width, container-order, or SIMD difference here; they do not establish what default Clang contraction would do.
Clang W1/W8/W12 each produced identical hashes across all three runs. The GCC W8 run agreed too. The overlap-capture counts varied slightly with worker scheduling, while the generated hashes stayed fixed.
## Linux timing and per-LOD cost
Machine: Debian 13, Intel i9-12900H, 15 GB RAM, 24 MiB L3. Processes were pinned to logical CPUs 0–11 (the six P-cores and their SMT siblings); CPUs 12–19 remained free. CPUs 0–11 reported `powersave` governor and `balance_performance` EPP. No governor or system setting was changed; priority remained normal. `RLIMIT_AS` was 6 GiB for every build and benchmark process. The benchmark stack was limited to 64 MiB after the default-stack failures below. No run reached the 30-minute limit.
`whole_view_ready` is the cold-start timer from process start through all 2,553 tiles, including owner load, plan, shape compile, and streamed generation. Values are median `[min–max]` of three interleaved runs. Peak RSS values are the three `wait4` readings in KiB, in run order; the maximum across all successful runs was 604,652 KiB.
| Workers | `whole_view_ready` median [range] | Peak RSS per run (KiB) |
|---:|---:|---|
| W1 | 16.555 s [16.069–16.660] | 218,372 / 329,308 / 329,012 |
| W8 | 3.562 s [3.558–3.602] | 445,884 / 462,588 / 462,216 |
| W12 | 3.512 s [3.482–3.557] | 536,884 / 537,208 / 539,036 |
| W8 with overlap capture | 3.718 s [3.638–3.718] | 603,820 / 603,480 / 604,652 |
| GCC 14 W8 hash check | 3.789 s (one run) | 463,276 |
The S13 W8 Windows reference was 3.518 s on the owner’s 5800X3D. The Linux W8 result is 44 ms (about 1.3%) slower for the same source view and timer, but these are different CPUs and this is a baseline comparison, not an optimization result. Round17 documents no corresponding W1/W12 timing for a direct comparison.
The next table divides S13’s accumulated `worker_sum_s` by tile count. Each cell is median `[min–max]` milliseconds per tile across the three Clang runs. It is average worker time per tile, not a per-tile p95 or whole-pipeline elapsed time.
| LOD | W1 ms/tile | W8 ms/tile | W12 ms/tile |
|---:|---:|---:|---:|
| 0 | 2.131 [2.066–2.144] | 4.222 [4.146–4.343] | 6.405 [6.364–6.489] |
| 1 | 4.429 [4.281–4.441] | 7.394 [7.335–7.491] | 11.084 [11.000–11.296] |
| 2 | 1.319 [1.282–1.319] | 1.871 [1.842–1.943] | 2.771 [2.740–2.813] |
| 3 | 5.520 [5.366–5.527] | 7.916 [7.860–8.179] | 11.777 [11.670–11.916] |
| 4 | 16.305 [15.787–16.344] | 23.403 [23.382–23.798] | 34.479 [34.229–34.654] |
| 5 | 7.389 [7.223–7.443] | 10.714 [10.567–10.926] | 15.520 [15.288–15.605] |
| 6 | 15.521 [15.021–15.638] | 22.183 [21.813–22.350] | 32.063 [31.641–32.163] |
| 7 | 17.203 [16.495–17.226] | 24.476 [23.925–24.560] | 33.760 [33.085–33.885] |
| 8 | 12.087 [11.673–12.228] | 16.591 [16.559–16.617] | 22.738 [22.610–23.673] |
S13’s exclusive stage counters are also retained per LOD: column evaluation, marching cubes, ground/cap refinement, and mesh assembly. At W8, column evaluation averaged 21.124 ms/tile at LOD4 `[21.083–21.462]`, versus 6.815 ms at LOD3 `[6.761–7.014]`; LOD4 remains the standout cost. Standalone has matching aggregate stage sums, but no BuildHost-style per-tile p95 or per-LOD classify-exclusive p95. It also has no counterpart for full-scan versus candidate feature-list p95, field-point calls p95, column misses p95, or approximate per-LOD hit rate; its field/cache totals are whole-run totals, and its overlap capture measures cross-tile XY reuse instead. BuildHost `UWorld::Tick`, apply, and stationary-ring timings also have no headless equivalent.
The W8 overlap capture completed for all tiles and all LODs. Each cell is median `[min–max]` across three captures.
| LOD | Unique XY columns | Repeated tile evaluations | Neighbor repeats | Cross-worker neighbor repeats |
|---:|---:|---:|---:|---:|
| 0 | 128,240 [128,240–128,240] | 360,764 [359,953–364,225] | 301,491 [300,316–301,913] | 296,573 [294,996–297,862] |
| 1 | 103,957 [103,464–104,384] | 300,707 [296,768–312,183] | 243,479 [236,767–246,556] | 238,030 [228,885–241,780] |
| 2 | 32,267 [32,263–32,271] | 106,072 [104,091–106,939] | 90,338 [88,410–90,534] | 87,693 [84,976–87,921] |
| 3 | 33,286 [33,286–33,286] | 87,531 [87,310–88,408] | 81,853 [79,915–83,171] | 78,814 [76,126–78,903] |
| 4 | 91,325 [91,325–91,325] | 231,088 [230,967–231,122] | 228,336 [226,998–228,369] | 207,383 [191,310–207,789] |
| 5 | 71,960 [71,960–71,960] | 118,805 [118,676–118,806] | 118,665 [117,782–118,797] | 111,453 [108,197–112,585] |
| 6 | 280,336 [280,336–280,336] | 63,463 [63,148–63,624] | 63,463 [63,148–63,624] | 63,204 [62,944–63,579] |
| 7 | 71,530 [71,530–71,530] | 7,762 [7,752–7,807] | 7,762 [7,752–7,807] | 7,155 [7,074–7,262] |
| 8 | 106,219 [106,219–106,219] | 32,092 [32,013–32,155] | 32,092 [32,013–32,155] | 28,393 [27,959–28,598] |
## Failed and retried attempts
- `build-clang19.log` failed because `FLT_MAX` was undeclared; adding `<cfloat>` fixed it.
- `build-clang19-retry1.log` failed on existing double-to-float list initializers in `VoxelStrateManager.cpp` and an incorrect dereference in the new runner. The Linux build suppresses that legacy Clang narrowing diagnostic and passes the snapshot value correctly.
- `build-clang19-retry2.log` linked with unresolved `typeinfo for UVoxelSeasonAsset`; the compatibility glue now provides the missing `GetPrimaryAssetId`. `build-clang19-retry3.log` and `build-clang19-final.log` succeeded.
- A temporary diagnostic relink in `rebuild-headless-crash-handler.log` omitted `main` and failed; `relink-headless-crash-handler.log` corrected it. This was only for diagnosis and is not part of the final source.
- `smoke-clang19-w1.log` stopped before launching because `/usr/bin/time` was absent. No package was installed; `MeasureProcess.py` replaced it.
- Seven default-stack W1 attempts (`smoke-clang19-w1-r1.log` through `r7.log`) and three instrumented diagnostic runs (`smoke-clang19-direct.log`, `smoke-clang19-entry.log`, `smoke-clang19-stack.log`) exited with SIGSEGV while entering `FStandaloneStreamingGenerator::Generate` under the default 8 MiB stack. Their peak RSS was 211,056–329,008 KiB. A 64 MiB stack completed the diagnostic run (`smoke-clang19-stack64m.log`, 330,288 KiB peak RSS); temporary tracing pointed to worker stack exhaustion. That diagnostic included an extra direct tile and was excluded from the baseline. All clean baseline runs used the 64 MiB stack.
## Note for the owner
For this owner seed and view, a Linux server and Windows client generate identical hashed density, mesh, payload, and topology, and the hashes stayed stable across Linux worker counts and compilers. This i9-12900H result is a local Linux speed baseline; the W8 time is close to the S13 Windows number, but the machines differ and it should not be read as a speedup.
## Orchestrator review (Claude)
- **The default-stack crash is thread-local storage, not deep recursion.** `-fstack-usage` shows no frame over
~4 KB in Core or the headless tool (`Generate` is 8 KB). But the binary's TLS segment is
`0x115068d` = **17.3 MiB per thread** (6.1 MiB of it initialised data), and glibc carves static TLS out of
each thread's stack, so an 8 MiB default stack overflows before any work runs. Largest pieces:
`world_assembly_detail::HeightfieldColumnCache` 6.8 MB, `GFloorReliefCache` 1.3 MB (x2: Core and
legacy copies), `IslandColumnCache` 1.1 MB, `GRoomGraphCache` 0.97 MB (x2), `GSurfColCache` 0.83 MB (x2).
Windows allocates TLS separately from the 1 MB thread stack, which is why it never showed there.
It matters for a Linux dedicated server: every worker thread pays ~17 MB and copies 6 MB on start.
Open for a later round (after S14, which reworks the column cache).
- **Untested:** the hash match is with `-ffp-contract=off`. Whether the hash would *detect* contraction
(`on`/`fast`) has not been shown, so it is not yet proven the flag is load-bearing.
- Viewer move checked: of 738 removed viewer lines, all but 12 signature lines (now `inline`/namespaced)
reappear verbatim in the two shared headers; every remaining viewer use is qualified or `using`-imported.
MSVC compile still unverified.
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
"""Run one child and print its wait4 peak RSS under the Linux2 process limits."""
import os
import resource
import sys
import time
if len(sys.argv) < 2:
raise SystemExit("usage: MeasureProcess.py executable [arguments ...]")
address_limit, _ = resource.getrlimit(resource.RLIMIT_AS)
stack_limit, _ = resource.getrlimit(resource.RLIMIT_STACK)
if address_limit in (resource.RLIM_INFINITY, -1) or address_limit > 6 * 1024**3:
raise SystemExit("run under prlimit --as=6442450944")
if stack_limit in (resource.RLIM_INFINITY, -1) or stack_limit < 8 * 1024**2:
raise SystemExit("run with the ordinary process stack limit of at least 8 MiB")
if not os.sched_getaffinity(0).issubset(set(range(12))):
raise SystemExit("run under taskset -c 0-11")
print(f"[ProcessLimits] address_limit={address_limit} stack_limit={stack_limit} affinity={sorted(os.sched_getaffinity(0))}", flush=True)
started = time.monotonic()
pid = os.fork()
if pid == 0:
try:
os.execvp(sys.argv[1], sys.argv[1:])
except OSError as error:
print(f"MeasureProcess: exec failed: {error}", file=sys.stderr, flush=True)
os._exit(127)
_, status, usage = os.wait4(pid, 0)
wall = time.monotonic() - started
exit_code = os.waitstatus_to_exitcode(status)
print(f"[ProcessResources] exit_code={exit_code} wall_s={wall:.6f} peak_rss_kib={usage.ru_maxrss}")
raise SystemExit(exit_code)
@@ -0,0 +1,97 @@
# WorldAssemblerM3 Linux2
## Result and changes
The hash check can go red. `-ffp-contract=on`, `fast`, and GCC's default each change the first stage hash (density) on the L1 view; contraction off still reproduces all four L1 hashes at W1 and W12. No Core cache or density source was changed.
The standalone now accepts `--seed`, `--recipe`, and `--render-distance-chunks`; the viewer uses those same options for Windows replay. Linux standalone workers use 32 MiB pthread stacks, while the process retains its ordinary 8 MiB stack limit. The build script still defaults to contraction off; `--fp-contract=default` omits that override for the compiler-default probe.
Environment: i9-12900H, CPUs 0–11, Clang 19.1.7, GCC 14.2.0, governor `powersave`, EPP `balance_performance`. Runs used `taskset -c 0-11`, `RLIMIT_AS=6,442,450,944`, normal priority, and no 64 MiB stack limit. Peak `wait4` RSS was 539,648 KiB on the 2,553-tile checks and 293,460 KiB in the seed sweep.
## Commands
Build variants, with `--fp-contract=off`, `on`, and `fast` as named; `default` leaves the compiler flag unset:
```bash
bash Standalone/BuildLinux.sh --compiler=clang++-19 --variant=clang19-l2-off --jobs=12 --fp-contract=off
bash Standalone/BuildLinux.sh --compiler=clang++-19 --variant=clang19-l2-on --jobs=12 --fp-contract=on
bash Standalone/BuildLinux.sh --compiler=clang++-19 --variant=clang19-l2-fast --jobs=12 --fp-contract=fast
bash Standalone/BuildLinux.sh --compiler=g++-14 --variant=gcc14-l2-off --jobs=12 --fp-contract=off
bash Standalone/BuildLinux.sh --compiler=g++-14 --variant=gcc14-l2-default --jobs=12 --fp-contract=default
```
The L1-view call was `taskset -c 0-11 prlimit --as=6442450944 -- python3 Standalone/Research/WorldAssemblerM3/Linux2/MeasureProcess.py <binary> Standalone/data/owner_world.json --workers=<1|12> --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=3 --max-clip-level=8 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0`. The per-variant commands and resource records are in `Saved/Linux/linux2-contract-final-*.log`.
The seed matrix ran with:
```bash
python3 Standalone/Research/WorldAssemblerM3/Linux2/RunSeedSweep.py 1800
```
## Contraction sensitivity
All rows cover the same 2,553-tile L1 view, W12. `g++-14 -Q --help=optimizers -O2 -fno-fast-math` reports `-ffp-contract=fast` when no override is given.
| Build | Density | Mesh | Payload | Topology | First divergence from off |
|---|---|---|---|---|---|
| Clang 19 off; GCC 14 off | `c10697a8f48380c7` | `e75c9119a1498cd5` | `49a9a8d1835a6c8c` | `edcb23288b5e8724` | — |
| Clang 19 on | `acfa7023c3671dd6` | `adacc34b568be881` | `7c1de424738166e3` | `78e77fd29674920f` | density |
| Clang 19 fast | `f04bb87094a92a25` | `07596ba1a83f91d5` | `1292f277745a876d` | `b07b82bfb52166f5` | density |
| GCC 14 default (effective fast) | `03ed0b826a9ff773` | `07596ba1a83f91d5` | `fb6f82e779be56b2` | `9e5d549138ef2bc0` | density |
The hashes come from the whole-view pipeline stages in order: density, mesh, payload, topology. The same contraction-off binaries reproduce L1 at W1 as well as W12.
## Seed sweep
`seeds.txt` contains seed 0 plus 47 distinct values sampled without replacement from signed int32 using `random.Random(0x564F58454C464F52)`. With no mismatch among the 47 random draws, the one-sided 95% binomial upper bound is 6.18% for a random seed to mismatch on this exact matrix; seed 0 is included as the fixed L1 baseline.
| Recipe | Seeds | Linux combinations | Coverage per seed |
|---|---:|---|---|
| SurfaceWorld | 48 | Clang/GCC × W1/W12 (192 rows) | 27 LOD0 tiles; voxels `(-32,-192,-1984)` to `(64,-96,-1888)`, a 96³ cube (24 m per side) |
| FloatingIslands | 48 | Clang/GCC × W1/W12 (192 rows) | 27 LOD0 tiles; voxels `(-32,-32,-160)` to `(64,64,-64)`, a 96³ cube (24 m per side) |
All 384 runs passed. Clang/GCC matched at both worker counts in 192 comparisons; W1/W12 also matched within each compiler in 192 comparisons. The full per-seed, per-stage hashes, tile extents, wall time, and RSS are in [seed_hashes.csv](seed_hashes.csv); the summary is in [seed_sweep_summary.txt](seed_sweep_summary.txt). The sweep took 290.1 seconds; its maximum per-process peak RSS was 293,460 KiB. Coverage is limited to these fixed local cubes.
For seed 0, SurfaceWorld hashes are `e93491225d0202f9 / 6b2a630951428df2 / fc2798d6a5478b25 / 0c08d7d980a84301`; FloatingIslands hashes are `ea74d3354b5ce671 / 476d49ae2a4ba2a6 / 16078fcd36b68ff0 / cfb6c412b7118172`. Each sequence is density / mesh / payload / topology and matched across both compilers and worker counts.
The viewer seed override was added in `StandaloneViewer.cpp` and the standalone recipe helper; no Core change is needed. [windows_commands.txt](windows_commands.txt) contains all 192 PowerShell commands. Example from the repository root:
```powershell
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=0 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
```
Build the viewer with `powershell -ExecutionPolicy Bypass -File Standalone\Build.ps1`, then run the full replay with `powershell -ExecutionPolicy Bypass -File Standalone\Research\WorldAssemblerM3\Linux2\WindowsReplay.ps1`; it writes logs under `Saved\Linux`. Windows/MSVC compilation was unavailable here. Portability risk spots are the new C++20 helpers in `WorldAssemblyPrototype.h`, `strtoll` argument parsing in `StandaloneViewer.cpp`, and the `__linux__`/`std::thread` split in `StandaloneWorkerThread.h`; the pthread path is Linux-guarded.
## TLS cost and follow-up
`readelf -lW` reports `PT_TLS` FileSiz 6,093,024 bytes (5.81 MiB initialized image) and MemSiz 18,155,149 bytes (17.31 MiB per thread). Three 12-worker probes under the ordinary 8 MiB process stack measured a median spawn-to-ready time of 5.63 ms per thread (5.07–6.44 ms), and a resident increase of 17,736 KiB per worker after the first (17,936 KiB for the first). At 12 workers, `/proc/self/statm` rose by 213,036 KiB (208.0 MiB); the 32 MiB worker stacks reserve a further 32,772 KiB of virtual address space each. The largest wait4 peak across TLS probes was 268,476 KiB.
The large TLS symbols include `HeightfieldColumnCache` (0x680000 bytes, about 6.8 MB), `IslandColumnCache` (0x110000), plus duplicated `GFloorReliefCache` (0x140000 each), `GRoomGraphCache` (0xed000 each), and `GSurfColCache` (0xc9e78 each). `GPlayerFitMemo` is also duplicated as a process-wide object in ordinary `.bss`. [core_sources.txt](../../../Core/core_sources.txt) has 18 translation units: `VoxelForgeCore.cpp` is compiled once; each other 17 is compiled both as a `vfcore::detail` wrapper for Core and as a global legacy object for the standalone owner loader/mesher. This isolates the Core copy from Unreal-shaped global symbols and preserves the legacy reference path; the duplicate objects also duplicate cache state.
The L2 executable's static TLS measurement does not establish the Unreal plugin's model. Inference: a runtime-loaded shared object using general-dynamic TLS can obtain per-thread blocks through the dynamic loader, so it may avoid this exact static-TLS-in-stack footprint; the actual UBT `.so` flags and relocations must be inspected. glibc documents the TLS/dlopen compatibility concern for initial-exec TLS and recommends global-dynamic for more general shared-object loading ([glibc Dynamic Linker Hardening](https://www.sourceware.org/glibc/manual/latest/html_node/Dynamic-Linker-Hardening.html)); GCC describes the per-thread storage model and its loader/libc support ([GCC Thread-Local Storage](https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/Thread-Local.html)).
After S14, prototype a small per-thread TLS handle backed by a bounded worker scratch pool or explicit generation context; share immutable initialized data and remove the Core/legacy duplicate cache where practical. This is a proposal only. The standalone stack wrapper already avoids the external 64 MiB process-stack setting: its own Linux workers request 32 MiB, and the L1 hashes stayed unchanged.
## Failed and retried runs
- The first Clang-off build failed because one join loop still named `std::thread&`; it was changed to `FStandaloneWorkerThread&` and rebuilt successfully (`linux2-build-clang-off.log`, then the retry logs). One later GCC-off build attempt stopped with `headless_object: unbound variable` (`linux2-build-gcc-off-final2.log`); an immediate identical build under the same CPU/address-space limits succeeded (`linux2-build-gcc-off-debug.log`), and the failure did not recur.
- The first FloatingIslands smoke used the default far ring and planned 186,911 tiles; it was stopped after about 10 seconds before generation (`linux2-floating-smoke-clang-w1.log`). With `--render-distance-chunks=0`, a radius-2/max-LOD-4 smoke completed 791 tiles in 18.94 seconds (`linux2-floating-smoke-clang-w1-r2.log`); the sweep uses radius 1/max-LOD 0 (27 tiles).
- The first contraction pass omitted the L1 camera and covered 2,370 tiles (`linux2-contract-*-w12.log`), so those hashes were discarded. The exact L1 camera rerun covered 2,553 tiles and produced the table above (`linux2-contract-final-*.log`).
- An optional one-ULP diagnostic attempt did not trigger (no injection line and no hash change; `linux2-negative-one-ulp-clang-off-w12.log`), so that switch was removed. It was unnecessary after the contraction variants made the check go red. The seed sweep had no failed or retried runs.
## Note for the owner
Contraction off reproduces L1 at W1/W12, while Clang on/fast and GCC default diverge first at density, so the Unreal Linux build's effective FP flags are decisive. The 48-seed sample matched across compilers and worker counts on 24 m-sided cubes in both recipes; the Windows replay commands are ready, with their MSVC build still unverified.
## Orchestrator review (Claude)
- **Surface sweep coverage is 14 effective seeds, not 48.** In `seed_hashes.csv`, 34 of the 48 SurfaceWorld
seeds give seed 0's exact density hash `0xe93491225d0202f9`, i.e. the fixed 24 m cube carries no
seed-dependent surface for them. Only 14 seeds exercise distinct terrain, so the 6.18% bound applies to
FloatingIslands (48 distinct hashes) but not to SurfaceWorld. Future sweeps should place the cube on each
seed's surface and report a per-seed non-empty-mesh count, so an empty cube can't count as a pass.
- Re-run by me: `VoxelForgeCoreHeadless-clang19-l2-off`, W12, plain 8 MiB `ulimit -s`, L1 view:
whole view 3.361 s, hashes `c10697a8f48380c7 / e75c9119a1498cd5 / 49a9a8d1835a6c8c / edcb23288b5e8724`.
- **Consequence of the contraction table:** Core's world now provably depends on the toolchain's FP-contract
setting, which every build outside `Build.ps1`/`BuildLinux.sh` (UBT on Windows and Linux) sets for itself.
Next: make Core immune to, or loudly detect, contraction instead of relying on flags.
@@ -0,0 +1,164 @@
#!/usr/bin/env python3
"""Run the deterministic Linux2 seed/compiler/worker matrix under the owner limits."""
import csv
import re
import subprocess
import sys
import time
from pathlib import Path
ROOT = Path.cwd()
ROUND = ROOT / "Standalone/Research/WorldAssemblerM3/Linux2"
LOG_DIR = ROOT / "Saved/Linux"
MEASURE = ROUND / "MeasureProcess.py"
DATA = ROOT / "Standalone/data/owner_world.json"
BINARIES = {
"clang19": ROOT / "Standalone/bin/linux/VoxelForgeCoreHeadless-clang19-l2-off",
"gcc14": ROOT / "Standalone/bin/linux/VoxelForgeCoreHeadless-gcc14-l2-off",
}
CAMERAS = {
"surface-world": "0,-35,-487.94,0,-22",
"floating-islands": "0,0,-32,0,-22",
}
HASH_RE = re.compile(
r"\[PipelineWholeViewHash\] tiles=(\d+) density=0x([0-9a-f]+) "
r"mesh=0x([0-9a-f]+) payload=0x([0-9a-f]+) topology=0x([0-9a-f]+)"
)
VOLUME_RE = re.compile(
r"\[PipelineVolume\] tiles=(\d+) lod=(\d+)\.\.(\d+) "
r"min_voxel=\((-?\d+),(-?\d+),(-?\d+)\) "
r"max_voxel=\((-?\d+),(-?\d+),(-?\d+)\)"
)
READY_RE = re.compile(r"\[StreamPipeline\].*whole_view_ready=([0-9.]+)s")
RESOURCE_RE = re.compile(r"\[ProcessResources\] exit_code=(-?\d+) wall_s=([0-9.]+) peak_rss_kib=(\d+)")
def main() -> int:
if not (1 <= len(sys.argv) <= 2):
raise SystemExit("usage: RunSeedSweep.py [budget-seconds; default 1800]")
budget_seconds = int(sys.argv[1]) if len(sys.argv) == 2 else 1800
seeds = [int(line.strip()) for line in (ROUND / "seeds.txt").read_text().splitlines() if line.strip()]
if len(seeds) != 48 or len(set(seeds)) != len(seeds):
raise SystemExit("seeds.txt must contain 48 unique signed int32 seeds")
missing = [str(path) for path in [MEASURE, DATA, *BINARIES.values()] if not path.is_file()]
if missing:
raise SystemExit("missing sweep input/build: " + ", ".join(missing))
LOG_DIR.mkdir(parents=True, exist_ok=True)
output_path = ROUND / "seed_hashes.csv"
fields = [
"seed", "recipe", "compiler", "workers", "tiles", "lod_min", "lod_max",
"min_x", "min_y", "min_z", "max_x", "max_y", "max_z",
"density_hash", "mesh_hash", "payload_hash", "topology_hash",
"whole_view_ready_s", "wall_s", "peak_rss_kib", "exit_code", "status",
]
started = time.monotonic()
total = len(seeds) * len(CAMERAS) * len(BINARIES) * 2
print(f"Sweep: {len(seeds)} seeds × 2 recipes × 2 compilers × W1/W12 = {total} runs; budget={budget_seconds}s", flush=True)
with output_path.open("w", newline="") as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=fields)
writer.writeheader()
for seed in seeds:
for recipe, camera in CAMERAS.items():
for compiler, binary in BINARIES.items():
for workers in (1, 12):
remaining = budget_seconds - (time.monotonic() - started)
if remaining <= 0:
print("Sweep exceeded its 30 minute budget; stopping.", file=sys.stderr, flush=True)
return 124
stem = f"linux2-seed-{seed}-{recipe}-{compiler}-w{workers}"
log_path = LOG_DIR / f"{stem}.log"
args = [
str(binary), str(DATA), f"--seed={seed}", f"--recipe={recipe}",
"--render-distance-chunks=0", f"--workers={workers}",
"--world-assembler-prototype", "--stream-benchmark", "--stream-pipeline",
"--stream-hash", "--force-generate", "--clip-radius=1",
"--max-clip-level=0", f"--camera={camera}", "--far-horizon-lod8-step=0",
]
command = [
"taskset", "-c", "0-11", "prlimit", "--as=6442450944", "--",
"python3", str(MEASURE), *args,
]
with log_path.open("w") as log_file:
log_file.write("[SweepCommand] " + " ".join(command) + "\n")
log_file.flush()
try:
result = subprocess.run(
command, cwd=ROOT, stdout=log_file, stderr=subprocess.STDOUT,
timeout=min(900, max(1, remaining)), check=False,
)
exit_code = result.returncode
except subprocess.TimeoutExpired:
exit_code = 124
log_file.write("\n[SweepTimeout] run reached its allotted limit\n")
output = log_path.read_text(errors="replace")
volume = VOLUME_RE.search(output)
hashes = HASH_RE.search(output)
ready = READY_RE.search(output)
resources = RESOURCE_RE.search(output)
passed = exit_code == 0 and volume and hashes and ready and resources
row = {
"seed": seed, "recipe": recipe, "compiler": compiler, "workers": workers,
"tiles": "", "lod_min": "", "lod_max": "",
"min_x": "", "min_y": "", "min_z": "", "max_x": "", "max_y": "", "max_z": "",
"density_hash": "", "mesh_hash": "", "payload_hash": "", "topology_hash": "",
"whole_view_ready_s": "", "wall_s": "", "peak_rss_kib": "",
"exit_code": exit_code, "status": "PASS" if passed else "FAIL",
}
if passed:
row.update({
"tiles": hashes.group(1),
"lod_min": volume.group(2), "lod_max": volume.group(3),
"min_x": volume.group(4), "min_y": volume.group(5), "min_z": volume.group(6),
"max_x": volume.group(7), "max_y": volume.group(8), "max_z": volume.group(9),
"density_hash": "0x" + hashes.group(2), "mesh_hash": "0x" + hashes.group(3),
"payload_hash": "0x" + hashes.group(4), "topology_hash": "0x" + hashes.group(5),
"whole_view_ready_s": ready.group(1), "wall_s": resources.group(2),
"peak_rss_kib": resources.group(3),
})
writer.writerow(row)
csv_file.flush()
completed = sum(1 for _ in output_path.open()) - 1
elapsed = time.monotonic() - started
print(f"[{completed}/{total}] seed={seed} recipe={recipe} compiler={compiler} W{workers} "
f"tiles={row['tiles']} wall={row['wall_s']}s status={row['status']} "
f"elapsed={elapsed:.1f}s", flush=True)
if not passed:
print(f"Run failed; details: {log_path}", file=sys.stderr, flush=True)
return exit_code or 1
rows = list(csv.DictReader(output_path.open(newline="")))
keys = ("density_hash", "mesh_hash", "payload_hash", "topology_hash")
checks = []
for seed in seeds:
for recipe in CAMERAS:
for workers in (1, 12):
pair = [r for r in rows if int(r["seed"]) == seed and r["recipe"] == recipe
and int(r["workers"]) == workers]
equal = len(pair) == 2 and all(pair[0][key] == pair[1][key] for key in keys)
checks.append((seed, recipe, workers, equal))
worker_checks = []
for seed in seeds:
for recipe in CAMERAS:
for compiler in BINARIES:
pair = [r for r in rows if int(r["seed"]) == seed and r["recipe"] == recipe
and r["compiler"] == compiler]
equal = len(pair) == 2 and all(pair[0][key] == pair[1][key] for key in keys)
worker_checks.append((seed, recipe, compiler, equal))
summary_path = ROUND / "seed_sweep_summary.txt"
mismatch_count = sum(not equal for _, _, _, equal in checks)
worker_mismatch_count = sum(not equal for _, _, _, equal in worker_checks)
summary_path.write_text(
f"runs={len(rows)} seeds={len(seeds)} recipes={len(CAMERAS)} compilers={len(BINARIES)} "
f"workers=1,12 cross_compiler_comparisons={len(checks)} cross_compiler_mismatches={mismatch_count} "
f"cross_worker_comparisons={len(worker_checks)} cross_worker_mismatches={worker_mismatch_count} "
f"elapsed_s={time.monotonic()-started:.3f}\n"
)
print(summary_path.read_text(), end="", flush=True)
return 0 if mismatch_count == 0 and worker_mismatch_count == 0 else 3
if __name__ == "__main__":
raise SystemExit(main())
@@ -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" }
}
}
}
@@ -0,0 +1,385 @@
seed,recipe,compiler,workers,tiles,lod_min,lod_max,min_x,min_y,min_z,max_x,max_y,max_z,density_hash,mesh_hash,payload_hash,topology_hash,whole_view_ready_s,wall_s,peak_rss_kib,exit_code,status
-1990830953,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.124,0.139871,82432,0,PASS
-1990830953,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.447,0.472868,277576,0,PASS
-1990830953,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.104,0.120573,83292,0,PASS
-1990830953,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.418,0.444282,277964,0,PASS
-1990830953,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xbd4dd4a500b8d62e,0xe1d28012b857510b,0x3ecc1269ee435844,0x10c100e1503e62f6,0.913,0.929393,83896,0,PASS
-1990830953,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xbd4dd4a500b8d62e,0xe1d28012b857510b,0x3ecc1269ee435844,0x10c100e1503e62f6,0.611,0.639175,286112,0,PASS
-1990830953,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xbd4dd4a500b8d62e,0xe1d28012b857510b,0x3ecc1269ee435844,0x10c100e1503e62f6,1.007,1.024022,84836,0,PASS
-1990830953,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xbd4dd4a500b8d62e,0xe1d28012b857510b,0x3ecc1269ee435844,0x10c100e1503e62f6,0.604,0.631134,287396,0,PASS
-1900684165,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.122,0.138823,87580,0,PASS
-1900684165,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.443,0.470531,282936,0,PASS
-1900684165,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.115,0.131311,88568,0,PASS
-1900684165,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.430,0.455647,283260,0,PASS
-1900684165,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x6579d1933b1981fa,0xfd19fc2d3a0c84b3,0xb8c9aa5ec03bea15,0x854620bb0b15a2da,1.468,1.485107,88252,0,PASS
-1900684165,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x6579d1933b1981fa,0xfd19fc2d3a0c84b3,0xb8c9aa5ec03bea15,0x854620bb0b15a2da,0.724,0.749926,291776,0,PASS
-1900684165,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x6579d1933b1981fa,0xfd19fc2d3a0c84b3,0xb8c9aa5ec03bea15,0x854620bb0b15a2da,1.654,1.671498,88740,0,PASS
-1900684165,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x6579d1933b1981fa,0xfd19fc2d3a0c84b3,0xb8c9aa5ec03bea15,0x854620bb0b15a2da,0.722,0.748795,292444,0,PASS
-1766412538,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.123,0.139772,82472,0,PASS
-1766412538,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.421,0.446302,277376,0,PASS
-1766412538,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.118,0.135907,82932,0,PASS
-1766412538,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.413,0.439059,278060,0,PASS
-1766412538,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x2a92f5e32e60e02f,0x8f64e72825b53b77,0xc8ef053d65d9a8f2,0xf908b7c927a221be,1.182,1.198659,83916,0,PASS
-1766412538,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x2a92f5e32e60e02f,0x8f64e72825b53b77,0xc8ef053d65d9a8f2,0xf908b7c927a221be,0.635,0.661517,288544,0,PASS
-1766412538,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x2a92f5e32e60e02f,0x8f64e72825b53b77,0xc8ef053d65d9a8f2,0xf908b7c927a221be,1.217,1.234070,84676,0,PASS
-1766412538,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x2a92f5e32e60e02f,0x8f64e72825b53b77,0xc8ef053d65d9a8f2,0xf908b7c927a221be,0.641,0.668605,289160,0,PASS
-1721984596,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.120,0.135727,82528,0,PASS
-1721984596,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.412,0.437074,277672,0,PASS
-1721984596,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.111,0.126643,83176,0,PASS
-1721984596,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.443825,278120,0,PASS
-1721984596,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x232835b6d49194bf,0x1caaf34cc5d6cd64,0x03053c530184f232,0xb660395e0dc7fd90,1.217,1.234173,84404,0,PASS
-1721984596,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x232835b6d49194bf,0x1caaf34cc5d6cd64,0x03053c530184f232,0xb660395e0dc7fd90,0.637,0.663034,287872,0,PASS
-1721984596,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x232835b6d49194bf,0x1caaf34cc5d6cd64,0x03053c530184f232,0xb660395e0dc7fd90,1.317,1.333028,84808,0,PASS
-1721984596,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x232835b6d49194bf,0x1caaf34cc5d6cd64,0x03053c530184f232,0xb660395e0dc7fd90,0.655,0.681308,287700,0,PASS
-1239598758,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x0bf609e90c8c98cd,0x73cd83a10b4aada9,0x4eba3fd151b267a4,0x559a118b768faf58,0.298,0.314757,83276,0,PASS
-1239598758,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x0bf609e90c8c98cd,0x73cd83a10b4aada9,0x4eba3fd151b267a4,0x559a118b768faf58,0.445,0.471042,288560,0,PASS
-1239598758,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x0bf609e90c8c98cd,0x73cd83a10b4aada9,0x4eba3fd151b267a4,0x559a118b768faf58,0.285,0.301659,84036,0,PASS
-1239598758,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x0bf609e90c8c98cd,0x73cd83a10b4aada9,0x4eba3fd151b267a4,0x559a118b768faf58,0.443,0.468361,288380,0,PASS
-1239598758,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x13ec8dd8009a6ca3,0xa834791c4bf4a3a6,0xf75429e19a3d3f57,0xec51f6ca14f0103f,1.387,1.403191,84688,0,PASS
-1239598758,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x13ec8dd8009a6ca3,0xa834791c4bf4a3a6,0xf75429e19a3d3f57,0xec51f6ca14f0103f,0.673,0.699757,289244,0,PASS
-1239598758,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x13ec8dd8009a6ca3,0xa834791c4bf4a3a6,0xf75429e19a3d3f57,0xec51f6ca14f0103f,1.443,1.458164,85260,0,PASS
-1239598758,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x13ec8dd8009a6ca3,0xa834791c4bf4a3a6,0xf75429e19a3d3f57,0xec51f6ca14f0103f,0.687,0.712986,289888,0,PASS
-1085993262,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x58d4e8746928d967,0x40dd37203989d7ba,0x912a7f27bda7e867,0x3aaea1143bebf060,0.146,0.161610,83596,0,PASS
-1085993262,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x58d4e8746928d967,0x40dd37203989d7ba,0x912a7f27bda7e867,0x3aaea1143bebf060,0.434,0.459626,280092,0,PASS
-1085993262,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x58d4e8746928d967,0x40dd37203989d7ba,0x912a7f27bda7e867,0x3aaea1143bebf060,0.137,0.155311,84108,0,PASS
-1085993262,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x58d4e8746928d967,0x40dd37203989d7ba,0x912a7f27bda7e867,0x3aaea1143bebf060,0.429,0.457999,280480,0,PASS
-1085993262,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x2f2773f2a0da46ab,0x3bc615085f3da506,0xf696b9a9fcf6e3e6,0x7726f0e025442908,1.270,1.286525,86016,0,PASS
-1085993262,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x2f2773f2a0da46ab,0x3bc615085f3da506,0xf696b9a9fcf6e3e6,0x7726f0e025442908,0.627,0.653909,289560,0,PASS
-1085993262,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x2f2773f2a0da46ab,0x3bc615085f3da506,0xf696b9a9fcf6e3e6,0x7726f0e025442908,1.410,1.427078,86780,0,PASS
-1085993262,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x2f2773f2a0da46ab,0x3bc615085f3da506,0xf696b9a9fcf6e3e6,0x7726f0e025442908,0.648,0.673667,290288,0,PASS
-1033703345,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x5e33a829837b74bd,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.153,0.171501,82920,0,PASS
-1033703345,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x5e33a829837b74bd,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.433,0.459168,278696,0,PASS
-1033703345,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x5e33a829837b74bd,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.146,0.161211,83612,0,PASS
-1033703345,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x5e33a829837b74bd,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.436,0.462555,279276,0,PASS
-1033703345,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x65b606ed9df8b9dd,0x874360dc2d5480ad,0xe1a7c4c63c916b8a,0xf8bfac0093f57137,2.179,2.196290,84960,0,PASS
-1033703345,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x65b606ed9df8b9dd,0x874360dc2d5480ad,0xe1a7c4c63c916b8a,0xf8bfac0093f57137,0.837,0.862488,286132,0,PASS
-1033703345,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x65b606ed9df8b9dd,0x874360dc2d5480ad,0xe1a7c4c63c916b8a,0xf8bfac0093f57137,2.229,2.245540,85384,0,PASS
-1033703345,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x65b606ed9df8b9dd,0x874360dc2d5480ad,0xe1a7c4c63c916b8a,0xf8bfac0093f57137,0.854,0.878634,286968,0,PASS
-854671705,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.168,0.184503,81968,0,PASS
-854671705,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.458,0.482105,276888,0,PASS
-854671705,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.156,0.172642,82296,0,PASS
-854671705,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.440,0.463845,277156,0,PASS
-854671705,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xb324a85fd9f31fa1,0x92f35776d53f0bbe,0x5b4e0dc015e5a4b1,0x3dcce3ff950e5940,1.997,2.014139,83980,0,PASS
-854671705,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xb324a85fd9f31fa1,0x92f35776d53f0bbe,0x5b4e0dc015e5a4b1,0x3dcce3ff950e5940,0.777,0.803614,286988,0,PASS
-854671705,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xb324a85fd9f31fa1,0x92f35776d53f0bbe,0x5b4e0dc015e5a4b1,0x3dcce3ff950e5940,1.975,1.991424,84460,0,PASS
-854671705,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xb324a85fd9f31fa1,0x92f35776d53f0bbe,0x5b4e0dc015e5a4b1,0x3dcce3ff950e5940,0.827,0.853700,287876,0,PASS
-713963806,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.116,0.133079,83972,0,PASS
-713963806,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.403,0.432000,278940,0,PASS
-713963806,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.103,0.119423,84248,0,PASS
-713963806,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.395,0.419569,279096,0,PASS
-713963806,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x38a60c8389c671eb,0xcbca321fa24f4d74,0x6aa8ea9d8c735dbb,0x8b9d8e479ea5329e,1.614,1.634105,84584,0,PASS
-713963806,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x38a60c8389c671eb,0xcbca321fa24f4d74,0x6aa8ea9d8c735dbb,0x8b9d8e479ea5329e,0.696,0.722153,287504,0,PASS
-713963806,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x38a60c8389c671eb,0xcbca321fa24f4d74,0x6aa8ea9d8c735dbb,0x8b9d8e479ea5329e,1.642,1.658169,84804,0,PASS
-713963806,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x38a60c8389c671eb,0xcbca321fa24f4d74,0x6aa8ea9d8c735dbb,0x8b9d8e479ea5329e,0.702,0.728362,287544,0,PASS
-621039221,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.108,0.123847,84240,0,PASS
-621039221,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.404,0.429052,279360,0,PASS
-621039221,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.097,0.114239,84872,0,PASS
-621039221,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.418,0.445942,279796,0,PASS
-621039221,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xa70bd050fb2e002e,0x93c9bfa37a0cd298,0x5fd74cd54a52292b,0x194b571023058cf7,1.740,1.756998,85916,0,PASS
-621039221,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xa70bd050fb2e002e,0x93c9bfa37a0cd298,0x5fd74cd54a52292b,0x194b571023058cf7,0.736,0.762822,290788,0,PASS
-621039221,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xa70bd050fb2e002e,0x93c9bfa37a0cd298,0x5fd74cd54a52292b,0x194b571023058cf7,1.779,1.795250,86420,0,PASS
-621039221,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xa70bd050fb2e002e,0x93c9bfa37a0cd298,0x5fd74cd54a52292b,0x194b571023058cf7,0.767,0.793669,291496,0,PASS
-474448608,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.126682,82408,0,PASS
-474448608,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.420,0.445710,277208,0,PASS
-474448608,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.114,0.131780,83016,0,PASS
-474448608,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.408,0.434334,277788,0,PASS
-474448608,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x80da251d7da20717,0x54a773cac2ae0da4,0xb42e970d98e5e448,0x08d56fddf5a487d6,1.639,1.655937,85268,0,PASS
-474448608,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x80da251d7da20717,0x54a773cac2ae0da4,0xb42e970d98e5e448,0x08d56fddf5a487d6,0.748,0.775722,289208,0,PASS
-474448608,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x80da251d7da20717,0x54a773cac2ae0da4,0xb42e970d98e5e448,0x08d56fddf5a487d6,1.756,1.771783,86096,0,PASS
-474448608,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x80da251d7da20717,0x54a773cac2ae0da4,0xb42e970d98e5e448,0x08d56fddf5a487d6,0.758,0.784193,289568,0,PASS
-432690581,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x1e3b98fa361c46b9,0x510dd77a7ca94d0e,0x4e6917a7b06f3f41,0x09791c912e85d14a,0.249,0.264467,83624,0,PASS
-432690581,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x1e3b98fa361c46b9,0x510dd77a7ca94d0e,0x4e6917a7b06f3f41,0x09791c912e85d14a,0.457,0.482472,286124,0,PASS
-432690581,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x1e3b98fa361c46b9,0x510dd77a7ca94d0e,0x4e6917a7b06f3f41,0x09791c912e85d14a,0.251,0.267531,83844,0,PASS
-432690581,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x1e3b98fa361c46b9,0x510dd77a7ca94d0e,0x4e6917a7b06f3f41,0x09791c912e85d14a,0.456,0.481234,286612,0,PASS
-432690581,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x85185a56cb2ff97a,0x656076e11a4da13b,0x708d7e58be02ab16,0xfa20cfd819664d48,1.465,1.481966,84272,0,PASS
-432690581,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x85185a56cb2ff97a,0x656076e11a4da13b,0x708d7e58be02ab16,0xfa20cfd819664d48,0.651,0.678094,286596,0,PASS
-432690581,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x85185a56cb2ff97a,0x656076e11a4da13b,0x708d7e58be02ab16,0xfa20cfd819664d48,1.518,1.534396,84508,0,PASS
-432690581,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x85185a56cb2ff97a,0x656076e11a4da13b,0x708d7e58be02ab16,0xfa20cfd819664d48,0.675,0.700961,287236,0,PASS
-380556572,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.122,0.138061,83744,0,PASS
-380556572,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.443950,278968,0,PASS
-380556572,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.119,0.136000,84296,0,PASS
-380556572,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.409,0.435025,279452,0,PASS
-380556572,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x18cb13a590f41d1f,0xdb9b7450859f053a,0x5dc9ac331ba35450,0x8cda9fbcede81e46,0.903,0.918921,85380,0,PASS
-380556572,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x18cb13a590f41d1f,0xdb9b7450859f053a,0x5dc9ac331ba35450,0x8cda9fbcede81e46,0.587,0.614393,289360,0,PASS
-380556572,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x18cb13a590f41d1f,0xdb9b7450859f053a,0x5dc9ac331ba35450,0x8cda9fbcede81e46,0.983,0.998686,85572,0,PASS
-380556572,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x18cb13a590f41d1f,0xdb9b7450859f053a,0x5dc9ac331ba35450,0x8cda9fbcede81e46,0.567,0.592607,290168,0,PASS
-238925630,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.121729,82080,0,PASS
-238925630,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.426,0.453650,277360,0,PASS
-238925630,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.120742,82848,0,PASS
-238925630,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.391,0.417157,277784,0,PASS
-238925630,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x3b99d22e2baa2ad7,0xf8a56dd82f8dbe0f,0x91fbb129908c4373,0x0d0d12d4bc8eca05,2.159,2.174883,84956,0,PASS
-238925630,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x3b99d22e2baa2ad7,0xf8a56dd82f8dbe0f,0x91fbb129908c4373,0x0d0d12d4bc8eca05,0.798,0.823378,286820,0,PASS
-238925630,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x3b99d22e2baa2ad7,0xf8a56dd82f8dbe0f,0x91fbb129908c4373,0x0d0d12d4bc8eca05,2.135,2.151003,86032,0,PASS
-238925630,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x3b99d22e2baa2ad7,0xf8a56dd82f8dbe0f,0x91fbb129908c4373,0x0d0d12d4bc8eca05,0.848,0.872951,287200,0,PASS
-216679974,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.113,0.128975,84840,0,PASS
-216679974,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.424,0.448196,279868,0,PASS
-216679974,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.110,0.125699,85388,0,PASS
-216679974,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.443897,280212,0,PASS
-216679974,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x329264ded82099ac,0x4fe355cb337a1fd9,0x0f1cf173f8b6da09,0x29c9025339a1891c,1.154,1.170155,87404,0,PASS
-216679974,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x329264ded82099ac,0x4fe355cb337a1fd9,0x0f1cf173f8b6da09,0x29c9025339a1891c,0.599,0.627832,291380,0,PASS
-216679974,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x329264ded82099ac,0x4fe355cb337a1fd9,0x0f1cf173f8b6da09,0x29c9025339a1891c,1.244,1.260024,88080,0,PASS
-216679974,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x329264ded82099ac,0x4fe355cb337a1fd9,0x0f1cf173f8b6da09,0x29c9025339a1891c,0.652,0.682174,292220,0,PASS
-133096164,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.120,0.137668,83564,0,PASS
-133096164,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.416,0.440317,278792,0,PASS
-133096164,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.129823,84168,0,PASS
-133096164,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.407,0.430509,278888,0,PASS
-133096164,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xd365848036423e24,0x8357d602689e662a,0x71d6cc040cfb374d,0xe50280db1b51428d,0.922,0.937785,84360,0,PASS
-133096164,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xd365848036423e24,0x8357d602689e662a,0x71d6cc040cfb374d,0xe50280db1b51428d,0.589,0.618394,288344,0,PASS
-133096164,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xd365848036423e24,0x8357d602689e662a,0x71d6cc040cfb374d,0xe50280db1b51428d,1.012,1.027635,84716,0,PASS
-133096164,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xd365848036423e24,0x8357d602689e662a,0x71d6cc040cfb374d,0xe50280db1b51428d,0.635,0.660045,288680,0,PASS
-112366806,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x117219c29ee67785,0x997b517646187e1a,0x85cb430517cbbf42,0x685ea038d9f06065,0.243,0.260958,84464,0,PASS
-112366806,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x117219c29ee67785,0x997b517646187e1a,0x85cb430517cbbf42,0x685ea038d9f06065,0.493,0.519148,283500,0,PASS
-112366806,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x117219c29ee67785,0x997b517646187e1a,0x85cb430517cbbf42,0x685ea038d9f06065,0.227,0.243726,84772,0,PASS
-112366806,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x117219c29ee67785,0x997b517646187e1a,0x85cb430517cbbf42,0x685ea038d9f06065,0.465,0.489473,284084,0,PASS
-112366806,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x9014ca6f9bc869cb,0x8b4f78faf1311e89,0x9556cf42e66d3d0a,0x74d6915603c033ad,1.309,1.326524,85228,0,PASS
-112366806,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x9014ca6f9bc869cb,0x8b4f78faf1311e89,0x9556cf42e66d3d0a,0x74d6915603c033ad,0.701,0.726986,287836,0,PASS
-112366806,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x9014ca6f9bc869cb,0x8b4f78faf1311e89,0x9556cf42e66d3d0a,0x74d6915603c033ad,1.395,1.411147,85016,0,PASS
-112366806,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x9014ca6f9bc869cb,0x8b4f78faf1311e89,0x9556cf42e66d3d0a,0x74d6915603c033ad,0.739,0.765027,288736,0,PASS
0,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.119,0.135072,84800,0,PASS
0,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.426,0.451782,279552,0,PASS
0,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.113,0.128723,84848,0,PASS
0,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.420,0.445716,280480,0,PASS
0,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xea74d3354b5ce671,0x476d49ae2a4ba2a6,0x16078fcd36b68ff0,0xcfb6c412b7118172,1.559,1.574177,85036,0,PASS
0,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xea74d3354b5ce671,0x476d49ae2a4ba2a6,0x16078fcd36b68ff0,0xcfb6c412b7118172,0.717,0.744287,287992,0,PASS
0,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xea74d3354b5ce671,0x476d49ae2a4ba2a6,0x16078fcd36b68ff0,0xcfb6c412b7118172,1.736,1.751668,85428,0,PASS
0,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xea74d3354b5ce671,0x476d49ae2a4ba2a6,0x16078fcd36b68ff0,0xcfb6c412b7118172,0.739,0.765220,288024,0,PASS
5808593,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.138,0.152855,82892,0,PASS
5808593,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.442,0.467475,277756,0,PASS
5808593,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.135,0.152123,83220,0,PASS
5808593,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.455,0.480133,278336,0,PASS
5808593,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xebd71c4fe9dd2dc6,0x9ffa12a70e6f7875,0x1a4ca0cc9847ee58,0xf19d80d6dd09e180,1.035,1.051725,84148,0,PASS
5808593,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xebd71c4fe9dd2dc6,0x9ffa12a70e6f7875,0x1a4ca0cc9847ee58,0xf19d80d6dd09e180,0.590,0.616756,287312,0,PASS
5808593,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xebd71c4fe9dd2dc6,0x9ffa12a70e6f7875,0x1a4ca0cc9847ee58,0xf19d80d6dd09e180,1.066,1.081777,85048,0,PASS
5808593,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xebd71c4fe9dd2dc6,0x9ffa12a70e6f7875,0x1a4ca0cc9847ee58,0xf19d80d6dd09e180,0.607,0.633661,287888,0,PASS
28573228,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.114,0.129946,83304,0,PASS
28573228,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.413,0.438628,278012,0,PASS
28573228,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.121266,83976,0,PASS
28573228,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.405,0.430367,278532,0,PASS
28573228,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x8bc79bd6b4d338f9,0xac4276d07d65ceb0,0x357351bb0d2f1cb8,0x900a254512dfc430,1.328,1.344479,84096,0,PASS
28573228,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x8bc79bd6b4d338f9,0xac4276d07d65ceb0,0x357351bb0d2f1cb8,0x900a254512dfc430,0.657,0.682189,287896,0,PASS
28573228,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x8bc79bd6b4d338f9,0xac4276d07d65ceb0,0x357351bb0d2f1cb8,0x900a254512dfc430,1.475,1.493744,84604,0,PASS
28573228,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x8bc79bd6b4d338f9,0xac4276d07d65ceb0,0x357351bb0d2f1cb8,0x900a254512dfc430,0.688,0.715502,288240,0,PASS
70955227,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.122,0.139162,83836,0,PASS
70955227,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.446187,279048,0,PASS
70955227,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.118,0.133338,84804,0,PASS
70955227,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.405,0.428654,279540,0,PASS
70955227,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xdaf7faa124800a90,0x0e2038b6f58233ec,0x9df861ebdd4ad5a0,0x50b94b2a529261d7,1.560,1.576865,86016,0,PASS
70955227,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xdaf7faa124800a90,0x0e2038b6f58233ec,0x9df861ebdd4ad5a0,0x50b94b2a529261d7,0.849,0.882918,288164,0,PASS
70955227,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xdaf7faa124800a90,0x0e2038b6f58233ec,0x9df861ebdd4ad5a0,0x50b94b2a529261d7,1.635,1.651152,86548,0,PASS
70955227,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xdaf7faa124800a90,0x0e2038b6f58233ec,0x9df861ebdd4ad5a0,0x50b94b2a529261d7,0.767,0.793113,288924,0,PASS
75274690,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.129015,83520,0,PASS
75274690,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.405,0.432266,278808,0,PASS
75274690,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.107,0.122969,84248,0,PASS
75274690,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.400,0.425046,279232,0,PASS
75274690,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xdf250106794ae38c,0x76706ba6a26f55ce,0x533b1070a58f2158,0x4f2ac497b8e00d2c,1.140,1.158530,86028,0,PASS
75274690,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xdf250106794ae38c,0x76706ba6a26f55ce,0x533b1070a58f2158,0x4f2ac497b8e00d2c,0.635,0.661364,290020,0,PASS
75274690,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xdf250106794ae38c,0x76706ba6a26f55ce,0x533b1070a58f2158,0x4f2ac497b8e00d2c,1.237,1.253451,86900,0,PASS
75274690,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xdf250106794ae38c,0x76706ba6a26f55ce,0x533b1070a58f2158,0x4f2ac497b8e00d2c,0.629,0.657284,290424,0,PASS
81375760,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x55d1e034d67632f5,0xf493f363535135e7,0xf1081c7533a6b533,0x24c1ef771b2e29df,0.302,0.321425,84348,0,PASS
81375760,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x55d1e034d67632f5,0xf493f363535135e7,0xf1081c7533a6b533,0x24c1ef771b2e29df,0.473,0.498702,288596,0,PASS
81375760,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x55d1e034d67632f5,0xf493f363535135e7,0xf1081c7533a6b533,0x24c1ef771b2e29df,0.284,0.300131,84776,0,PASS
81375760,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x55d1e034d67632f5,0xf493f363535135e7,0xf1081c7533a6b533,0x24c1ef771b2e29df,0.465,0.493912,289032,0,PASS
81375760,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x5e5bc1daf1855a5d,0x6d9a375c60771dd6,0x0e23381363a677c9,0xcd4cbbab580c6da6,1.644,1.660225,85756,0,PASS
81375760,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x5e5bc1daf1855a5d,0x6d9a375c60771dd6,0x0e23381363a677c9,0xcd4cbbab580c6da6,0.738,0.765107,289596,0,PASS
81375760,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x5e5bc1daf1855a5d,0x6d9a375c60771dd6,0x0e23381363a677c9,0xcd4cbbab580c6da6,1.724,1.741866,86704,0,PASS
81375760,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x5e5bc1daf1855a5d,0x6d9a375c60771dd6,0x0e23381363a677c9,0xcd4cbbab580c6da6,0.751,0.778126,289620,0,PASS
146979566,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x28dc20a8ab6fb2d0,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.146,0.162199,83420,0,PASS
146979566,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x28dc20a8ab6fb2d0,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.407,0.434165,281384,0,PASS
146979566,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x28dc20a8ab6fb2d0,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.154,0.171817,84220,0,PASS
146979566,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x28dc20a8ab6fb2d0,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.404,0.429003,282144,0,PASS
146979566,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xac33a725e13e3886,0x86611ee4c12947c9,0x2991daf2b7f1f2e4,0x91e98f0e880b1f3d,1.638,1.654237,86300,0,PASS
146979566,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xac33a725e13e3886,0x86611ee4c12947c9,0x2991daf2b7f1f2e4,0x91e98f0e880b1f3d,0.698,0.725703,289448,0,PASS
146979566,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xac33a725e13e3886,0x86611ee4c12947c9,0x2991daf2b7f1f2e4,0x91e98f0e880b1f3d,1.845,1.861845,86680,0,PASS
146979566,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xac33a725e13e3886,0x86611ee4c12947c9,0x2991daf2b7f1f2e4,0x91e98f0e880b1f3d,0.759,0.786078,290128,0,PASS
244951180,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x1cc26cbbf38ba8e9,0xeaace7e8b8443be0,0x61a9b62f2967c453,0xd0358bf6bbc94bb9,0.195,0.213011,86480,0,PASS
244951180,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x1cc26cbbf38ba8e9,0xeaace7e8b8443be0,0x61a9b62f2967c453,0xd0358bf6bbc94bb9,0.452,0.479860,284556,0,PASS
244951180,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x1cc26cbbf38ba8e9,0xeaace7e8b8443be0,0x61a9b62f2967c453,0xd0358bf6bbc94bb9,0.181,0.197358,87220,0,PASS
244951180,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x1cc26cbbf38ba8e9,0xeaace7e8b8443be0,0x61a9b62f2967c453,0xd0358bf6bbc94bb9,0.434,0.459596,284852,0,PASS
244951180,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x8bd265dfa2c428c4,0x47904e96f2a9213c,0xa9683a3e3251c768,0x585c686bcfe6be65,1.121,1.137204,86652,0,PASS
244951180,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x8bd265dfa2c428c4,0x47904e96f2a9213c,0xa9683a3e3251c768,0x585c686bcfe6be65,0.603,0.628602,289720,0,PASS
244951180,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x8bd265dfa2c428c4,0x47904e96f2a9213c,0xa9683a3e3251c768,0x585c686bcfe6be65,1.192,1.207485,87296,0,PASS
244951180,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x8bd265dfa2c428c4,0x47904e96f2a9213c,0xa9683a3e3251c768,0x585c686bcfe6be65,0.638,0.665330,290548,0,PASS
245433414,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.131222,82516,0,PASS
245433414,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.408,0.432991,277848,0,PASS
245433414,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.100,0.115984,83136,0,PASS
245433414,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.444156,277616,0,PASS
245433414,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x8740ccf600a029e2,0x04589dea4d5c0710,0x15ebf34a211b4233,0x1249a8b782a9ff85,1.203,1.220959,86352,0,PASS
245433414,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x8740ccf600a029e2,0x04589dea4d5c0710,0x15ebf34a211b4233,0x1249a8b782a9ff85,0.630,0.655544,290084,0,PASS
245433414,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x8740ccf600a029e2,0x04589dea4d5c0710,0x15ebf34a211b4233,0x1249a8b782a9ff85,1.279,1.296620,86904,0,PASS
245433414,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x8740ccf600a029e2,0x04589dea4d5c0710,0x15ebf34a211b4233,0x1249a8b782a9ff85,0.664,0.692096,290640,0,PASS
277442974,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.190,0.206505,84588,0,PASS
277442974,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.498,0.524538,279420,0,PASS
277442974,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.188,0.203434,85052,0,PASS
277442974,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.493,0.518404,279564,0,PASS
277442974,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x175a35be1d6f3efe,0xec304bc7b17ae96e,0x3559b943893fa981,0x491b549b23966102,1.322,1.338231,87924,0,PASS
277442974,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x175a35be1d6f3efe,0xec304bc7b17ae96e,0x3559b943893fa981,0x491b549b23966102,0.676,0.700980,292844,0,PASS
277442974,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x175a35be1d6f3efe,0xec304bc7b17ae96e,0x3559b943893fa981,0x491b549b23966102,1.366,1.382495,88588,0,PASS
277442974,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x175a35be1d6f3efe,0xec304bc7b17ae96e,0x3559b943893fa981,0x491b549b23966102,0.701,0.727447,293072,0,PASS
297746112,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xca1d94b876e4eeab,0xa25988b781b26dd4,0x054762688f50e323,0x71019e04b6b0de40,0.245,0.260033,85384,0,PASS
297746112,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xca1d94b876e4eeab,0xa25988b781b26dd4,0x054762688f50e323,0x71019e04b6b0de40,0.465,0.490415,288008,0,PASS
297746112,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xca1d94b876e4eeab,0xa25988b781b26dd4,0x054762688f50e323,0x71019e04b6b0de40,0.243,0.258435,86024,0,PASS
297746112,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xca1d94b876e4eeab,0xa25988b781b26dd4,0x054762688f50e323,0x71019e04b6b0de40,0.471,0.498359,288480,0,PASS
297746112,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x87cc040ef39b9130,0x0a2ea7d615d2f513,0x22cdcf9ca191de12,0xe2f6e225caca52f0,1.652,1.667443,86192,0,PASS
297746112,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x87cc040ef39b9130,0x0a2ea7d615d2f513,0x22cdcf9ca191de12,0xe2f6e225caca52f0,0.747,0.773312,289872,0,PASS
297746112,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x87cc040ef39b9130,0x0a2ea7d615d2f513,0x22cdcf9ca191de12,0xe2f6e225caca52f0,1.731,1.748813,86708,0,PASS
297746112,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x87cc040ef39b9130,0x0a2ea7d615d2f513,0x22cdcf9ca191de12,0xe2f6e225caca52f0,0.764,0.789221,290484,0,PASS
336768467,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.114,0.128946,82460,0,PASS
336768467,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.419,0.445300,277468,0,PASS
336768467,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.110,0.125258,83208,0,PASS
336768467,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.397,0.423317,278004,0,PASS
336768467,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x51c11d2bb0b34ea1,0x7b5968648098e169,0x6671281233fba737,0xf6d98fa4825abf1c,1.629,1.646272,85052,0,PASS
336768467,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x51c11d2bb0b34ea1,0x7b5968648098e169,0x6671281233fba737,0xf6d98fa4825abf1c,0.728,0.754451,288124,0,PASS
336768467,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x51c11d2bb0b34ea1,0x7b5968648098e169,0x6671281233fba737,0xf6d98fa4825abf1c,1.705,1.720538,85388,0,PASS
336768467,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x51c11d2bb0b34ea1,0x7b5968648098e169,0x6671281233fba737,0xf6d98fa4825abf1c,0.738,0.766954,288356,0,PASS
512532080,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.153,0.168716,82560,0,PASS
512532080,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.440,0.467645,277488,0,PASS
512532080,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.143,0.159069,82904,0,PASS
512532080,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.445,0.469304,277704,0,PASS
512532080,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x072b184717239693,0x9fac948bbd70a853,0xc00c647e52d9427e,0x4cc2ff6aed2ad23d,1.226,1.242263,84388,0,PASS
512532080,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x072b184717239693,0x9fac948bbd70a853,0xc00c647e52d9427e,0x4cc2ff6aed2ad23d,0.629,0.654951,288556,0,PASS
512532080,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x072b184717239693,0x9fac948bbd70a853,0xc00c647e52d9427e,0x4cc2ff6aed2ad23d,1.360,1.375755,85232,0,PASS
512532080,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x072b184717239693,0x9fac948bbd70a853,0xc00c647e52d9427e,0x4cc2ff6aed2ad23d,0.672,0.697654,289308,0,PASS
821120640,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.153,0.168054,82828,0,PASS
821120640,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.462,0.487309,277536,0,PASS
821120640,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.149,0.163984,82908,0,PASS
821120640,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.445,0.471081,277668,0,PASS
821120640,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x799f3dddb77b2373,0x2ff216b7c9c0a0f7,0xbd06c753c834d621,0xe6452e48c09c779c,1.491,1.507224,85000,0,PASS
821120640,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x799f3dddb77b2373,0x2ff216b7c9c0a0f7,0xbd06c753c834d621,0xe6452e48c09c779c,0.700,0.726549,289052,0,PASS
821120640,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x799f3dddb77b2373,0x2ff216b7c9c0a0f7,0xbd06c753c834d621,0xe6452e48c09c779c,1.661,1.677544,85416,0,PASS
821120640,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x799f3dddb77b2373,0x2ff216b7c9c0a0f7,0xbd06c753c834d621,0xe6452e48c09c779c,0.775,0.801706,289404,0,PASS
853538490,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe9c955bb88ef453e,0xf6ff06a22d87a886,0x8affd2ace9c02ca9,0xa87ab0dfc3a7abaf,0.351,0.367197,83708,0,PASS
853538490,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe9c955bb88ef453e,0xf6ff06a22d87a886,0x8affd2ace9c02ca9,0xa87ab0dfc3a7abaf,0.498,0.524390,287376,0,PASS
853538490,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe9c955bb88ef453e,0xf6ff06a22d87a886,0x8affd2ace9c02ca9,0xa87ab0dfc3a7abaf,0.309,0.325235,84408,0,PASS
853538490,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe9c955bb88ef453e,0xf6ff06a22d87a886,0x8affd2ace9c02ca9,0xa87ab0dfc3a7abaf,0.503,0.529485,287824,0,PASS
853538490,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xf325b1581a7f5166,0x375b7d2ab1227a19,0xa5b6bfe633662d7e,0xaceab7327811c4f7,1.594,1.609537,84548,0,PASS
853538490,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xf325b1581a7f5166,0x375b7d2ab1227a19,0xa5b6bfe633662d7e,0xaceab7327811c4f7,0.744,0.770634,287636,0,PASS
853538490,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xf325b1581a7f5166,0x375b7d2ab1227a19,0xa5b6bfe633662d7e,0xaceab7327811c4f7,1.565,1.581727,85352,0,PASS
853538490,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xf325b1581a7f5166,0x375b7d2ab1227a19,0xa5b6bfe633662d7e,0xaceab7327811c4f7,0.783,0.809731,287652,0,PASS
861026696,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.120,0.140722,84164,0,PASS
861026696,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.424,0.450365,279168,0,PASS
861026696,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.128137,84788,0,PASS
861026696,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.404,0.429204,279848,0,PASS
861026696,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xca1edaff577a4e1c,0xd032eac020ae2194,0x573cba10f70617e8,0xa8ef305116ad999c,1.511,1.528290,85840,0,PASS
861026696,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xca1edaff577a4e1c,0xd032eac020ae2194,0x573cba10f70617e8,0xa8ef305116ad999c,0.690,0.716270,288668,0,PASS
861026696,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xca1edaff577a4e1c,0xd032eac020ae2194,0x573cba10f70617e8,0xa8ef305116ad999c,1.581,1.598332,86244,0,PASS
861026696,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xca1edaff577a4e1c,0xd032eac020ae2194,0x573cba10f70617e8,0xa8ef305116ad999c,0.737,0.763910,288720,0,PASS
1026251636,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.125,0.140307,87376,0,PASS
1026251636,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.431,0.456676,282440,0,PASS
1026251636,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.120,0.136933,87768,0,PASS
1026251636,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.410,0.435138,282592,0,PASS
1026251636,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x389074d90273f26e,0xa38bcee9be5ec7eb,0x640d982fa1ac7f9c,0xe03c1c060ff49cca,2.194,2.209401,90204,0,PASS
1026251636,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x389074d90273f26e,0xa38bcee9be5ec7eb,0x640d982fa1ac7f9c,0xe03c1c060ff49cca,0.851,0.878001,292176,0,PASS
1026251636,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x389074d90273f26e,0xa38bcee9be5ec7eb,0x640d982fa1ac7f9c,0xe03c1c060ff49cca,2.274,2.290952,90476,0,PASS
1026251636,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x389074d90273f26e,0xa38bcee9be5ec7eb,0x640d982fa1ac7f9c,0xe03c1c060ff49cca,0.835,0.863009,292140,0,PASS
1077415394,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x87ee69cb17aba224,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.146,0.163297,86188,0,PASS
1077415394,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x87ee69cb17aba224,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.414,0.439121,283756,0,PASS
1077415394,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x87ee69cb17aba224,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.148,0.168584,86796,0,PASS
1077415394,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x87ee69cb17aba224,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.426,0.450855,284368,0,PASS
1077415394,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x9584311b92b45072,0xee776f01c536080b,0x6648ac4dfaf4abfd,0x18119783a47a0df1,1.601,1.617268,87912,0,PASS
1077415394,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x9584311b92b45072,0xee776f01c536080b,0x6648ac4dfaf4abfd,0x18119783a47a0df1,0.699,0.725603,292220,0,PASS
1077415394,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x9584311b92b45072,0xee776f01c536080b,0x6648ac4dfaf4abfd,0x18119783a47a0df1,1.727,1.745677,88476,0,PASS
1077415394,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x9584311b92b45072,0xee776f01c536080b,0x6648ac4dfaf4abfd,0x18119783a47a0df1,0.833,0.867727,292828,0,PASS
1130999017,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x38c8b5c86fc861ed,0x0871f41c7adbcbec,0x983b9c5b7bfc9c68,0x920b30bf2774555b,0.291,0.307690,85160,0,PASS
1130999017,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x38c8b5c86fc861ed,0x0871f41c7adbcbec,0x983b9c5b7bfc9c68,0x920b30bf2774555b,0.452,0.481022,289968,0,PASS
1130999017,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x38c8b5c86fc861ed,0x0871f41c7adbcbec,0x983b9c5b7bfc9c68,0x920b30bf2774555b,0.266,0.282332,85784,0,PASS
1130999017,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x38c8b5c86fc861ed,0x0871f41c7adbcbec,0x983b9c5b7bfc9c68,0x920b30bf2774555b,0.444,0.470657,290324,0,PASS
1130999017,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x519dd11ec1b6fd25,0x03655ab9c5d71117,0xbd12d3dae54569a6,0x80d8d87e27a7de44,1.472,1.489302,84108,0,PASS
1130999017,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x519dd11ec1b6fd25,0x03655ab9c5d71117,0xbd12d3dae54569a6,0x80d8d87e27a7de44,0.713,0.738699,287528,0,PASS
1130999017,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x519dd11ec1b6fd25,0x03655ab9c5d71117,0xbd12d3dae54569a6,0x80d8d87e27a7de44,1.530,1.545977,84776,0,PASS
1130999017,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x519dd11ec1b6fd25,0x03655ab9c5d71117,0xbd12d3dae54569a6,0x80d8d87e27a7de44,0.685,0.710911,288188,0,PASS
1156488597,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.121,0.139125,83040,0,PASS
1156488597,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.403,0.428569,278288,0,PASS
1156488597,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.109,0.125855,83948,0,PASS
1156488597,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.425,0.450644,278660,0,PASS
1156488597,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x640a6e138f3d100a,0x89a1c96de1216f8a,0xabb2594c0f2aa5e1,0xbdaec02426d2a060,1.216,1.232170,85424,0,PASS
1156488597,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x640a6e138f3d100a,0x89a1c96de1216f8a,0xabb2594c0f2aa5e1,0xbdaec02426d2a060,0.645,0.670839,287908,0,PASS
1156488597,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x640a6e138f3d100a,0x89a1c96de1216f8a,0xabb2594c0f2aa5e1,0xbdaec02426d2a060,1.312,1.328475,86080,0,PASS
1156488597,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x640a6e138f3d100a,0x89a1c96de1216f8a,0xabb2594c0f2aa5e1,0xbdaec02426d2a060,0.704,0.729815,288444,0,PASS
1172304228,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.109,0.123809,82616,0,PASS
1172304228,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.407,0.431733,277580,0,PASS
1172304228,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.101,0.115688,82980,0,PASS
1172304228,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.407,0.432724,277708,0,PASS
1172304228,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xfb46579ab737c12d,0x0a000a703c549cc1,0xfea6b41d2c3dda0e,0x9640bd6047c9a630,0.869,0.885113,85556,0,PASS
1172304228,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xfb46579ab737c12d,0x0a000a703c549cc1,0xfea6b41d2c3dda0e,0x9640bd6047c9a630,0.584,0.611186,288244,0,PASS
1172304228,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xfb46579ab737c12d,0x0a000a703c549cc1,0xfea6b41d2c3dda0e,0x9640bd6047c9a630,0.964,0.980259,85884,0,PASS
1172304228,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xfb46579ab737c12d,0x0a000a703c549cc1,0xfea6b41d2c3dda0e,0x9640bd6047c9a630,0.611,0.636011,289012,0,PASS
1370340570,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.121360,82860,0,PASS
1370340570,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.413,0.439779,277640,0,PASS
1370340570,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.105,0.120822,83596,0,PASS
1370340570,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.406,0.430247,278132,0,PASS
1370340570,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x34624cba09f42b66,0xd81a376b1e97ec8b,0xf965f89b36b5d843,0xf6abf6a7f4a15687,1.678,1.694262,85176,0,PASS
1370340570,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x34624cba09f42b66,0xd81a376b1e97ec8b,0xf965f89b36b5d843,0xf6abf6a7f4a15687,0.691,0.717560,287996,0,PASS
1370340570,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x34624cba09f42b66,0xd81a376b1e97ec8b,0xf965f89b36b5d843,0xf6abf6a7f4a15687,1.820,1.836129,85504,0,PASS
1370340570,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x34624cba09f42b66,0xd81a376b1e97ec8b,0xf965f89b36b5d843,0xf6abf6a7f4a15687,0.768,0.793448,288372,0,PASS
1383925073,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.112,0.129033,81792,0,PASS
1383925073,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.401,0.427476,277224,0,PASS
1383925073,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.105,0.120673,82892,0,PASS
1383925073,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.402,0.425822,277488,0,PASS
1383925073,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x32c8a3f9cd2d249e,0xe504e184d0529243,0x58408898b37b6d53,0x3154f68bf8585d9e,1.772,1.788831,84816,0,PASS
1383925073,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x32c8a3f9cd2d249e,0xe504e184d0529243,0x58408898b37b6d53,0x3154f68bf8585d9e,0.882,0.907588,287224,0,PASS
1383925073,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x32c8a3f9cd2d249e,0xe504e184d0529243,0x58408898b37b6d53,0x3154f68bf8585d9e,1.870,1.886415,84956,0,PASS
1383925073,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x32c8a3f9cd2d249e,0xe504e184d0529243,0x58408898b37b6d53,0x3154f68bf8585d9e,0.907,0.933394,287936,0,PASS
1401164998,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x539b7c44ed2d40c4,0x2daa8cf5e08fb16e,0xd87700809feafff4,0xc2e832153a03b5d7,0.287,0.303400,84652,0,PASS
1401164998,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x539b7c44ed2d40c4,0x2daa8cf5e08fb16e,0xd87700809feafff4,0xc2e832153a03b5d7,0.478,0.503793,287484,0,PASS
1401164998,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x539b7c44ed2d40c4,0x2daa8cf5e08fb16e,0xd87700809feafff4,0xc2e832153a03b5d7,0.275,0.290885,85324,0,PASS
1401164998,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x539b7c44ed2d40c4,0x2daa8cf5e08fb16e,0xd87700809feafff4,0xc2e832153a03b5d7,0.467,0.494139,288496,0,PASS
1401164998,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xec2a42ee2976845f,0xa295763ea8d9e67f,0xe9c0bff6914243ba,0x62b04de967523696,1.963,1.979104,84732,0,PASS
1401164998,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xec2a42ee2976845f,0xa295763ea8d9e67f,0xe9c0bff6914243ba,0x62b04de967523696,0.747,0.775087,287448,0,PASS
1401164998,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xec2a42ee2976845f,0xa295763ea8d9e67f,0xe9c0bff6914243ba,0x62b04de967523696,1.910,1.926095,85012,0,PASS
1401164998,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xec2a42ee2976845f,0xa295763ea8d9e67f,0xe9c0bff6914243ba,0x62b04de967523696,0.798,0.823400,288392,0,PASS
1558879574,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.115,0.132445,81992,0,PASS
1558879574,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.422,0.447714,276768,0,PASS
1558879574,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.103,0.119871,82376,0,PASS
1558879574,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.421,0.447570,277272,0,PASS
1558879574,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x6a6961f63402e799,0xcdeb03b89b00d39d,0x0b036e09b5273b49,0x971cac1901dff195,0.920,0.936756,83620,0,PASS
1558879574,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x6a6961f63402e799,0xcdeb03b89b00d39d,0x0b036e09b5273b49,0x971cac1901dff195,0.595,0.621724,287708,0,PASS
1558879574,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x6a6961f63402e799,0xcdeb03b89b00d39d,0x0b036e09b5273b49,0x971cac1901dff195,0.939,0.954884,84488,0,PASS
1558879574,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x6a6961f63402e799,0xcdeb03b89b00d39d,0x0b036e09b5273b49,0x971cac1901dff195,0.600,0.626689,288548,0,PASS
1753015542,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.121516,83192,0,PASS
1753015542,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.420,0.448397,278160,0,PASS
1753015542,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.110,0.129636,83988,0,PASS
1753015542,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.405,0.431222,278696,0,PASS
1753015542,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xb91a6e87bdb9610e,0xfdbb714aa24253d8,0xfea893be04158e3f,0x3365335c4b56e58c,1.661,1.678331,85292,0,PASS
1753015542,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xb91a6e87bdb9610e,0xfdbb714aa24253d8,0xfea893be04158e3f,0x3365335c4b56e58c,0.725,0.750781,288032,0,PASS
1753015542,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xb91a6e87bdb9610e,0xfdbb714aa24253d8,0xfea893be04158e3f,0x3365335c4b56e58c,1.786,1.802204,86188,0,PASS
1753015542,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xb91a6e87bdb9610e,0xfdbb714aa24253d8,0xfea893be04158e3f,0x3365335c4b56e58c,0.739,0.765903,288808,0,PASS
1827697875,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.106,0.122073,84540,0,PASS
1827697875,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.412,0.435966,279476,0,PASS
1827697875,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.105,0.121830,84676,0,PASS
1827697875,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.409,0.434709,279752,0,PASS
1827697875,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x699dd931ec3a2699,0x88331e1e5644593e,0xaa2288bc01794464,0xf92b0fbeb4ea279b,1.666,1.681850,89140,0,PASS
1827697875,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x699dd931ec3a2699,0x88331e1e5644593e,0xaa2288bc01794464,0xf92b0fbeb4ea279b,0.739,0.764550,292172,0,PASS
1827697875,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x699dd931ec3a2699,0x88331e1e5644593e,0xaa2288bc01794464,0xf92b0fbeb4ea279b,1.784,1.800585,89620,0,PASS
1827697875,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x699dd931ec3a2699,0x88331e1e5644593e,0xaa2288bc01794464,0xf92b0fbeb4ea279b,0.774,0.801097,293460,0,PASS
1909311298,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.126,0.140793,81792,0,PASS
1909311298,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.454,0.479793,277000,0,PASS
1909311298,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.119,0.138021,82780,0,PASS
1909311298,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.439,0.465770,277320,0,PASS
1909311298,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x15c0afb4c79cdd4e,0xc5f83ce7199a4708,0x1a923e880b787190,0xb9ca42e4a6e19d87,1.677,1.692282,84504,0,PASS
1909311298,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x15c0afb4c79cdd4e,0xc5f83ce7199a4708,0x1a923e880b787190,0xb9ca42e4a6e19d87,0.726,0.753056,287464,0,PASS
1909311298,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x15c0afb4c79cdd4e,0xc5f83ce7199a4708,0x1a923e880b787190,0xb9ca42e4a6e19d87,1.895,1.911071,84364,0,PASS
1909311298,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x15c0afb4c79cdd4e,0xc5f83ce7199a4708,0x1a923e880b787190,0xb9ca42e4a6e19d87,0.754,0.781499,287952,0,PASS
2011898099,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.113,0.129139,83892,0,PASS
2011898099,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.433,0.459151,278756,0,PASS
2011898099,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.103,0.117822,84760,0,PASS
2011898099,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.428,0.456161,279268,0,PASS
2011898099,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x4e5bc61fa6d60b4e,0x3c54a6c3cc817e24,0xa9a3c69c604071a5,0x53009044905f1269,1.148,1.163696,87080,0,PASS
2011898099,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x4e5bc61fa6d60b4e,0x3c54a6c3cc817e24,0xa9a3c69c604071a5,0x53009044905f1269,0.624,0.651689,289916,0,PASS
2011898099,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x4e5bc61fa6d60b4e,0x3c54a6c3cc817e24,0xa9a3c69c604071a5,0x53009044905f1269,1.234,1.252059,87640,0,PASS
2011898099,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x4e5bc61fa6d60b4e,0x3c54a6c3cc817e24,0xa9a3c69c604071a5,0x53009044905f1269,0.650,0.677250,290788,0,PASS
2015768509,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x5d69d4a0b6a3d1c3,0x300ab4e08dc23479,0xb1638622b8b616ad,0x082af297bc0e2595,0.319,0.335248,82712,0,PASS
2015768509,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x5d69d4a0b6a3d1c3,0x300ab4e08dc23479,0xb1638622b8b616ad,0x082af297bc0e2595,0.497,0.523192,286708,0,PASS
2015768509,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0x5d69d4a0b6a3d1c3,0x300ab4e08dc23479,0xb1638622b8b616ad,0x082af297bc0e2595,0.280,0.296244,83728,0,PASS
2015768509,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0x5d69d4a0b6a3d1c3,0x300ab4e08dc23479,0xb1638622b8b616ad,0x082af297bc0e2595,0.479,0.505113,287436,0,PASS
2015768509,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0xd9c1ee0b4c2e8ce8,0x7d2329c4b87bc6f1,0x8f9d279d8d590839,0x7ac25c667e165fa7,1.490,1.506239,84120,0,PASS
2015768509,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0xd9c1ee0b4c2e8ce8,0x7d2329c4b87bc6f1,0x8f9d279d8d590839,0x7ac25c667e165fa7,0.717,0.744393,288996,0,PASS
2015768509,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0xd9c1ee0b4c2e8ce8,0x7d2329c4b87bc6f1,0x8f9d279d8d590839,0x7ac25c667e165fa7,1.600,1.617351,84900,0,PASS
2015768509,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0xd9c1ee0b4c2e8ce8,0x7d2329c4b87bc6f1,0x8f9d279d8d590839,0x7ac25c667e165fa7,0.742,0.769135,289484,0,PASS
2070776516,surface-world,clang19,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.126,0.141678,81840,0,PASS
2070776516,surface-world,clang19,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.430,0.456364,276976,0,PASS
2070776516,surface-world,gcc14,1,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.114,0.131120,82540,0,PASS
2070776516,surface-world,gcc14,12,27,0,0,-32,-192,-1984,64,-96,-1888,0xe93491225d0202f9,0x6b2a630951428df2,0xfc2798d6a5478b25,0x0c08d7d980a84301,0.401,0.425293,277436,0,PASS
2070776516,floating-islands,clang19,1,27,0,0,-32,-32,-160,64,64,-64,0x2cc0f6dce797b31f,0x8760f9677ab58f62,0x03d2511d3ea2f55b,0x2f55edd35d7b78ef,0.998,1.014096,84548,0,PASS
2070776516,floating-islands,clang19,12,27,0,0,-32,-32,-160,64,64,-64,0x2cc0f6dce797b31f,0x8760f9677ab58f62,0x03d2511d3ea2f55b,0x2f55edd35d7b78ef,0.575,0.600529,286932,0,PASS
2070776516,floating-islands,gcc14,1,27,0,0,-32,-32,-160,64,64,-64,0x2cc0f6dce797b31f,0x8760f9677ab58f62,0x03d2511d3ea2f55b,0x2f55edd35d7b78ef,1.054,1.070063,84768,0,PASS
2070776516,floating-islands,gcc14,12,27,0,0,-32,-32,-160,64,64,-64,0x2cc0f6dce797b31f,0x8760f9677ab58f62,0x03d2511d3ea2f55b,0x2f55edd35d7b78ef,0.597,0.622079,287140,0,PASS
1 seed recipe compiler workers tiles lod_min lod_max min_x min_y min_z max_x max_y max_z density_hash mesh_hash payload_hash topology_hash whole_view_ready_s wall_s peak_rss_kib exit_code status
2 -1990830953 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.124 0.139871 82432 0 PASS
3 -1990830953 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.447 0.472868 277576 0 PASS
4 -1990830953 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.104 0.120573 83292 0 PASS
5 -1990830953 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.418 0.444282 277964 0 PASS
6 -1990830953 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xbd4dd4a500b8d62e 0xe1d28012b857510b 0x3ecc1269ee435844 0x10c100e1503e62f6 0.913 0.929393 83896 0 PASS
7 -1990830953 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xbd4dd4a500b8d62e 0xe1d28012b857510b 0x3ecc1269ee435844 0x10c100e1503e62f6 0.611 0.639175 286112 0 PASS
8 -1990830953 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xbd4dd4a500b8d62e 0xe1d28012b857510b 0x3ecc1269ee435844 0x10c100e1503e62f6 1.007 1.024022 84836 0 PASS
9 -1990830953 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xbd4dd4a500b8d62e 0xe1d28012b857510b 0x3ecc1269ee435844 0x10c100e1503e62f6 0.604 0.631134 287396 0 PASS
10 -1900684165 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.122 0.138823 87580 0 PASS
11 -1900684165 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.443 0.470531 282936 0 PASS
12 -1900684165 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.115 0.131311 88568 0 PASS
13 -1900684165 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.430 0.455647 283260 0 PASS
14 -1900684165 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x6579d1933b1981fa 0xfd19fc2d3a0c84b3 0xb8c9aa5ec03bea15 0x854620bb0b15a2da 1.468 1.485107 88252 0 PASS
15 -1900684165 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x6579d1933b1981fa 0xfd19fc2d3a0c84b3 0xb8c9aa5ec03bea15 0x854620bb0b15a2da 0.724 0.749926 291776 0 PASS
16 -1900684165 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x6579d1933b1981fa 0xfd19fc2d3a0c84b3 0xb8c9aa5ec03bea15 0x854620bb0b15a2da 1.654 1.671498 88740 0 PASS
17 -1900684165 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x6579d1933b1981fa 0xfd19fc2d3a0c84b3 0xb8c9aa5ec03bea15 0x854620bb0b15a2da 0.722 0.748795 292444 0 PASS
18 -1766412538 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.123 0.139772 82472 0 PASS
19 -1766412538 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.421 0.446302 277376 0 PASS
20 -1766412538 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.118 0.135907 82932 0 PASS
21 -1766412538 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.413 0.439059 278060 0 PASS
22 -1766412538 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x2a92f5e32e60e02f 0x8f64e72825b53b77 0xc8ef053d65d9a8f2 0xf908b7c927a221be 1.182 1.198659 83916 0 PASS
23 -1766412538 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x2a92f5e32e60e02f 0x8f64e72825b53b77 0xc8ef053d65d9a8f2 0xf908b7c927a221be 0.635 0.661517 288544 0 PASS
24 -1766412538 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x2a92f5e32e60e02f 0x8f64e72825b53b77 0xc8ef053d65d9a8f2 0xf908b7c927a221be 1.217 1.234070 84676 0 PASS
25 -1766412538 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x2a92f5e32e60e02f 0x8f64e72825b53b77 0xc8ef053d65d9a8f2 0xf908b7c927a221be 0.641 0.668605 289160 0 PASS
26 -1721984596 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.120 0.135727 82528 0 PASS
27 -1721984596 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.412 0.437074 277672 0 PASS
28 -1721984596 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.111 0.126643 83176 0 PASS
29 -1721984596 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.443825 278120 0 PASS
30 -1721984596 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x232835b6d49194bf 0x1caaf34cc5d6cd64 0x03053c530184f232 0xb660395e0dc7fd90 1.217 1.234173 84404 0 PASS
31 -1721984596 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x232835b6d49194bf 0x1caaf34cc5d6cd64 0x03053c530184f232 0xb660395e0dc7fd90 0.637 0.663034 287872 0 PASS
32 -1721984596 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x232835b6d49194bf 0x1caaf34cc5d6cd64 0x03053c530184f232 0xb660395e0dc7fd90 1.317 1.333028 84808 0 PASS
33 -1721984596 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x232835b6d49194bf 0x1caaf34cc5d6cd64 0x03053c530184f232 0xb660395e0dc7fd90 0.655 0.681308 287700 0 PASS
34 -1239598758 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x0bf609e90c8c98cd 0x73cd83a10b4aada9 0x4eba3fd151b267a4 0x559a118b768faf58 0.298 0.314757 83276 0 PASS
35 -1239598758 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x0bf609e90c8c98cd 0x73cd83a10b4aada9 0x4eba3fd151b267a4 0x559a118b768faf58 0.445 0.471042 288560 0 PASS
36 -1239598758 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x0bf609e90c8c98cd 0x73cd83a10b4aada9 0x4eba3fd151b267a4 0x559a118b768faf58 0.285 0.301659 84036 0 PASS
37 -1239598758 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x0bf609e90c8c98cd 0x73cd83a10b4aada9 0x4eba3fd151b267a4 0x559a118b768faf58 0.443 0.468361 288380 0 PASS
38 -1239598758 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x13ec8dd8009a6ca3 0xa834791c4bf4a3a6 0xf75429e19a3d3f57 0xec51f6ca14f0103f 1.387 1.403191 84688 0 PASS
39 -1239598758 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x13ec8dd8009a6ca3 0xa834791c4bf4a3a6 0xf75429e19a3d3f57 0xec51f6ca14f0103f 0.673 0.699757 289244 0 PASS
40 -1239598758 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x13ec8dd8009a6ca3 0xa834791c4bf4a3a6 0xf75429e19a3d3f57 0xec51f6ca14f0103f 1.443 1.458164 85260 0 PASS
41 -1239598758 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x13ec8dd8009a6ca3 0xa834791c4bf4a3a6 0xf75429e19a3d3f57 0xec51f6ca14f0103f 0.687 0.712986 289888 0 PASS
42 -1085993262 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x58d4e8746928d967 0x40dd37203989d7ba 0x912a7f27bda7e867 0x3aaea1143bebf060 0.146 0.161610 83596 0 PASS
43 -1085993262 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x58d4e8746928d967 0x40dd37203989d7ba 0x912a7f27bda7e867 0x3aaea1143bebf060 0.434 0.459626 280092 0 PASS
44 -1085993262 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x58d4e8746928d967 0x40dd37203989d7ba 0x912a7f27bda7e867 0x3aaea1143bebf060 0.137 0.155311 84108 0 PASS
45 -1085993262 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x58d4e8746928d967 0x40dd37203989d7ba 0x912a7f27bda7e867 0x3aaea1143bebf060 0.429 0.457999 280480 0 PASS
46 -1085993262 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x2f2773f2a0da46ab 0x3bc615085f3da506 0xf696b9a9fcf6e3e6 0x7726f0e025442908 1.270 1.286525 86016 0 PASS
47 -1085993262 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x2f2773f2a0da46ab 0x3bc615085f3da506 0xf696b9a9fcf6e3e6 0x7726f0e025442908 0.627 0.653909 289560 0 PASS
48 -1085993262 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x2f2773f2a0da46ab 0x3bc615085f3da506 0xf696b9a9fcf6e3e6 0x7726f0e025442908 1.410 1.427078 86780 0 PASS
49 -1085993262 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x2f2773f2a0da46ab 0x3bc615085f3da506 0xf696b9a9fcf6e3e6 0x7726f0e025442908 0.648 0.673667 290288 0 PASS
50 -1033703345 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x5e33a829837b74bd 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.153 0.171501 82920 0 PASS
51 -1033703345 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x5e33a829837b74bd 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.433 0.459168 278696 0 PASS
52 -1033703345 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x5e33a829837b74bd 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.146 0.161211 83612 0 PASS
53 -1033703345 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x5e33a829837b74bd 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.436 0.462555 279276 0 PASS
54 -1033703345 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x65b606ed9df8b9dd 0x874360dc2d5480ad 0xe1a7c4c63c916b8a 0xf8bfac0093f57137 2.179 2.196290 84960 0 PASS
55 -1033703345 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x65b606ed9df8b9dd 0x874360dc2d5480ad 0xe1a7c4c63c916b8a 0xf8bfac0093f57137 0.837 0.862488 286132 0 PASS
56 -1033703345 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x65b606ed9df8b9dd 0x874360dc2d5480ad 0xe1a7c4c63c916b8a 0xf8bfac0093f57137 2.229 2.245540 85384 0 PASS
57 -1033703345 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x65b606ed9df8b9dd 0x874360dc2d5480ad 0xe1a7c4c63c916b8a 0xf8bfac0093f57137 0.854 0.878634 286968 0 PASS
58 -854671705 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.168 0.184503 81968 0 PASS
59 -854671705 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.458 0.482105 276888 0 PASS
60 -854671705 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.156 0.172642 82296 0 PASS
61 -854671705 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.440 0.463845 277156 0 PASS
62 -854671705 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xb324a85fd9f31fa1 0x92f35776d53f0bbe 0x5b4e0dc015e5a4b1 0x3dcce3ff950e5940 1.997 2.014139 83980 0 PASS
63 -854671705 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xb324a85fd9f31fa1 0x92f35776d53f0bbe 0x5b4e0dc015e5a4b1 0x3dcce3ff950e5940 0.777 0.803614 286988 0 PASS
64 -854671705 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xb324a85fd9f31fa1 0x92f35776d53f0bbe 0x5b4e0dc015e5a4b1 0x3dcce3ff950e5940 1.975 1.991424 84460 0 PASS
65 -854671705 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xb324a85fd9f31fa1 0x92f35776d53f0bbe 0x5b4e0dc015e5a4b1 0x3dcce3ff950e5940 0.827 0.853700 287876 0 PASS
66 -713963806 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.116 0.133079 83972 0 PASS
67 -713963806 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.403 0.432000 278940 0 PASS
68 -713963806 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.103 0.119423 84248 0 PASS
69 -713963806 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.395 0.419569 279096 0 PASS
70 -713963806 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x38a60c8389c671eb 0xcbca321fa24f4d74 0x6aa8ea9d8c735dbb 0x8b9d8e479ea5329e 1.614 1.634105 84584 0 PASS
71 -713963806 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x38a60c8389c671eb 0xcbca321fa24f4d74 0x6aa8ea9d8c735dbb 0x8b9d8e479ea5329e 0.696 0.722153 287504 0 PASS
72 -713963806 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x38a60c8389c671eb 0xcbca321fa24f4d74 0x6aa8ea9d8c735dbb 0x8b9d8e479ea5329e 1.642 1.658169 84804 0 PASS
73 -713963806 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x38a60c8389c671eb 0xcbca321fa24f4d74 0x6aa8ea9d8c735dbb 0x8b9d8e479ea5329e 0.702 0.728362 287544 0 PASS
74 -621039221 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.108 0.123847 84240 0 PASS
75 -621039221 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.404 0.429052 279360 0 PASS
76 -621039221 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.097 0.114239 84872 0 PASS
77 -621039221 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.418 0.445942 279796 0 PASS
78 -621039221 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xa70bd050fb2e002e 0x93c9bfa37a0cd298 0x5fd74cd54a52292b 0x194b571023058cf7 1.740 1.756998 85916 0 PASS
79 -621039221 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xa70bd050fb2e002e 0x93c9bfa37a0cd298 0x5fd74cd54a52292b 0x194b571023058cf7 0.736 0.762822 290788 0 PASS
80 -621039221 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xa70bd050fb2e002e 0x93c9bfa37a0cd298 0x5fd74cd54a52292b 0x194b571023058cf7 1.779 1.795250 86420 0 PASS
81 -621039221 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xa70bd050fb2e002e 0x93c9bfa37a0cd298 0x5fd74cd54a52292b 0x194b571023058cf7 0.767 0.793669 291496 0 PASS
82 -474448608 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.126682 82408 0 PASS
83 -474448608 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.420 0.445710 277208 0 PASS
84 -474448608 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.114 0.131780 83016 0 PASS
85 -474448608 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.408 0.434334 277788 0 PASS
86 -474448608 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x80da251d7da20717 0x54a773cac2ae0da4 0xb42e970d98e5e448 0x08d56fddf5a487d6 1.639 1.655937 85268 0 PASS
87 -474448608 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x80da251d7da20717 0x54a773cac2ae0da4 0xb42e970d98e5e448 0x08d56fddf5a487d6 0.748 0.775722 289208 0 PASS
88 -474448608 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x80da251d7da20717 0x54a773cac2ae0da4 0xb42e970d98e5e448 0x08d56fddf5a487d6 1.756 1.771783 86096 0 PASS
89 -474448608 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x80da251d7da20717 0x54a773cac2ae0da4 0xb42e970d98e5e448 0x08d56fddf5a487d6 0.758 0.784193 289568 0 PASS
90 -432690581 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x1e3b98fa361c46b9 0x510dd77a7ca94d0e 0x4e6917a7b06f3f41 0x09791c912e85d14a 0.249 0.264467 83624 0 PASS
91 -432690581 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x1e3b98fa361c46b9 0x510dd77a7ca94d0e 0x4e6917a7b06f3f41 0x09791c912e85d14a 0.457 0.482472 286124 0 PASS
92 -432690581 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x1e3b98fa361c46b9 0x510dd77a7ca94d0e 0x4e6917a7b06f3f41 0x09791c912e85d14a 0.251 0.267531 83844 0 PASS
93 -432690581 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x1e3b98fa361c46b9 0x510dd77a7ca94d0e 0x4e6917a7b06f3f41 0x09791c912e85d14a 0.456 0.481234 286612 0 PASS
94 -432690581 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x85185a56cb2ff97a 0x656076e11a4da13b 0x708d7e58be02ab16 0xfa20cfd819664d48 1.465 1.481966 84272 0 PASS
95 -432690581 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x85185a56cb2ff97a 0x656076e11a4da13b 0x708d7e58be02ab16 0xfa20cfd819664d48 0.651 0.678094 286596 0 PASS
96 -432690581 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x85185a56cb2ff97a 0x656076e11a4da13b 0x708d7e58be02ab16 0xfa20cfd819664d48 1.518 1.534396 84508 0 PASS
97 -432690581 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x85185a56cb2ff97a 0x656076e11a4da13b 0x708d7e58be02ab16 0xfa20cfd819664d48 0.675 0.700961 287236 0 PASS
98 -380556572 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.122 0.138061 83744 0 PASS
99 -380556572 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.443950 278968 0 PASS
100 -380556572 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.119 0.136000 84296 0 PASS
101 -380556572 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.409 0.435025 279452 0 PASS
102 -380556572 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x18cb13a590f41d1f 0xdb9b7450859f053a 0x5dc9ac331ba35450 0x8cda9fbcede81e46 0.903 0.918921 85380 0 PASS
103 -380556572 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x18cb13a590f41d1f 0xdb9b7450859f053a 0x5dc9ac331ba35450 0x8cda9fbcede81e46 0.587 0.614393 289360 0 PASS
104 -380556572 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x18cb13a590f41d1f 0xdb9b7450859f053a 0x5dc9ac331ba35450 0x8cda9fbcede81e46 0.983 0.998686 85572 0 PASS
105 -380556572 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x18cb13a590f41d1f 0xdb9b7450859f053a 0x5dc9ac331ba35450 0x8cda9fbcede81e46 0.567 0.592607 290168 0 PASS
106 -238925630 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.121729 82080 0 PASS
107 -238925630 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.426 0.453650 277360 0 PASS
108 -238925630 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.120742 82848 0 PASS
109 -238925630 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.391 0.417157 277784 0 PASS
110 -238925630 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x3b99d22e2baa2ad7 0xf8a56dd82f8dbe0f 0x91fbb129908c4373 0x0d0d12d4bc8eca05 2.159 2.174883 84956 0 PASS
111 -238925630 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x3b99d22e2baa2ad7 0xf8a56dd82f8dbe0f 0x91fbb129908c4373 0x0d0d12d4bc8eca05 0.798 0.823378 286820 0 PASS
112 -238925630 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x3b99d22e2baa2ad7 0xf8a56dd82f8dbe0f 0x91fbb129908c4373 0x0d0d12d4bc8eca05 2.135 2.151003 86032 0 PASS
113 -238925630 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x3b99d22e2baa2ad7 0xf8a56dd82f8dbe0f 0x91fbb129908c4373 0x0d0d12d4bc8eca05 0.848 0.872951 287200 0 PASS
114 -216679974 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.113 0.128975 84840 0 PASS
115 -216679974 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.424 0.448196 279868 0 PASS
116 -216679974 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.110 0.125699 85388 0 PASS
117 -216679974 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.443897 280212 0 PASS
118 -216679974 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x329264ded82099ac 0x4fe355cb337a1fd9 0x0f1cf173f8b6da09 0x29c9025339a1891c 1.154 1.170155 87404 0 PASS
119 -216679974 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x329264ded82099ac 0x4fe355cb337a1fd9 0x0f1cf173f8b6da09 0x29c9025339a1891c 0.599 0.627832 291380 0 PASS
120 -216679974 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x329264ded82099ac 0x4fe355cb337a1fd9 0x0f1cf173f8b6da09 0x29c9025339a1891c 1.244 1.260024 88080 0 PASS
121 -216679974 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x329264ded82099ac 0x4fe355cb337a1fd9 0x0f1cf173f8b6da09 0x29c9025339a1891c 0.652 0.682174 292220 0 PASS
122 -133096164 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.120 0.137668 83564 0 PASS
123 -133096164 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.416 0.440317 278792 0 PASS
124 -133096164 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.129823 84168 0 PASS
125 -133096164 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.407 0.430509 278888 0 PASS
126 -133096164 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xd365848036423e24 0x8357d602689e662a 0x71d6cc040cfb374d 0xe50280db1b51428d 0.922 0.937785 84360 0 PASS
127 -133096164 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xd365848036423e24 0x8357d602689e662a 0x71d6cc040cfb374d 0xe50280db1b51428d 0.589 0.618394 288344 0 PASS
128 -133096164 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xd365848036423e24 0x8357d602689e662a 0x71d6cc040cfb374d 0xe50280db1b51428d 1.012 1.027635 84716 0 PASS
129 -133096164 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xd365848036423e24 0x8357d602689e662a 0x71d6cc040cfb374d 0xe50280db1b51428d 0.635 0.660045 288680 0 PASS
130 -112366806 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x117219c29ee67785 0x997b517646187e1a 0x85cb430517cbbf42 0x685ea038d9f06065 0.243 0.260958 84464 0 PASS
131 -112366806 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x117219c29ee67785 0x997b517646187e1a 0x85cb430517cbbf42 0x685ea038d9f06065 0.493 0.519148 283500 0 PASS
132 -112366806 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x117219c29ee67785 0x997b517646187e1a 0x85cb430517cbbf42 0x685ea038d9f06065 0.227 0.243726 84772 0 PASS
133 -112366806 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x117219c29ee67785 0x997b517646187e1a 0x85cb430517cbbf42 0x685ea038d9f06065 0.465 0.489473 284084 0 PASS
134 -112366806 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x9014ca6f9bc869cb 0x8b4f78faf1311e89 0x9556cf42e66d3d0a 0x74d6915603c033ad 1.309 1.326524 85228 0 PASS
135 -112366806 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x9014ca6f9bc869cb 0x8b4f78faf1311e89 0x9556cf42e66d3d0a 0x74d6915603c033ad 0.701 0.726986 287836 0 PASS
136 -112366806 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x9014ca6f9bc869cb 0x8b4f78faf1311e89 0x9556cf42e66d3d0a 0x74d6915603c033ad 1.395 1.411147 85016 0 PASS
137 -112366806 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x9014ca6f9bc869cb 0x8b4f78faf1311e89 0x9556cf42e66d3d0a 0x74d6915603c033ad 0.739 0.765027 288736 0 PASS
138 0 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.119 0.135072 84800 0 PASS
139 0 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.426 0.451782 279552 0 PASS
140 0 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.113 0.128723 84848 0 PASS
141 0 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.420 0.445716 280480 0 PASS
142 0 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xea74d3354b5ce671 0x476d49ae2a4ba2a6 0x16078fcd36b68ff0 0xcfb6c412b7118172 1.559 1.574177 85036 0 PASS
143 0 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xea74d3354b5ce671 0x476d49ae2a4ba2a6 0x16078fcd36b68ff0 0xcfb6c412b7118172 0.717 0.744287 287992 0 PASS
144 0 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xea74d3354b5ce671 0x476d49ae2a4ba2a6 0x16078fcd36b68ff0 0xcfb6c412b7118172 1.736 1.751668 85428 0 PASS
145 0 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xea74d3354b5ce671 0x476d49ae2a4ba2a6 0x16078fcd36b68ff0 0xcfb6c412b7118172 0.739 0.765220 288024 0 PASS
146 5808593 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.138 0.152855 82892 0 PASS
147 5808593 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.442 0.467475 277756 0 PASS
148 5808593 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.135 0.152123 83220 0 PASS
149 5808593 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.455 0.480133 278336 0 PASS
150 5808593 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xebd71c4fe9dd2dc6 0x9ffa12a70e6f7875 0x1a4ca0cc9847ee58 0xf19d80d6dd09e180 1.035 1.051725 84148 0 PASS
151 5808593 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xebd71c4fe9dd2dc6 0x9ffa12a70e6f7875 0x1a4ca0cc9847ee58 0xf19d80d6dd09e180 0.590 0.616756 287312 0 PASS
152 5808593 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xebd71c4fe9dd2dc6 0x9ffa12a70e6f7875 0x1a4ca0cc9847ee58 0xf19d80d6dd09e180 1.066 1.081777 85048 0 PASS
153 5808593 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xebd71c4fe9dd2dc6 0x9ffa12a70e6f7875 0x1a4ca0cc9847ee58 0xf19d80d6dd09e180 0.607 0.633661 287888 0 PASS
154 28573228 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.114 0.129946 83304 0 PASS
155 28573228 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.413 0.438628 278012 0 PASS
156 28573228 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.121266 83976 0 PASS
157 28573228 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.405 0.430367 278532 0 PASS
158 28573228 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x8bc79bd6b4d338f9 0xac4276d07d65ceb0 0x357351bb0d2f1cb8 0x900a254512dfc430 1.328 1.344479 84096 0 PASS
159 28573228 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x8bc79bd6b4d338f9 0xac4276d07d65ceb0 0x357351bb0d2f1cb8 0x900a254512dfc430 0.657 0.682189 287896 0 PASS
160 28573228 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x8bc79bd6b4d338f9 0xac4276d07d65ceb0 0x357351bb0d2f1cb8 0x900a254512dfc430 1.475 1.493744 84604 0 PASS
161 28573228 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x8bc79bd6b4d338f9 0xac4276d07d65ceb0 0x357351bb0d2f1cb8 0x900a254512dfc430 0.688 0.715502 288240 0 PASS
162 70955227 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.122 0.139162 83836 0 PASS
163 70955227 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.446187 279048 0 PASS
164 70955227 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.118 0.133338 84804 0 PASS
165 70955227 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.405 0.428654 279540 0 PASS
166 70955227 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xdaf7faa124800a90 0x0e2038b6f58233ec 0x9df861ebdd4ad5a0 0x50b94b2a529261d7 1.560 1.576865 86016 0 PASS
167 70955227 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xdaf7faa124800a90 0x0e2038b6f58233ec 0x9df861ebdd4ad5a0 0x50b94b2a529261d7 0.849 0.882918 288164 0 PASS
168 70955227 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xdaf7faa124800a90 0x0e2038b6f58233ec 0x9df861ebdd4ad5a0 0x50b94b2a529261d7 1.635 1.651152 86548 0 PASS
169 70955227 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xdaf7faa124800a90 0x0e2038b6f58233ec 0x9df861ebdd4ad5a0 0x50b94b2a529261d7 0.767 0.793113 288924 0 PASS
170 75274690 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.129015 83520 0 PASS
171 75274690 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.405 0.432266 278808 0 PASS
172 75274690 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.107 0.122969 84248 0 PASS
173 75274690 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.400 0.425046 279232 0 PASS
174 75274690 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xdf250106794ae38c 0x76706ba6a26f55ce 0x533b1070a58f2158 0x4f2ac497b8e00d2c 1.140 1.158530 86028 0 PASS
175 75274690 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xdf250106794ae38c 0x76706ba6a26f55ce 0x533b1070a58f2158 0x4f2ac497b8e00d2c 0.635 0.661364 290020 0 PASS
176 75274690 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xdf250106794ae38c 0x76706ba6a26f55ce 0x533b1070a58f2158 0x4f2ac497b8e00d2c 1.237 1.253451 86900 0 PASS
177 75274690 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xdf250106794ae38c 0x76706ba6a26f55ce 0x533b1070a58f2158 0x4f2ac497b8e00d2c 0.629 0.657284 290424 0 PASS
178 81375760 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x55d1e034d67632f5 0xf493f363535135e7 0xf1081c7533a6b533 0x24c1ef771b2e29df 0.302 0.321425 84348 0 PASS
179 81375760 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x55d1e034d67632f5 0xf493f363535135e7 0xf1081c7533a6b533 0x24c1ef771b2e29df 0.473 0.498702 288596 0 PASS
180 81375760 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x55d1e034d67632f5 0xf493f363535135e7 0xf1081c7533a6b533 0x24c1ef771b2e29df 0.284 0.300131 84776 0 PASS
181 81375760 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x55d1e034d67632f5 0xf493f363535135e7 0xf1081c7533a6b533 0x24c1ef771b2e29df 0.465 0.493912 289032 0 PASS
182 81375760 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x5e5bc1daf1855a5d 0x6d9a375c60771dd6 0x0e23381363a677c9 0xcd4cbbab580c6da6 1.644 1.660225 85756 0 PASS
183 81375760 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x5e5bc1daf1855a5d 0x6d9a375c60771dd6 0x0e23381363a677c9 0xcd4cbbab580c6da6 0.738 0.765107 289596 0 PASS
184 81375760 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x5e5bc1daf1855a5d 0x6d9a375c60771dd6 0x0e23381363a677c9 0xcd4cbbab580c6da6 1.724 1.741866 86704 0 PASS
185 81375760 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x5e5bc1daf1855a5d 0x6d9a375c60771dd6 0x0e23381363a677c9 0xcd4cbbab580c6da6 0.751 0.778126 289620 0 PASS
186 146979566 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x28dc20a8ab6fb2d0 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.146 0.162199 83420 0 PASS
187 146979566 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x28dc20a8ab6fb2d0 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.407 0.434165 281384 0 PASS
188 146979566 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x28dc20a8ab6fb2d0 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.154 0.171817 84220 0 PASS
189 146979566 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x28dc20a8ab6fb2d0 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.404 0.429003 282144 0 PASS
190 146979566 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xac33a725e13e3886 0x86611ee4c12947c9 0x2991daf2b7f1f2e4 0x91e98f0e880b1f3d 1.638 1.654237 86300 0 PASS
191 146979566 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xac33a725e13e3886 0x86611ee4c12947c9 0x2991daf2b7f1f2e4 0x91e98f0e880b1f3d 0.698 0.725703 289448 0 PASS
192 146979566 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xac33a725e13e3886 0x86611ee4c12947c9 0x2991daf2b7f1f2e4 0x91e98f0e880b1f3d 1.845 1.861845 86680 0 PASS
193 146979566 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xac33a725e13e3886 0x86611ee4c12947c9 0x2991daf2b7f1f2e4 0x91e98f0e880b1f3d 0.759 0.786078 290128 0 PASS
194 244951180 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x1cc26cbbf38ba8e9 0xeaace7e8b8443be0 0x61a9b62f2967c453 0xd0358bf6bbc94bb9 0.195 0.213011 86480 0 PASS
195 244951180 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x1cc26cbbf38ba8e9 0xeaace7e8b8443be0 0x61a9b62f2967c453 0xd0358bf6bbc94bb9 0.452 0.479860 284556 0 PASS
196 244951180 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x1cc26cbbf38ba8e9 0xeaace7e8b8443be0 0x61a9b62f2967c453 0xd0358bf6bbc94bb9 0.181 0.197358 87220 0 PASS
197 244951180 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x1cc26cbbf38ba8e9 0xeaace7e8b8443be0 0x61a9b62f2967c453 0xd0358bf6bbc94bb9 0.434 0.459596 284852 0 PASS
198 244951180 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x8bd265dfa2c428c4 0x47904e96f2a9213c 0xa9683a3e3251c768 0x585c686bcfe6be65 1.121 1.137204 86652 0 PASS
199 244951180 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x8bd265dfa2c428c4 0x47904e96f2a9213c 0xa9683a3e3251c768 0x585c686bcfe6be65 0.603 0.628602 289720 0 PASS
200 244951180 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x8bd265dfa2c428c4 0x47904e96f2a9213c 0xa9683a3e3251c768 0x585c686bcfe6be65 1.192 1.207485 87296 0 PASS
201 244951180 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x8bd265dfa2c428c4 0x47904e96f2a9213c 0xa9683a3e3251c768 0x585c686bcfe6be65 0.638 0.665330 290548 0 PASS
202 245433414 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.131222 82516 0 PASS
203 245433414 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.408 0.432991 277848 0 PASS
204 245433414 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.100 0.115984 83136 0 PASS
205 245433414 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.444156 277616 0 PASS
206 245433414 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x8740ccf600a029e2 0x04589dea4d5c0710 0x15ebf34a211b4233 0x1249a8b782a9ff85 1.203 1.220959 86352 0 PASS
207 245433414 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x8740ccf600a029e2 0x04589dea4d5c0710 0x15ebf34a211b4233 0x1249a8b782a9ff85 0.630 0.655544 290084 0 PASS
208 245433414 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x8740ccf600a029e2 0x04589dea4d5c0710 0x15ebf34a211b4233 0x1249a8b782a9ff85 1.279 1.296620 86904 0 PASS
209 245433414 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x8740ccf600a029e2 0x04589dea4d5c0710 0x15ebf34a211b4233 0x1249a8b782a9ff85 0.664 0.692096 290640 0 PASS
210 277442974 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.190 0.206505 84588 0 PASS
211 277442974 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.498 0.524538 279420 0 PASS
212 277442974 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.188 0.203434 85052 0 PASS
213 277442974 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.493 0.518404 279564 0 PASS
214 277442974 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x175a35be1d6f3efe 0xec304bc7b17ae96e 0x3559b943893fa981 0x491b549b23966102 1.322 1.338231 87924 0 PASS
215 277442974 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x175a35be1d6f3efe 0xec304bc7b17ae96e 0x3559b943893fa981 0x491b549b23966102 0.676 0.700980 292844 0 PASS
216 277442974 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x175a35be1d6f3efe 0xec304bc7b17ae96e 0x3559b943893fa981 0x491b549b23966102 1.366 1.382495 88588 0 PASS
217 277442974 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x175a35be1d6f3efe 0xec304bc7b17ae96e 0x3559b943893fa981 0x491b549b23966102 0.701 0.727447 293072 0 PASS
218 297746112 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xca1d94b876e4eeab 0xa25988b781b26dd4 0x054762688f50e323 0x71019e04b6b0de40 0.245 0.260033 85384 0 PASS
219 297746112 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xca1d94b876e4eeab 0xa25988b781b26dd4 0x054762688f50e323 0x71019e04b6b0de40 0.465 0.490415 288008 0 PASS
220 297746112 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xca1d94b876e4eeab 0xa25988b781b26dd4 0x054762688f50e323 0x71019e04b6b0de40 0.243 0.258435 86024 0 PASS
221 297746112 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xca1d94b876e4eeab 0xa25988b781b26dd4 0x054762688f50e323 0x71019e04b6b0de40 0.471 0.498359 288480 0 PASS
222 297746112 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x87cc040ef39b9130 0x0a2ea7d615d2f513 0x22cdcf9ca191de12 0xe2f6e225caca52f0 1.652 1.667443 86192 0 PASS
223 297746112 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x87cc040ef39b9130 0x0a2ea7d615d2f513 0x22cdcf9ca191de12 0xe2f6e225caca52f0 0.747 0.773312 289872 0 PASS
224 297746112 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x87cc040ef39b9130 0x0a2ea7d615d2f513 0x22cdcf9ca191de12 0xe2f6e225caca52f0 1.731 1.748813 86708 0 PASS
225 297746112 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x87cc040ef39b9130 0x0a2ea7d615d2f513 0x22cdcf9ca191de12 0xe2f6e225caca52f0 0.764 0.789221 290484 0 PASS
226 336768467 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.114 0.128946 82460 0 PASS
227 336768467 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.419 0.445300 277468 0 PASS
228 336768467 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.110 0.125258 83208 0 PASS
229 336768467 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.397 0.423317 278004 0 PASS
230 336768467 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x51c11d2bb0b34ea1 0x7b5968648098e169 0x6671281233fba737 0xf6d98fa4825abf1c 1.629 1.646272 85052 0 PASS
231 336768467 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x51c11d2bb0b34ea1 0x7b5968648098e169 0x6671281233fba737 0xf6d98fa4825abf1c 0.728 0.754451 288124 0 PASS
232 336768467 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x51c11d2bb0b34ea1 0x7b5968648098e169 0x6671281233fba737 0xf6d98fa4825abf1c 1.705 1.720538 85388 0 PASS
233 336768467 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x51c11d2bb0b34ea1 0x7b5968648098e169 0x6671281233fba737 0xf6d98fa4825abf1c 0.738 0.766954 288356 0 PASS
234 512532080 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.153 0.168716 82560 0 PASS
235 512532080 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.440 0.467645 277488 0 PASS
236 512532080 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.143 0.159069 82904 0 PASS
237 512532080 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.445 0.469304 277704 0 PASS
238 512532080 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x072b184717239693 0x9fac948bbd70a853 0xc00c647e52d9427e 0x4cc2ff6aed2ad23d 1.226 1.242263 84388 0 PASS
239 512532080 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x072b184717239693 0x9fac948bbd70a853 0xc00c647e52d9427e 0x4cc2ff6aed2ad23d 0.629 0.654951 288556 0 PASS
240 512532080 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x072b184717239693 0x9fac948bbd70a853 0xc00c647e52d9427e 0x4cc2ff6aed2ad23d 1.360 1.375755 85232 0 PASS
241 512532080 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x072b184717239693 0x9fac948bbd70a853 0xc00c647e52d9427e 0x4cc2ff6aed2ad23d 0.672 0.697654 289308 0 PASS
242 821120640 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.153 0.168054 82828 0 PASS
243 821120640 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.462 0.487309 277536 0 PASS
244 821120640 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.149 0.163984 82908 0 PASS
245 821120640 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.445 0.471081 277668 0 PASS
246 821120640 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x799f3dddb77b2373 0x2ff216b7c9c0a0f7 0xbd06c753c834d621 0xe6452e48c09c779c 1.491 1.507224 85000 0 PASS
247 821120640 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x799f3dddb77b2373 0x2ff216b7c9c0a0f7 0xbd06c753c834d621 0xe6452e48c09c779c 0.700 0.726549 289052 0 PASS
248 821120640 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x799f3dddb77b2373 0x2ff216b7c9c0a0f7 0xbd06c753c834d621 0xe6452e48c09c779c 1.661 1.677544 85416 0 PASS
249 821120640 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x799f3dddb77b2373 0x2ff216b7c9c0a0f7 0xbd06c753c834d621 0xe6452e48c09c779c 0.775 0.801706 289404 0 PASS
250 853538490 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe9c955bb88ef453e 0xf6ff06a22d87a886 0x8affd2ace9c02ca9 0xa87ab0dfc3a7abaf 0.351 0.367197 83708 0 PASS
251 853538490 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe9c955bb88ef453e 0xf6ff06a22d87a886 0x8affd2ace9c02ca9 0xa87ab0dfc3a7abaf 0.498 0.524390 287376 0 PASS
252 853538490 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe9c955bb88ef453e 0xf6ff06a22d87a886 0x8affd2ace9c02ca9 0xa87ab0dfc3a7abaf 0.309 0.325235 84408 0 PASS
253 853538490 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe9c955bb88ef453e 0xf6ff06a22d87a886 0x8affd2ace9c02ca9 0xa87ab0dfc3a7abaf 0.503 0.529485 287824 0 PASS
254 853538490 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xf325b1581a7f5166 0x375b7d2ab1227a19 0xa5b6bfe633662d7e 0xaceab7327811c4f7 1.594 1.609537 84548 0 PASS
255 853538490 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xf325b1581a7f5166 0x375b7d2ab1227a19 0xa5b6bfe633662d7e 0xaceab7327811c4f7 0.744 0.770634 287636 0 PASS
256 853538490 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xf325b1581a7f5166 0x375b7d2ab1227a19 0xa5b6bfe633662d7e 0xaceab7327811c4f7 1.565 1.581727 85352 0 PASS
257 853538490 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xf325b1581a7f5166 0x375b7d2ab1227a19 0xa5b6bfe633662d7e 0xaceab7327811c4f7 0.783 0.809731 287652 0 PASS
258 861026696 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.120 0.140722 84164 0 PASS
259 861026696 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.424 0.450365 279168 0 PASS
260 861026696 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.128137 84788 0 PASS
261 861026696 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.404 0.429204 279848 0 PASS
262 861026696 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xca1edaff577a4e1c 0xd032eac020ae2194 0x573cba10f70617e8 0xa8ef305116ad999c 1.511 1.528290 85840 0 PASS
263 861026696 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xca1edaff577a4e1c 0xd032eac020ae2194 0x573cba10f70617e8 0xa8ef305116ad999c 0.690 0.716270 288668 0 PASS
264 861026696 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xca1edaff577a4e1c 0xd032eac020ae2194 0x573cba10f70617e8 0xa8ef305116ad999c 1.581 1.598332 86244 0 PASS
265 861026696 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xca1edaff577a4e1c 0xd032eac020ae2194 0x573cba10f70617e8 0xa8ef305116ad999c 0.737 0.763910 288720 0 PASS
266 1026251636 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.125 0.140307 87376 0 PASS
267 1026251636 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.431 0.456676 282440 0 PASS
268 1026251636 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.120 0.136933 87768 0 PASS
269 1026251636 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.410 0.435138 282592 0 PASS
270 1026251636 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x389074d90273f26e 0xa38bcee9be5ec7eb 0x640d982fa1ac7f9c 0xe03c1c060ff49cca 2.194 2.209401 90204 0 PASS
271 1026251636 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x389074d90273f26e 0xa38bcee9be5ec7eb 0x640d982fa1ac7f9c 0xe03c1c060ff49cca 0.851 0.878001 292176 0 PASS
272 1026251636 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x389074d90273f26e 0xa38bcee9be5ec7eb 0x640d982fa1ac7f9c 0xe03c1c060ff49cca 2.274 2.290952 90476 0 PASS
273 1026251636 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x389074d90273f26e 0xa38bcee9be5ec7eb 0x640d982fa1ac7f9c 0xe03c1c060ff49cca 0.835 0.863009 292140 0 PASS
274 1077415394 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x87ee69cb17aba224 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.146 0.163297 86188 0 PASS
275 1077415394 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x87ee69cb17aba224 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.414 0.439121 283756 0 PASS
276 1077415394 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x87ee69cb17aba224 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.148 0.168584 86796 0 PASS
277 1077415394 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x87ee69cb17aba224 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.426 0.450855 284368 0 PASS
278 1077415394 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x9584311b92b45072 0xee776f01c536080b 0x6648ac4dfaf4abfd 0x18119783a47a0df1 1.601 1.617268 87912 0 PASS
279 1077415394 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x9584311b92b45072 0xee776f01c536080b 0x6648ac4dfaf4abfd 0x18119783a47a0df1 0.699 0.725603 292220 0 PASS
280 1077415394 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x9584311b92b45072 0xee776f01c536080b 0x6648ac4dfaf4abfd 0x18119783a47a0df1 1.727 1.745677 88476 0 PASS
281 1077415394 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x9584311b92b45072 0xee776f01c536080b 0x6648ac4dfaf4abfd 0x18119783a47a0df1 0.833 0.867727 292828 0 PASS
282 1130999017 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x38c8b5c86fc861ed 0x0871f41c7adbcbec 0x983b9c5b7bfc9c68 0x920b30bf2774555b 0.291 0.307690 85160 0 PASS
283 1130999017 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x38c8b5c86fc861ed 0x0871f41c7adbcbec 0x983b9c5b7bfc9c68 0x920b30bf2774555b 0.452 0.481022 289968 0 PASS
284 1130999017 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x38c8b5c86fc861ed 0x0871f41c7adbcbec 0x983b9c5b7bfc9c68 0x920b30bf2774555b 0.266 0.282332 85784 0 PASS
285 1130999017 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x38c8b5c86fc861ed 0x0871f41c7adbcbec 0x983b9c5b7bfc9c68 0x920b30bf2774555b 0.444 0.470657 290324 0 PASS
286 1130999017 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x519dd11ec1b6fd25 0x03655ab9c5d71117 0xbd12d3dae54569a6 0x80d8d87e27a7de44 1.472 1.489302 84108 0 PASS
287 1130999017 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x519dd11ec1b6fd25 0x03655ab9c5d71117 0xbd12d3dae54569a6 0x80d8d87e27a7de44 0.713 0.738699 287528 0 PASS
288 1130999017 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x519dd11ec1b6fd25 0x03655ab9c5d71117 0xbd12d3dae54569a6 0x80d8d87e27a7de44 1.530 1.545977 84776 0 PASS
289 1130999017 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x519dd11ec1b6fd25 0x03655ab9c5d71117 0xbd12d3dae54569a6 0x80d8d87e27a7de44 0.685 0.710911 288188 0 PASS
290 1156488597 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.121 0.139125 83040 0 PASS
291 1156488597 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.403 0.428569 278288 0 PASS
292 1156488597 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.109 0.125855 83948 0 PASS
293 1156488597 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.425 0.450644 278660 0 PASS
294 1156488597 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x640a6e138f3d100a 0x89a1c96de1216f8a 0xabb2594c0f2aa5e1 0xbdaec02426d2a060 1.216 1.232170 85424 0 PASS
295 1156488597 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x640a6e138f3d100a 0x89a1c96de1216f8a 0xabb2594c0f2aa5e1 0xbdaec02426d2a060 0.645 0.670839 287908 0 PASS
296 1156488597 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x640a6e138f3d100a 0x89a1c96de1216f8a 0xabb2594c0f2aa5e1 0xbdaec02426d2a060 1.312 1.328475 86080 0 PASS
297 1156488597 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x640a6e138f3d100a 0x89a1c96de1216f8a 0xabb2594c0f2aa5e1 0xbdaec02426d2a060 0.704 0.729815 288444 0 PASS
298 1172304228 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.109 0.123809 82616 0 PASS
299 1172304228 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.407 0.431733 277580 0 PASS
300 1172304228 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.101 0.115688 82980 0 PASS
301 1172304228 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.407 0.432724 277708 0 PASS
302 1172304228 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xfb46579ab737c12d 0x0a000a703c549cc1 0xfea6b41d2c3dda0e 0x9640bd6047c9a630 0.869 0.885113 85556 0 PASS
303 1172304228 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xfb46579ab737c12d 0x0a000a703c549cc1 0xfea6b41d2c3dda0e 0x9640bd6047c9a630 0.584 0.611186 288244 0 PASS
304 1172304228 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xfb46579ab737c12d 0x0a000a703c549cc1 0xfea6b41d2c3dda0e 0x9640bd6047c9a630 0.964 0.980259 85884 0 PASS
305 1172304228 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xfb46579ab737c12d 0x0a000a703c549cc1 0xfea6b41d2c3dda0e 0x9640bd6047c9a630 0.611 0.636011 289012 0 PASS
306 1370340570 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.121360 82860 0 PASS
307 1370340570 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.413 0.439779 277640 0 PASS
308 1370340570 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.105 0.120822 83596 0 PASS
309 1370340570 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.406 0.430247 278132 0 PASS
310 1370340570 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x34624cba09f42b66 0xd81a376b1e97ec8b 0xf965f89b36b5d843 0xf6abf6a7f4a15687 1.678 1.694262 85176 0 PASS
311 1370340570 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x34624cba09f42b66 0xd81a376b1e97ec8b 0xf965f89b36b5d843 0xf6abf6a7f4a15687 0.691 0.717560 287996 0 PASS
312 1370340570 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x34624cba09f42b66 0xd81a376b1e97ec8b 0xf965f89b36b5d843 0xf6abf6a7f4a15687 1.820 1.836129 85504 0 PASS
313 1370340570 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x34624cba09f42b66 0xd81a376b1e97ec8b 0xf965f89b36b5d843 0xf6abf6a7f4a15687 0.768 0.793448 288372 0 PASS
314 1383925073 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.112 0.129033 81792 0 PASS
315 1383925073 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.401 0.427476 277224 0 PASS
316 1383925073 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.105 0.120673 82892 0 PASS
317 1383925073 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.402 0.425822 277488 0 PASS
318 1383925073 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x32c8a3f9cd2d249e 0xe504e184d0529243 0x58408898b37b6d53 0x3154f68bf8585d9e 1.772 1.788831 84816 0 PASS
319 1383925073 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x32c8a3f9cd2d249e 0xe504e184d0529243 0x58408898b37b6d53 0x3154f68bf8585d9e 0.882 0.907588 287224 0 PASS
320 1383925073 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x32c8a3f9cd2d249e 0xe504e184d0529243 0x58408898b37b6d53 0x3154f68bf8585d9e 1.870 1.886415 84956 0 PASS
321 1383925073 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x32c8a3f9cd2d249e 0xe504e184d0529243 0x58408898b37b6d53 0x3154f68bf8585d9e 0.907 0.933394 287936 0 PASS
322 1401164998 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x539b7c44ed2d40c4 0x2daa8cf5e08fb16e 0xd87700809feafff4 0xc2e832153a03b5d7 0.287 0.303400 84652 0 PASS
323 1401164998 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x539b7c44ed2d40c4 0x2daa8cf5e08fb16e 0xd87700809feafff4 0xc2e832153a03b5d7 0.478 0.503793 287484 0 PASS
324 1401164998 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x539b7c44ed2d40c4 0x2daa8cf5e08fb16e 0xd87700809feafff4 0xc2e832153a03b5d7 0.275 0.290885 85324 0 PASS
325 1401164998 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x539b7c44ed2d40c4 0x2daa8cf5e08fb16e 0xd87700809feafff4 0xc2e832153a03b5d7 0.467 0.494139 288496 0 PASS
326 1401164998 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xec2a42ee2976845f 0xa295763ea8d9e67f 0xe9c0bff6914243ba 0x62b04de967523696 1.963 1.979104 84732 0 PASS
327 1401164998 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xec2a42ee2976845f 0xa295763ea8d9e67f 0xe9c0bff6914243ba 0x62b04de967523696 0.747 0.775087 287448 0 PASS
328 1401164998 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xec2a42ee2976845f 0xa295763ea8d9e67f 0xe9c0bff6914243ba 0x62b04de967523696 1.910 1.926095 85012 0 PASS
329 1401164998 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xec2a42ee2976845f 0xa295763ea8d9e67f 0xe9c0bff6914243ba 0x62b04de967523696 0.798 0.823400 288392 0 PASS
330 1558879574 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.115 0.132445 81992 0 PASS
331 1558879574 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.422 0.447714 276768 0 PASS
332 1558879574 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.103 0.119871 82376 0 PASS
333 1558879574 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.421 0.447570 277272 0 PASS
334 1558879574 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x6a6961f63402e799 0xcdeb03b89b00d39d 0x0b036e09b5273b49 0x971cac1901dff195 0.920 0.936756 83620 0 PASS
335 1558879574 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x6a6961f63402e799 0xcdeb03b89b00d39d 0x0b036e09b5273b49 0x971cac1901dff195 0.595 0.621724 287708 0 PASS
336 1558879574 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x6a6961f63402e799 0xcdeb03b89b00d39d 0x0b036e09b5273b49 0x971cac1901dff195 0.939 0.954884 84488 0 PASS
337 1558879574 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x6a6961f63402e799 0xcdeb03b89b00d39d 0x0b036e09b5273b49 0x971cac1901dff195 0.600 0.626689 288548 0 PASS
338 1753015542 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.121516 83192 0 PASS
339 1753015542 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.420 0.448397 278160 0 PASS
340 1753015542 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.110 0.129636 83988 0 PASS
341 1753015542 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.405 0.431222 278696 0 PASS
342 1753015542 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xb91a6e87bdb9610e 0xfdbb714aa24253d8 0xfea893be04158e3f 0x3365335c4b56e58c 1.661 1.678331 85292 0 PASS
343 1753015542 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xb91a6e87bdb9610e 0xfdbb714aa24253d8 0xfea893be04158e3f 0x3365335c4b56e58c 0.725 0.750781 288032 0 PASS
344 1753015542 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xb91a6e87bdb9610e 0xfdbb714aa24253d8 0xfea893be04158e3f 0x3365335c4b56e58c 1.786 1.802204 86188 0 PASS
345 1753015542 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xb91a6e87bdb9610e 0xfdbb714aa24253d8 0xfea893be04158e3f 0x3365335c4b56e58c 0.739 0.765903 288808 0 PASS
346 1827697875 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.106 0.122073 84540 0 PASS
347 1827697875 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.412 0.435966 279476 0 PASS
348 1827697875 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.105 0.121830 84676 0 PASS
349 1827697875 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.409 0.434709 279752 0 PASS
350 1827697875 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x699dd931ec3a2699 0x88331e1e5644593e 0xaa2288bc01794464 0xf92b0fbeb4ea279b 1.666 1.681850 89140 0 PASS
351 1827697875 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x699dd931ec3a2699 0x88331e1e5644593e 0xaa2288bc01794464 0xf92b0fbeb4ea279b 0.739 0.764550 292172 0 PASS
352 1827697875 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x699dd931ec3a2699 0x88331e1e5644593e 0xaa2288bc01794464 0xf92b0fbeb4ea279b 1.784 1.800585 89620 0 PASS
353 1827697875 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x699dd931ec3a2699 0x88331e1e5644593e 0xaa2288bc01794464 0xf92b0fbeb4ea279b 0.774 0.801097 293460 0 PASS
354 1909311298 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.126 0.140793 81792 0 PASS
355 1909311298 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.454 0.479793 277000 0 PASS
356 1909311298 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.119 0.138021 82780 0 PASS
357 1909311298 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.439 0.465770 277320 0 PASS
358 1909311298 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x15c0afb4c79cdd4e 0xc5f83ce7199a4708 0x1a923e880b787190 0xb9ca42e4a6e19d87 1.677 1.692282 84504 0 PASS
359 1909311298 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x15c0afb4c79cdd4e 0xc5f83ce7199a4708 0x1a923e880b787190 0xb9ca42e4a6e19d87 0.726 0.753056 287464 0 PASS
360 1909311298 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x15c0afb4c79cdd4e 0xc5f83ce7199a4708 0x1a923e880b787190 0xb9ca42e4a6e19d87 1.895 1.911071 84364 0 PASS
361 1909311298 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x15c0afb4c79cdd4e 0xc5f83ce7199a4708 0x1a923e880b787190 0xb9ca42e4a6e19d87 0.754 0.781499 287952 0 PASS
362 2011898099 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.113 0.129139 83892 0 PASS
363 2011898099 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.433 0.459151 278756 0 PASS
364 2011898099 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.103 0.117822 84760 0 PASS
365 2011898099 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.428 0.456161 279268 0 PASS
366 2011898099 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x4e5bc61fa6d60b4e 0x3c54a6c3cc817e24 0xa9a3c69c604071a5 0x53009044905f1269 1.148 1.163696 87080 0 PASS
367 2011898099 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x4e5bc61fa6d60b4e 0x3c54a6c3cc817e24 0xa9a3c69c604071a5 0x53009044905f1269 0.624 0.651689 289916 0 PASS
368 2011898099 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x4e5bc61fa6d60b4e 0x3c54a6c3cc817e24 0xa9a3c69c604071a5 0x53009044905f1269 1.234 1.252059 87640 0 PASS
369 2011898099 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x4e5bc61fa6d60b4e 0x3c54a6c3cc817e24 0xa9a3c69c604071a5 0x53009044905f1269 0.650 0.677250 290788 0 PASS
370 2015768509 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x5d69d4a0b6a3d1c3 0x300ab4e08dc23479 0xb1638622b8b616ad 0x082af297bc0e2595 0.319 0.335248 82712 0 PASS
371 2015768509 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x5d69d4a0b6a3d1c3 0x300ab4e08dc23479 0xb1638622b8b616ad 0x082af297bc0e2595 0.497 0.523192 286708 0 PASS
372 2015768509 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0x5d69d4a0b6a3d1c3 0x300ab4e08dc23479 0xb1638622b8b616ad 0x082af297bc0e2595 0.280 0.296244 83728 0 PASS
373 2015768509 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0x5d69d4a0b6a3d1c3 0x300ab4e08dc23479 0xb1638622b8b616ad 0x082af297bc0e2595 0.479 0.505113 287436 0 PASS
374 2015768509 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0xd9c1ee0b4c2e8ce8 0x7d2329c4b87bc6f1 0x8f9d279d8d590839 0x7ac25c667e165fa7 1.490 1.506239 84120 0 PASS
375 2015768509 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0xd9c1ee0b4c2e8ce8 0x7d2329c4b87bc6f1 0x8f9d279d8d590839 0x7ac25c667e165fa7 0.717 0.744393 288996 0 PASS
376 2015768509 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0xd9c1ee0b4c2e8ce8 0x7d2329c4b87bc6f1 0x8f9d279d8d590839 0x7ac25c667e165fa7 1.600 1.617351 84900 0 PASS
377 2015768509 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0xd9c1ee0b4c2e8ce8 0x7d2329c4b87bc6f1 0x8f9d279d8d590839 0x7ac25c667e165fa7 0.742 0.769135 289484 0 PASS
378 2070776516 surface-world clang19 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.126 0.141678 81840 0 PASS
379 2070776516 surface-world clang19 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.430 0.456364 276976 0 PASS
380 2070776516 surface-world gcc14 1 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.114 0.131120 82540 0 PASS
381 2070776516 surface-world gcc14 12 27 0 0 -32 -192 -1984 64 -96 -1888 0xe93491225d0202f9 0x6b2a630951428df2 0xfc2798d6a5478b25 0x0c08d7d980a84301 0.401 0.425293 277436 0 PASS
382 2070776516 floating-islands clang19 1 27 0 0 -32 -32 -160 64 64 -64 0x2cc0f6dce797b31f 0x8760f9677ab58f62 0x03d2511d3ea2f55b 0x2f55edd35d7b78ef 0.998 1.014096 84548 0 PASS
383 2070776516 floating-islands clang19 12 27 0 0 -32 -32 -160 64 64 -64 0x2cc0f6dce797b31f 0x8760f9677ab58f62 0x03d2511d3ea2f55b 0x2f55edd35d7b78ef 0.575 0.600529 286932 0 PASS
384 2070776516 floating-islands gcc14 1 27 0 0 -32 -32 -160 64 64 -64 0x2cc0f6dce797b31f 0x8760f9677ab58f62 0x03d2511d3ea2f55b 0x2f55edd35d7b78ef 1.054 1.070063 84768 0 PASS
385 2070776516 floating-islands gcc14 12 27 0 0 -32 -32 -160 64 64 -64 0x2cc0f6dce797b31f 0x8760f9677ab58f62 0x03d2511d3ea2f55b 0x2f55edd35d7b78ef 0.597 0.622079 287140 0 PASS
@@ -0,0 +1 @@
runs=384 seeds=48 recipes=2 compilers=2 workers=1,12 cross_compiler_comparisons=192 cross_compiler_mismatches=0 cross_worker_comparisons=192 cross_worker_mismatches=0 elapsed_s=290.100
@@ -0,0 +1,48 @@
-1990830953
-1900684165
-1766412538
-1721984596
-1239598758
-1085993262
-1033703345
-854671705
-713963806
-621039221
-474448608
-432690581
-380556572
-238925630
-216679974
-133096164
-112366806
0
5808593
28573228
70955227
75274690
81375760
146979566
244951180
245433414
277442974
297746112
336768467
512532080
821120640
853538490
861026696
1026251636
1077415394
1130999017
1156488597
1172304228
1370340570
1383925073
1401164998
1558879574
1753015542
1827697875
1909311298
2011898099
2015768509
2070776516
@@ -0,0 +1,192 @@
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1990830953 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1990830953 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1900684165 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1900684165 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1766412538 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1766412538 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1721984596 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1721984596 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1239598758 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1239598758 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1085993262 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1085993262 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1033703345 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1033703345 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-854671705 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-854671705 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-713963806 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-713963806 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-621039221 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-621039221 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-474448608 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-474448608 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-432690581 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-432690581 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-380556572 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-380556572 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-238925630 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-238925630 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-216679974 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-216679974 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-133096164 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-133096164 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-112366806 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-112366806 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=0 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=0 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=5808593 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=5808593 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=28573228 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=28573228 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=70955227 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=70955227 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=75274690 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=75274690 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=81375760 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=81375760 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=146979566 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=146979566 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=244951180 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=244951180 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=245433414 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=245433414 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=277442974 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=277442974 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=297746112 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=297746112 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=336768467 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=336768467 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=512532080 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=512532080 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=821120640 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=821120640 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=853538490 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=853538490 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=861026696 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=861026696 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1026251636 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1026251636 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1077415394 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1077415394 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1130999017 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1130999017 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1156488597 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1156488597 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1172304228 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1172304228 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1370340570 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1370340570 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1383925073 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1383925073 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1401164998 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1401164998 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1558879574 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1558879574 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1753015542 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1753015542 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1827697875 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1827697875 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1909311298 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1909311298 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2011898099 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2011898099 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2015768509 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2015768509 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2070776516 --recipe=surface-world --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2070776516 --recipe=surface-world --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,-35,-487.94,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1990830953 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1990830953 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1900684165 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1900684165 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1766412538 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1766412538 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1721984596 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1721984596 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1239598758 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1239598758 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1085993262 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1085993262 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1033703345 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-1033703345 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-854671705 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-854671705 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-713963806 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-713963806 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-621039221 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-621039221 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-474448608 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-474448608 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-432690581 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-432690581 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-380556572 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-380556572 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-238925630 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-238925630 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-216679974 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-216679974 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-133096164 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-133096164 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-112366806 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=-112366806 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=0 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=0 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=5808593 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=5808593 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=28573228 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=28573228 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=70955227 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=70955227 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=75274690 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=75274690 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=81375760 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=81375760 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=146979566 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=146979566 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=244951180 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=244951180 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=245433414 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=245433414 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=277442974 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=277442974 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=297746112 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=297746112 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=336768467 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=336768467 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=512532080 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=512532080 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=821120640 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=821120640 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=853538490 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=853538490 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=861026696 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=861026696 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1026251636 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1026251636 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1077415394 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1077415394 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1130999017 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1130999017 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1156488597 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1156488597 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1172304228 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1172304228 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1370340570 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1370340570 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1383925073 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1383925073 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1401164998 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1401164998 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1558879574 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1558879574 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1753015542 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1753015542 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1827697875 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1827697875 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1909311298 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=1909311298 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2011898099 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2011898099 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2015768509 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2015768509 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2070776516 --recipe=floating-islands --render-distance-chunks=0 --workers=1 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
& ".\Standalone\bin\VoxelForgeCoreStandalone.exe" ".\Standalone\data\owner_world.json" --seed=2070776516 --recipe=floating-islands --render-distance-chunks=0 --workers=12 --world-assembler-prototype --stream-benchmark --stream-pipeline --stream-hash --force-generate --clip-radius=1 --max-clip-level=0 --camera=0,0,-32,0,-22 --far-horizon-lod8-step=0 --process-affinity=4095 --process-priority=Normal --frame-limit=60
+3 -2
View File
@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "VoxelForgeCore/VoxelForgeCore.h" #include "VoxelForgeCore/VoxelForgeCore.h"
#include "StandaloneWorkerThread.h"
#include <algorithm> #include <algorithm>
#include <atomic> #include <atomic>
@@ -23,7 +24,7 @@ public:
const std::size_t grain=std::max<std::size_t>(1,batchSize); const std::size_t grain=std::max<std::size_t>(1,batchSize);
std::atomic<std::size_t> next{0}; std::atomic<std::size_t> next{0};
std::vector<double> active(workers,0.0); std::vector<double> active(workers,0.0);
std::vector<std::thread> threads; std::vector<FStandaloneWorkerThread> threads;
threads.reserve(workers); threads.reserve(workers);
for(std::size_t worker=0;worker<workers;++worker) for(std::size_t worker=0;worker<workers;++worker)
threads.emplace_back([&,worker] threads.emplace_back([&,worker]
@@ -39,7 +40,7 @@ public:
active[worker]=std::chrono::duration<double>( active[worker]=std::chrono::duration<double>(
std::chrono::steady_clock::now()-started).count(); std::chrono::steady_clock::now()-started).count();
}); });
for(std::thread& thread:threads)thread.join(); for(FStandaloneWorkerThread& thread:threads)thread.join();
double total=0.0; double total=0.0;
for(std::size_t worker=0;worker<workers;++worker) for(std::size_t worker=0;worker<workers;++worker)
{ {
+95
View File
@@ -0,0 +1,95 @@
#pragma once
#include "StandaloneWorkerThread.h"
#include <algorithm>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdio>
#include <cstdint>
#include <fstream>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#if defined(__linux__)
#include <unistd.h>
#endif
namespace StandaloneTlsProbe
{
#if defined(__linux__)
struct FMemorySample
{
std::uint64_t virtualKiB=0;
std::uint64_t residentKiB=0;
};
inline FMemorySample ReadMemory()
{
std::ifstream statm("/proc/self/statm");
std::uint64_t virtualPages=0,residentPages=0;
statm>>virtualPages>>residentPages;
const long pageSize=sysconf(_SC_PAGESIZE);
if(!statm||pageSize<=0)return {};
return {virtualPages*static_cast<std::uint64_t>(pageSize)/1024,
residentPages*static_cast<std::uint64_t>(pageSize)/1024};
}
inline int Run(int workerCount)
{
workerCount=std::clamp(workerCount,0,12);
std::mutex mutex;
std::condition_variable changed;
bool release=false;
std::atomic<int> ready{0};
std::vector<FStandaloneWorkerThread> workers;
workers.reserve(static_cast<std::size_t>(workerCount));
FMemorySample previous=ReadMemory();
std::printf("[TlsProbe] workers=0 create_ms=0.000 rss_kib=%llu rss_delta_kib=0 vms_kib=%llu stack_bytes=%zu\n",
static_cast<unsigned long long>(previous.residentKiB),
static_cast<unsigned long long>(previous.virtualKiB),
FStandaloneWorkerThread::StackSizeBytes);
for(int index=1;index<=workerCount;++index)
{
const auto start=std::chrono::steady_clock::now();
workers.emplace_back([&]
{
ready.fetch_add(1,std::memory_order_release);
changed.notify_all();
std::unique_lock lock(mutex);
changed.wait(lock,[&]{return release;});
});
{
std::unique_lock lock(mutex);
changed.wait(lock,[&]{return ready.load(std::memory_order_acquire)>=index;});
}
const double createMs=std::chrono::duration<double,std::milli>(
std::chrono::steady_clock::now()-start).count();
const FMemorySample current=ReadMemory();
const std::int64_t rssDelta=static_cast<std::int64_t>(current.residentKiB)
-static_cast<std::int64_t>(previous.residentKiB);
std::printf("[TlsProbe] workers=%d create_ms=%.3f rss_kib=%llu rss_delta_kib=%lld vms_kib=%llu\n",
index,createMs,static_cast<unsigned long long>(current.residentKiB),
static_cast<long long>(rssDelta),static_cast<unsigned long long>(current.virtualKiB));
previous=current;
}
{
std::lock_guard lock(mutex);
release=true;
}
changed.notify_all();
for(FStandaloneWorkerThread& worker:workers)worker.join();
std::printf("[TlsProbe] status=PASS threads_joined=%d\n",workerCount);
return 0;
}
#else
inline int Run(int)
{
std::fprintf(stderr,"TLS probe is Linux-only.\n");
return 2;
}
#endif
}
+54 -759
View File
@@ -1,5 +1,7 @@
#include "OwnerWorldLoader.h" #include "OwnerWorldLoader.h"
#include "StreamingWorld.h" #include "StreamingWorld.h"
#include "StreamBenchmarkPipeline.h"
#include "WorldAssemblyPrototype.h"
#include "StandaloneCoreScheduler.h" #include "StandaloneCoreScheduler.h"
#include "../Core/src/StandaloneSnapshotAdapter.h" #include "../Core/src/StandaloneSnapshotAdapter.h"
#include "../Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h" #include "../Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h"
@@ -52,6 +54,9 @@
namespace namespace
{ {
using StandaloneStreamBenchmark::FHashedTile;
using StandaloneStreamBenchmark::HashTileRows;
struct V3 { float X=0.0f,Y=0.0f,Z=0.0f; }; struct V3 { float X=0.0f,Y=0.0f,Z=0.0f; };
V3 Add(V3 A,V3 B){return {A.X+B.X,A.Y+B.Y,A.Z+B.Z};} V3 Add(V3 A,V3 B){return {A.X+B.X,A.Y+B.Y,A.Z+B.Z};}
V3 Sub(V3 A,V3 B){return {A.X-B.X,A.Y-B.Y,A.Z-B.Z};} V3 Sub(V3 A,V3 B){return {A.X-B.X,A.Y-B.Y,A.Z-B.Z};}
@@ -6932,354 +6937,6 @@ float3 Lit=Rock*(Ambient+0.88*Diffuse)+float3(0.50,0.69,0.82)*Head*0.75;
return TotalSamples>0&&LegacyToDetailed.Unmatched+DetailedToLegacy.Unmatched==0?0:10; return TotalSamples>0&&LegacyToDetailed.Unmatched+DetailedToLegacy.Unmatched==0?0:10;
} }
void HashWord(uint64& Hash,uint64 Word,int32 Bytes=8)
{
for(int32 I=0;I<Bytes;++I)
{
Hash^=static_cast<uint8>(Word>>(I*8));
Hash*=1099511628211ull;
}
}
struct FHashedTile
{
FVoxelTileKey Key;
uint64 Hash=14695981039346656037ull;
};
bool TileKeyLessForHash(const FVoxelTileKey& A,const FVoxelTileKey& B)
{
if(A.Level!=B.Level)return A.Level<B.Level;
if(A.Coord.Z!=B.Coord.Z)return A.Coord.Z<B.Coord.Z;
if(A.Coord.Y!=B.Coord.Y)return A.Coord.Y<B.Coord.Y;
return A.Coord.X<B.Coord.X;
}
uint64 HashTileRows(std::vector<FHashedTile>& Rows)
{
std::sort(Rows.begin(),Rows.end(),[](const FHashedTile& A,const FHashedTile& B)
{return TileKeyLessForHash(A.Key,B.Key);});
uint64 Hash=14695981039346656037ull;
for(const FHashedTile& Row:Rows)
{
HashWord(Hash,static_cast<uint32>(Row.Key.Level),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.X),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.Y),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.Z),4);
HashWord(Hash,Row.Hash);
}
return Hash;
}
int RunPipelinedStreamingBenchmark(std::shared_ptr<FStandaloneOwnerWorld> OwnerWorld,
const VoxelForgeCore::ResolvedWorldSnapshot& CoreSnapshot,
const FVector& CameraPositionVoxels,int32 WorkerCount,int32 MaxLevel,
VoxelForgeCore::DetailVariant DetailVariant,const VoxelForgeCore::JobScheduler& Scheduler,
bool bHashDensity,bool bSkipUvAndColors,bool bSkipMaterialGroups,bool bSkipUV,bool bSkipColors,
std::chrono::steady_clock::time_point ColdStart,bool bProfileColumnOverlap,
int32 FarHorizonLOD8InteriorStepVoxels)
{
using Clock=std::chrono::steady_clock;
FStandaloneOwnerWorld& World=*OwnerWorld;
const bool bRoundTunnels=World.Generator->bStandaloneResearchRoundTunnels;
const bool bEnhancedTunnelWalls=World.Generator->bStandaloneResearchEnhancedWalls;
VoxelForgeCore::World Shape(CoreSnapshot);
FStandaloneDesiredTileSet Desired=StandaloneWorldMesher::BuildDesiredSet(World,CameraPositionVoxels);
const auto CoreTiles=Shape.desiredTiles(
{CameraPositionVoxels.X,CameraPositionVoxels.Y,CameraPositionVoxels.Z});
Desired.Tiles.clear();Desired.Tiles.reserve(CoreTiles.size());
for(const auto& Key:CoreTiles)
Desired.Tiles.emplace_back(FIntVector(Key.coordinate.x,Key.coordinate.y,Key.coordinate.z),Key.lod);
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());
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)
{
const FIntVector Origin=Tile.OriginVoxels();const int32 Extent=Tile.ExtentVoxels();
ClipMin.X=std::min(ClipMin.X,Origin.X);ClipMin.Y=std::min(ClipMin.Y,Origin.Y);ClipMin.Z=std::min(ClipMin.Z,Origin.Z);
ClipMax.X=std::max(ClipMax.X,Origin.X+Extent);ClipMax.Y=std::max(ClipMax.Y,Origin.Y+Extent);ClipMax.Z=std::max(ClipMax.Z,Origin.Z+Extent);
if(Tile.Level<World.FullResClipLevels)
{
FineMin.X=std::min(FineMin.X,Origin.X);FineMin.Y=std::min(FineMin.Y,Origin.Y);FineMin.Z=std::min(FineMin.Z,Origin.Z);
FineMax.X=std::max(FineMax.X,Origin.X+Extent);FineMax.Y=std::max(FineMax.Y,Origin.Y+Extent);FineMax.Z=std::max(FineMax.Z,Origin.Z+Extent);
}
}
if(FineMin.X==INT32_MAX||ClipMin.X==INT32_MAX)
{std::fprintf(stderr,"[StreamPipeline] no desired detail or clipmap tiles.\n");return 7;}
const FIntVector CenterChunk=Desired.CenterChunk;
std::unordered_set<FVoxelTileKey,FStandaloneTileKeyHash> Neighborhood;
Neighborhood.reserve(32);
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level==0&&std::abs(Tile.Coord.X-CenterChunk.X)<=1
&&std::abs(Tile.Coord.Y-CenterChunk.Y)<=1&&std::abs(Tile.Coord.Z-CenterChunk.Z)<=1)
Neighborhood.insert(Tile);
if(Neighborhood.size()!=27)
{std::fprintf(stderr,"[StreamPipeline] expected 27 player-neighborhood tiles, found %zu.\n",Neighborhood.size());return 7;}
// The initial desired set now owns all clipmap metadata needed by this Core-only run.
// Release the separate compatibility-world generation graph before compiling Core.
World.Generator.reset();
World.Manager.reset();
World.DefinitionStorage.clear();
World.BiomeStorage.clear();
World.OperationStorage.clear();
World.DensitySamples.clear();
std::string BuildError;
const bool bIncludeFarWorld=MaxLevel<0||MaxLevel>=World.FullResClipLevels;
const auto ShapeBuildStart=Clock::now();
VoxelForgeCore::ShapeBuildRequest ShapeRequest;
ShapeRequest.minVoxel={FineMin.X,FineMin.Y,FineMin.Z};
ShapeRequest.maxVoxel={FineMax.X,FineMax.Y,FineMax.Z};
ShapeRequest.clipMinVoxel={ClipMin.X,ClipMin.Y,ClipMin.Z};
ShapeRequest.clipMaxVoxel={ClipMax.X,ClipMax.Y,ClipMax.Z};
ShapeRequest.workerLimit=static_cast<uint32>(std::clamp(WorkerCount,1,16));
ShapeRequest.detail=DetailVariant;ShapeRequest.includeFarWorld=bIncludeFarWorld;
ShapeRequest.roundTunnels=bRoundTunnels;
ShapeRequest.enhancedTunnelWalls=bEnhancedTunnelWalls;
if(!Shape.compile(ShapeRequest,Scheduler,BuildError))
{std::fprintf(stderr,"[StreamPipeline] full shape build failed: %s\n",BuildError.c_str());return 2;}
const auto ShapeReady=Clock::now();
const double ShapeSeconds=std::chrono::duration<double>(ShapeReady-ShapeBuildStart).count();
FStandaloneStreamingGenerator Streamer(World,WorkerCount,bHashDensity,nullptr,MaxLevel,
bSkipUvAndColors,bSkipMaterialGroups,bSkipUV,bSkipColors,&Shape,bProfileColumnOverlap,
FarHorizonLOD8InteriorStepVoxels);
const auto StreamStart=Clock::now();
const FStandaloneStreamingUpdate Update=Streamer.StartWithDesired(Desired);
if(Update.DesiredTiles!=static_cast<int32>(Desired.Tiles.size()))
{
Streamer.Stop();
std::fprintf(stderr,"[StreamPipeline] expected %zu tiles but queued %d.\n",
Desired.Tiles.size(),Update.DesiredTiles);return 7;
}
std::vector<FHashedTile> DensityRows,MeshRows,PayloadRows,TopologyRows;
int32 Finished=0,NeighborhoodFinished=0,FullDetailFinished=0;
int32 FullDetailExpected=0;
struct FColumnXY
{
std::int64_t X=0,Y=0;
bool operator==(const FColumnXY&)const=default;
};
struct FColumnXYHash
{
std::size_t operator()(const FColumnXY& Value)const noexcept
{
const std::size_t X=std::hash<std::int64_t>{}(Value.X);
const std::size_t Y=std::hash<std::int64_t>{}(Value.Y);
return X^(Y+static_cast<std::size_t>(0x9E3779B9u)+(X<<6)+(X>>2));
}
};
struct FFirstColumnUse
{
FVoxelTileKey Tile;
std::uint64_t WorkerHash=0;
};
std::array<std::unordered_map<FColumnXY,std::vector<FFirstColumnUse>,FColumnXYHash>,9> ColumnUsesByLOD;
std::array<std::uint64_t,9> ColumnDuplicateEventsByLOD{},NeighbourDuplicateEventsByLOD{};
std::array<std::uint64_t,9> CrossWorkerNeighbourDuplicateEventsByLOD{};
std::array<std::uint64_t,9> ColumnCaptureTilesByLOD{},ExpectedTilesByLOD{};
std::array<bool,9> ColumnCaptureCompleteByLOD{};
ColumnCaptureCompleteByLOD.fill(true);
std::array<double,9> WorkerSecondsByLOD{};
std::array<double,9> ColumnEvalMsByLOD{},MarchingExclusiveMsByLOD{};
std::array<double,9> GroundRefineExclusiveMsByLOD{},CapRefineExclusiveMsByLOD{};
std::array<double,9> MeshAssemblyMsByLOD{};
std::array<std::uint64_t,9> TileCountByLOD{};
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level>=0&&Tile.Level<static_cast<int32>(ExpectedTilesByLOD.size()))
++ExpectedTilesByLOD[static_cast<std::size_t>(Tile.Level)];
const auto AreSameLODNeighbours=[](const FVoxelTileKey& A,const FVoxelTileKey& B)
{
if(A.Level!=B.Level)return false;
const std::int64_t DX=std::abs(static_cast<std::int64_t>(A.Coord.X)-B.Coord.X);
const std::int64_t DY=std::abs(static_cast<std::int64_t>(A.Coord.Y)-B.Coord.Y);
const std::int64_t DZ=std::abs(static_cast<std::int64_t>(A.Coord.Z)-B.Coord.Z);
return std::max({DX,DY,DZ})<=1&&(DX+DY+DZ)>0;
};
uint64 NativeSolidBoxes=0,NativeAirBoxes=0,NativeMixedBoxes=0,NativeUnknownBoxes=0;
uint64 NativeFieldCalls=0,NativeColumnHits=0,NativeColumnMisses=0,NativeMeshingSkips=0;
double NativeClassificationMilliseconds=0.0,NativeColumnComputeMilliseconds=0.0;
double NativeMeshingMilliseconds=0.0;
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level<World.FullResClipLevels)++FullDetailExpected;
Clock::time_point NeighborhoodReady{},FullDetailReady{},WholeViewReady{};
bool bNeighborhoodReported=false,bFullDetailReported=false;
while(Finished<Update.DesiredTiles)
{
std::vector<FStandaloneCpuTile> Ready=Streamer.TakeReady();
if(Ready.empty()){std::this_thread::sleep_for(std::chrono::milliseconds(1));continue;}
for(const FStandaloneCpuTile& Tile:Ready)
{
++Finished;
if(Tile.Key.Level>=0&&Tile.Key.Level<static_cast<int32>(TileCountByLOD.size()))
{
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
++TileCountByLOD[LOD];
WorkerSecondsByLOD[LOD]+=Tile.WorkerSeconds;
ColumnEvalMsByLOD[LOD]+=Tile.CoreDiagnostics.columnEvaluationExclusiveMilliseconds;
MarchingExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.marchingCubesExclusiveMilliseconds;
GroundRefineExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.groundRefinementExclusiveMilliseconds;
CapRefineExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.capRefinementExclusiveMilliseconds;
MeshAssemblyMsByLOD[LOD]+=Tile.CoreDiagnostics.meshAssemblyMilliseconds;
}
if(bProfileColumnOverlap&&Tile.Key.Level>=0
&&Tile.Key.Level<static_cast<int32>(ColumnCaptureTilesByLOD.size()))
{
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
++ColumnCaptureTilesByLOD[LOD];
ColumnCaptureCompleteByLOD[LOD]=ColumnCaptureCompleteByLOD[LOD]
&&Tile.CoreDiagnostics.columnCoordinateCaptureComplete;
std::vector<std::array<std::int64_t,2>> Coordinates=
Tile.CoreDiagnostics.evaluatedColumnCoordinates;
std::sort(Coordinates.begin(),Coordinates.end());
Coordinates.erase(std::unique(Coordinates.begin(),Coordinates.end()),Coordinates.end());
for(const auto& Coordinate:Coordinates)
{
const FColumnXY XY{Coordinate[0],Coordinate[1]};
auto [Uses,Inserted]=ColumnUsesByLOD[LOD].try_emplace(XY);
std::vector<FFirstColumnUse>& PriorUses=Uses->second;
if(Inserted)
{
PriorUses.push_back({Tile.Key,Tile.CoreDiagnostics.columnEvaluationWorkerHash});
continue;
}
++ColumnDuplicateEventsByLOD[LOD];
bool bHasNeighbourDuplicate=false,bHasCrossWorkerNeighbourDuplicate=false;
for(const FFirstColumnUse& Prior:PriorUses)
{
if(!AreSameLODNeighbours(Prior.Tile,Tile.Key))continue;
bHasNeighbourDuplicate=true;
bHasCrossWorkerNeighbourDuplicate=bHasCrossWorkerNeighbourDuplicate
||Prior.WorkerHash!=Tile.CoreDiagnostics.columnEvaluationWorkerHash;
}
if(bHasNeighbourDuplicate)++NeighbourDuplicateEventsByLOD[LOD];
if(bHasCrossWorkerNeighbourDuplicate)
++CrossWorkerNeighbourDuplicateEventsByLOD[LOD];
PriorUses.push_back({Tile.Key,Tile.CoreDiagnostics.columnEvaluationWorkerHash});
}
}
WholeViewReady=std::max(WholeViewReady,Tile.CompletedAt);
if(Neighborhood.contains(Tile.Key))
{
++NeighborhoodFinished;
NeighborhoodReady=std::max(NeighborhoodReady,Tile.CompletedAt);
}
if(Tile.Key.Level<World.FullResClipLevels)
{
++FullDetailFinished;
FullDetailReady=std::max(FullDetailReady,Tile.CompletedAt);
NativeSolidBoxes+=Tile.CoreDiagnostics.solidBoxes;
NativeAirBoxes+=Tile.CoreDiagnostics.airBoxes;
NativeMixedBoxes+=Tile.CoreDiagnostics.mixedBoxes;
NativeUnknownBoxes+=Tile.CoreDiagnostics.unknownBoxes;
NativeFieldCalls+=Tile.CoreDiagnostics.fieldCalls;
NativeColumnHits+=Tile.CoreDiagnostics.columnCacheHits;
NativeColumnMisses+=Tile.CoreDiagnostics.columnCacheMisses;
NativeMeshingSkips+=Tile.CoreDiagnostics.meshingSkipped?1u:0u;
NativeClassificationMilliseconds+=Tile.CoreDiagnostics.classificationMilliseconds;
NativeColumnComputeMilliseconds+=Tile.CoreDiagnostics.columnComputeMilliseconds;
NativeMeshingMilliseconds+=Tile.CoreDiagnostics.meshingMilliseconds;
}
if(bHashDensity)
{
if(Tile.bHasDensityHash)DensityRows.push_back({Tile.Key,Tile.DensityHash});
if(Tile.bHasMeshHash)MeshRows.push_back({Tile.Key,Tile.MeshHash});
if(Tile.bHasPayloadHash)PayloadRows.push_back({Tile.Key,Tile.PayloadHash});
if(Tile.bHasTopologyHash)TopologyRows.push_back({Tile.Key,Tile.TopologyHash});
}
}
if(!bNeighborhoodReported&&NeighborhoodFinished==static_cast<int32>(Neighborhood.size()))
{
std::printf("[PipelineMilestone] neighborhood_ready=%.3fs generated=%d/27\n",
std::chrono::duration<double>(NeighborhoodReady-ColdStart).count(),NeighborhoodFinished);
bNeighborhoodReported=true;
}
if(!bFullDetailReported&&FullDetailFinished==FullDetailExpected)
{
std::printf("[PipelineMilestone] full_detail_ready=%.3fs generated=%d/%d\n",
std::chrono::duration<double>(FullDetailReady-ColdStart).count(),
FullDetailFinished,FullDetailExpected);
bFullDetailReported=true;
}
}
Streamer.Stop();
bool bColumnOverlapCapturePassing=true;
if(bProfileColumnOverlap)
{
for(std::size_t LOD=0;LOD<ColumnCaptureTilesByLOD.size();++LOD)
{
const bool bLODComplete=ColumnCaptureCompleteByLOD[LOD]
&&ColumnCaptureTilesByLOD[LOD]==ExpectedTilesByLOD[LOD];
bColumnOverlapCapturePassing=bColumnOverlapCapturePassing&&bLODComplete;
std::printf("[WorldAssemblerLODColumnOverlap] lod=%zu tiles=%llu expected_tiles=%llu unique_xy_columns=%zu repeated_tile_evaluations=%llu neighbouring_duplicate_evaluations=%llu cross_worker_neighbouring_duplicates=%llu capture_complete=%d\n",
LOD,static_cast<unsigned long long>(ColumnCaptureTilesByLOD[LOD]),
static_cast<unsigned long long>(ExpectedTilesByLOD[LOD]),
ColumnUsesByLOD[LOD].size(),
static_cast<unsigned long long>(ColumnDuplicateEventsByLOD[LOD]),
static_cast<unsigned long long>(NeighbourDuplicateEventsByLOD[LOD]),
static_cast<unsigned long long>(CrossWorkerNeighbourDuplicateEventsByLOD[LOD]),
bLODComplete?1:0);
}
}
for(std::size_t LOD=0;LOD<TileCountByLOD.size();++LOD)
{
std::printf("[WorldAssemblerLODWorker] lod=%zu tiles=%llu worker_sum_s=%.6f column_eval_exclusive_ms=%.3f mc_exclusive_ms=%.3f ground_refine_exclusive_ms=%.3f cap_refine_exclusive_ms=%.3f mesh_assembly_ms=%.3f\n",
LOD,static_cast<unsigned long long>(TileCountByLOD[LOD]),WorkerSecondsByLOD[LOD],
ColumnEvalMsByLOD[LOD],MarchingExclusiveMsByLOD[LOD],
GroundRefineExclusiveMsByLOD[LOD],CapRefineExclusiveMsByLOD[LOD],MeshAssemblyMsByLOD[LOD]);
}
const double NeighborhoodSeconds=std::chrono::duration<double>(NeighborhoodReady-ColdStart).count();
const double NeighborhoodMeshSeconds=std::chrono::duration<double>(NeighborhoodReady-ShapeReady).count();
const double FullDetailSeconds=std::chrono::duration<double>(FullDetailReady-ColdStart).count();
const double WholeViewSeconds=std::chrono::duration<double>(WholeViewReady-ColdStart).count();
const double StreamSeconds=std::chrono::duration<double>(WholeViewReady-StreamStart).count();
std::printf("[StreamPipeline] workers=%d shape=%.3fs neighborhood_mesh=%.3fs neighborhood_ready=%.3fs full_detail_ready=%.3fs whole_view_ready=%.3fs neighborhood_tiles=%d/27 full_detail_tiles=%d/%d whole_tiles=%d/%zu stream_wall=%.3fs cache_hits=0 full_payload=1\n",
WorkerCount,ShapeSeconds,NeighborhoodMeshSeconds,NeighborhoodSeconds,
FullDetailSeconds,WholeViewSeconds,NeighborhoodFinished,
FullDetailFinished,FullDetailExpected,Finished,Desired.Tiles.size(),StreamSeconds);
std::printf("[WorldAssemblerTilePipeline] full_detail_tiles=%d solid_boxes=%llu air_boxes=%llu mixed_boxes=%llu unknown_boxes=%llu whole_tile_skips=%llu field_calls=%llu column_cache_hits=%llu column_cache_misses=%llu column_compute_worker_ms=%.3f classification_worker_ms=%.3f meshing_worker_ms=%.3f\n",
FullDetailExpected,static_cast<unsigned long long>(NativeSolidBoxes),
static_cast<unsigned long long>(NativeAirBoxes),
static_cast<unsigned long long>(NativeMixedBoxes),
static_cast<unsigned long long>(NativeUnknownBoxes),
static_cast<unsigned long long>(NativeMeshingSkips),
static_cast<unsigned long long>(NativeFieldCalls),
static_cast<unsigned long long>(NativeColumnHits),
static_cast<unsigned long long>(NativeColumnMisses),
NativeColumnComputeMilliseconds,NativeClassificationMilliseconds,
NativeMeshingMilliseconds);
bool bHashesPassing=true;
if(bHashDensity)
{
bHashesPassing=DensityRows.size()==Desired.Tiles.size()
&&MeshRows.size()==Desired.Tiles.size()
&&PayloadRows.size()==Desired.Tiles.size()
&&TopologyRows.size()==Desired.Tiles.size();
std::vector<FHashedTile> FullDensity,FullMesh,FullPayload,FullTopology;
for(const FHashedTile& Row:DensityRows)if(Row.Key.Level<World.FullResClipLevels)FullDensity.push_back(Row);
for(const FHashedTile& Row:MeshRows)if(Row.Key.Level<World.FullResClipLevels)FullMesh.push_back(Row);
for(const FHashedTile& Row:PayloadRows)if(Row.Key.Level<World.FullResClipLevels)FullPayload.push_back(Row);
for(const FHashedTile& Row:TopologyRows)if(Row.Key.Level<World.FullResClipLevels)FullTopology.push_back(Row);
std::printf("[PipelineFullDetailHash] tiles=%d density=0x%016llx mesh=0x%016llx payload=0x%016llx topology=0x%016llx\n",
FullDetailExpected,static_cast<unsigned long long>(HashTileRows(FullDensity)),
static_cast<unsigned long long>(HashTileRows(FullMesh)),
static_cast<unsigned long long>(HashTileRows(FullPayload)),
static_cast<unsigned long long>(HashTileRows(FullTopology)));
std::printf("[PipelineWholeViewHash] tiles=%zu density=0x%016llx mesh=0x%016llx payload=0x%016llx topology=0x%016llx\n",
Desired.Tiles.size(),static_cast<unsigned long long>(HashTileRows(DensityRows)),
static_cast<unsigned long long>(HashTileRows(MeshRows)),
static_cast<unsigned long long>(HashTileRows(PayloadRows)),
static_cast<unsigned long long>(HashTileRows(TopologyRows)));
}
return NeighborhoodFinished==static_cast<int32>(Neighborhood.size())
&&FullDetailFinished==FullDetailExpected&&Finished==Update.DesiredTiles&&bHashesPassing
&&(!bProfileColumnOverlap||bColumnOverlapCapturePassing)?0:6;
}
int RunStreamingBenchmark(FStandaloneOwnerWorld& World,VoxelForgeCore::World* CoreWorld, int RunStreamingBenchmark(FStandaloneOwnerWorld& World,VoxelForgeCore::World* CoreWorld,
const FVector& CameraPositionVoxels, const FVector& CameraPositionVoxels,
int32 WorkerCount,int32 MaxLevel,bool bRoundTunnels, int32 WorkerCount,int32 MaxLevel,bool bRoundTunnels,
@@ -8132,414 +7789,6 @@ float3 Lit=Rock*(Ambient+0.88*Diffuse)+float3(0.50,0.69,0.82)*Head*0.75;
&&analyticReverseCovered==1&&packedAnalyticRenderSame?0:12; &&analyticReverseCovered==1&&packedAnalyticRenderSame?0:12;
} }
std::int64_t WorldAssemblyFixed(double voxels)
{return static_cast<std::int64_t>(std::llround(voxels*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel));}
std::int64_t WorldAssemblyQ16(double value)
{return static_cast<std::int64_t>(std::llround(value*65536.0));}
std::int64_t WorldAssemblyWavelength(double frequency,double fallbackVoxels)
{
const double wavelength=std::isfinite(frequency)&&frequency>0.0?1.0/frequency:fallbackVoxels;
return std::max<std::int64_t>(1,WorldAssemblyFixed(wavelength));
}
uint64 WorldAssemblyFeatureId(uint32 seed,int64 x,int64 y,uint32 kind)
{
uint64 hash=14695981039346656037ull;
const auto add=[&](uint64 value,int bytes)
{
for(int i=0;i<bytes;++i){hash^=static_cast<uint8>(value>>(8*i));hash*=1099511628211ull;}
};
add(seed,4);add(static_cast<uint64>(x),8);add(static_cast<uint64>(y),8);add(kind,4);
return hash?hash:1;
}
bool BuildFiniteStrateRoute(VoxelForgeCore::WorldAssemblyRecipeV1& recipe,
VoxelForgeCore::WorldAssemblyStratumPlanV1& stratum,std::uint64_t& tested,
std::uint64_t& gradeRejected,std::uint64_t& sweepRejected,std::string& error)
{
using namespace VoxelForgeCore;
constexpr std::int64_t PlayerRadiusQ=348; // 0.34 m in Core's 0.25 m voxel scale.
constexpr std::int64_t PlayerHeightQ=1802; // 1.76 m in Core's 0.25 m voxel scale.
constexpr std::int64_t HalfHeightQ=PlayerHeightQ/2;
constexpr std::int64_t StepQ=128; // 0.5 Core voxel, finer than the density lattice.
constexpr std::int64_t ProbeRadiusQ=174;
constexpr std::int64_t SupportDepthQ=256;
constexpr std::int64_t GradeQ16=17560; // tan(15 degrees), rounded upward.
constexpr std::int64_t RouteRadiusQ=4*WorldAssemblySubvoxelsPerVoxel;
struct Direction {std::int32_t x,y;};
constexpr std::array<Direction,8> directions{{
{65536,0},{46341,46341},{0,65536},{-46341,46341},
{-65536,0},{-46341,-46341},{0,-65536},{46341,-46341}}};
struct Candidate
{
std::int64_t score=0;
std::int32_t centerX=0,centerY=0,direction=0;
std::vector<WorldAssemblyRoutePointV1> points;
};
auto& constraints=stratum.routeConstraints;
constraints.version=1;
constraints.capsuleRadiusSubvoxels=PlayerRadiusQ;
constraints.capsuleHeightSubvoxels=PlayerHeightQ;
constraints.maximumGradeQ16=GradeQ16;
constraints.sweepSpacingSubvoxels=StepQ;
constraints.supportProbeRadiusSubvoxels=ProbeRadiusQ;
constraints.supportSearchDepthSubvoxels=SupportDepthQ;
constraints.minimumClearanceSubvoxels=8;
constraints.minimumSupportProbes=3;
const Heightfield2D finalField(recipe,stratum);
if(!finalField.isValid())
{error="route planner received an invalid final composed field";return false;}
std::vector<Candidate> candidates;
constexpr std::int32_t halfLength=128;
constexpr std::int32_t waypointSpacing=8;
for(std::int32_t centerY=-256;centerY<=256;centerY+=64)
for(std::int32_t centerX=-256;centerX<=256;centerX+=64)
for(std::int32_t directionIndex=0;directionIndex<static_cast<std::int32_t>(directions.size());++directionIndex)
{
Candidate candidate;
candidate.centerX=centerX;candidate.centerY=centerY;candidate.direction=directionIndex;
candidate.points.reserve(33);
std::int64_t previousGround=0,previousX=0,previousY=0;
bool gradePass=true;
for(std::int32_t index=0;index<=32;++index)
{
const std::int64_t along=(index-16)*waypointSpacing;
const std::int64_t x=centerX+std::llround(
static_cast<double>(along)*directions[directionIndex].x/65536.0);
const std::int64_t y=centerY+std::llround(
static_cast<double>(along)*directions[directionIndex].y/65536.0);
const auto column=finalField.point(WorldAssemblyFixed(static_cast<double>(x)),
WorldAssemblyFixed(static_cast<double>(y)),0);
const std::int64_t horizontalQ=static_cast<std::int64_t>(std::llround(
std::hypot(static_cast<double>(x-previousX),static_cast<double>(y-previousY))
*WorldAssemblySubvoxelsPerVoxel));
if(index>0)
{
const std::int64_t riseQ=std::abs(column.groundHeightSubvoxels-previousGround);
if(horizontalQ==0||riseQ*65536>horizontalQ*GradeQ16)
{gradePass=false;break;}
candidate.score+=riseQ*65536/std::max<std::int64_t>(1,horizontalQ);
}
WorldAssemblyRoutePointV1 point;
point.positionSubvoxels={WorldAssemblyFixed(static_cast<double>(x)),
WorldAssemblyFixed(static_cast<double>(y)),column.groundHeightSubvoxels+HalfHeightQ};
point.radiusSubvoxels=RouteRadiusQ;
point.stableFeatureId=WorldAssemblyFeatureId(recipe.seed,
static_cast<std::int64_t>(x),static_cast<std::int64_t>(y),
0x52540000u+static_cast<std::uint32_t>(index));
candidate.points.push_back(point);
previousGround=column.groundHeightSubvoxels;previousX=x;previousY=y;
}
++tested;
if(gradePass)candidates.push_back(std::move(candidate));
else ++gradeRejected;
}
std::stable_sort(candidates.begin(),candidates.end(),[](const Candidate& a,const Candidate& b)
{
if(a.score!=b.score)return a.score<b.score;
if(a.centerY!=b.centerY)return a.centerY<b.centerY;
if(a.centerX!=b.centerX)return a.centerX<b.centerX;
return a.direction<b.direction;
});
std::uint64_t sweepAttempt=0,repairAttempt=0;
VoxelForgeCore::WorldAssemblyRouteAuditResult lastAudit{};
for(auto& candidate:candidates)
{
stratum.route=candidate.points;
std::int64_t liftQ=0;
constexpr std::int64_t RepairStepQ=64;
constexpr std::int64_t MaximumRepairLiftQ=SupportDepthQ-RepairStepQ;
for(;;)
{
if(liftQ>0)
for(std::size_t pointIndex=0;pointIndex<stratum.route.size();++pointIndex)
stratum.route[pointIndex].positionSubvoxels[2]
=candidate.points[pointIndex].positionSubvoxels[2]+liftQ;
const Heightfield2D candidateField(recipe,stratum);
const auto audit=AuditHeightfieldRoute(candidateField);
lastAudit=audit;
if(audit.passed)
{
if(liftQ>0)
std::printf("[WorldAssemblerRouteRepaired] uniform_lift_q=%lld support_limit_q=%lld\n",
static_cast<long long>(liftQ),static_cast<long long>(SupportDepthQ));
return true;
}
if(audit.blockedCapsuleSamples==0||liftQ>=MaximumRepairLiftQ)break;
const std::int64_t needed=std::max<std::int64_t>(1,
constraints.minimumClearanceSubvoxels-audit.minimumClearanceSubvoxels);
const std::int64_t steps=(needed+RepairStepQ-1)/RepairStepQ;
const std::int64_t nextLift=std::max(liftQ+RepairStepQ,liftQ+steps*RepairStepQ);
if(nextLift>MaximumRepairLiftQ)break;
liftQ=nextLift;
++repairAttempt;
}
if(sweepAttempt<3)
std::printf("[WorldAssemblerRouteCandidateRejected] ordinal=%llu blocked=%llu unsupported=%llu grade_failures=%llu minimum_clearance_q=%lld\n",
static_cast<unsigned long long>(sweepAttempt),
static_cast<unsigned long long>(lastAudit.blockedCapsuleSamples),
static_cast<unsigned long long>(lastAudit.unsupportedCenterSamples),
static_cast<unsigned long long>(lastAudit.gradeFailures),
static_cast<long long>(lastAudit.minimumClearanceSubvoxels));
++sweepAttempt;
++sweepRejected;
}
std::printf("[WorldAssemblerRouteSearchFailed] tested=%llu grade_rejected=%llu sweepable_candidates=%llu sweep_rejected=%llu last_blocked=%llu last_unsupported=%llu last_grade_failures=%llu\n",
static_cast<unsigned long long>(tested),static_cast<unsigned long long>(gradeRejected),
static_cast<unsigned long long>(candidates.size()),static_cast<unsigned long long>(sweepRejected),
static_cast<unsigned long long>(lastAudit.blockedCapsuleSamples),
static_cast<unsigned long long>(lastAudit.unsupportedCenterSamples),
static_cast<unsigned long long>(lastAudit.gradeFailures));
std::printf("[WorldAssemblerRouteRepairSummary] repair_attempts=%llu\n",
static_cast<unsigned long long>(repairAttempt));
stratum.route.clear();
error="finite-strate route candidates failed the composed-field capsule and support sweep";
return false;
}
bool AttachRound1WorldAssemblyPrototype(FStandaloneOwnerWorld& owner,VFJson::Value& root,
std::string& error,const std::string& manifestOutputPath)
{
if(!owner.Manager||!owner.Generator)
{error="world assembler prototype needs the resolved standalone owner world";return false;}
int32 surfaceChunkZ=0,topChunkZ=0,bottomChunkZ=0;
bool foundSurface=false;
for(int32 chunkZ=1024;chunkZ>=-4096;--chunkZ)
{
if(owner.Manager->GetGeneratorTypeForChunk(FIntVector(0,0,chunkZ))
!=ECaveGeneratorType::SurfaceWorld)continue;
surfaceChunkZ=chunkZ;
foundSurface=owner.Manager->GetStrateChunkZBounds(chunkZ,topChunkZ,bottomChunkZ);
break;
}
if(!foundSurface)
{error="world assembler prototype could not find a finite SurfaceWorld strate";return false;}
const FIntVector chunk(0,0,surfaceChunkZ);
const FSurfaceGenerationParams surface=owner.Manager->GetSurfaceParamsForChunk(chunk);
const FBiomeContext biomeContext=owner.Manager->GetBiomeContextForChunk(chunk);
const std::int64_t bottomVoxel=static_cast<std::int64_t>(bottomChunkZ)*CHUNK_SIZE;
const std::int64_t heightVoxels=static_cast<std::int64_t>(topChunkZ-bottomChunkZ+1)*CHUNK_SIZE;
const FBiomeMapParams& map=biomeContext.Map;
const UVoxelStrateDefinition* definition=owner.Manager->GetStrateForChunk(chunk);
VoxelForgeCore::WorldAssemblyManifest manifest;
auto& recipe=manifest.recipe;
recipe.seed=static_cast<uint32>(owner.Seed);
recipe.biomeCellSizeSubvoxels=WorldAssemblyFixed(map.CellSize);
recipe.biomeWarpSubvoxels=WorldAssemblyFixed(map.WarpStrength);
recipe.biomeWarpWavelengthSubvoxels=WorldAssemblyWavelength(map.WarpFrequency,556.0);
recipe.biomeBorderBlendSubvoxels=WorldAssemblyFixed(map.BorderBlend);
recipe.biomeClimateReliefWavelengthSubvoxels=WorldAssemblyWavelength(map.ReliefFrequency,3333.0);
recipe.biomeClimateMoistureWavelengthSubvoxels=WorldAssemblyWavelength(map.MoistureFrequency,2500.0);
recipe.biomeClimateReliefContrastQ16=WorldAssemblyQ16(map.ReliefContrast);
const auto makeProfile=[&](uint32 stableId,const FSurfaceGenerationParams& params,
const FBiomeResolved* climate)
{
VoxelForgeCore::WorldAssemblyBiomeProfileV1 profile;
profile.stableId=stableId;
profile.baseHeightSubvoxels=WorldAssemblyFixed(static_cast<double>(bottomVoxel)
+static_cast<double>(heightVoxels)*params.BaseGroundRelative);
profile.continentAmplitudeSubvoxels=WorldAssemblyFixed(params.ElevationRange);
profile.continentWavelengthSubvoxels=WorldAssemblyWavelength(params.ContinentFrequency,1000.0);
profile.mountainAmplitudeSubvoxels=WorldAssemblyFixed(params.ElevationRange*params.MountainStrength);
profile.mountainWavelengthSubvoxels=WorldAssemblyWavelength(params.MountainFrequency,500.0);
profile.detailAmplitudeSubvoxels=WorldAssemblyFixed(params.SurfaceRoughness);
profile.detailWavelengthSubvoxels=WorldAssemblyWavelength(params.DetailFrequency,25.0);
profile.reliefMinimumQ16=climate?WorldAssemblyQ16(climate->ReliefMin):0;
profile.reliefMaximumQ16=climate?WorldAssemblyQ16(climate->ReliefMax):65536;
profile.moistureMinimumQ16=climate?WorldAssemblyQ16(climate->MoistureMin):0;
profile.moistureMaximumQ16=climate?WorldAssemblyQ16(climate->MoistureMax):65536;
profile.reliefStrengthQ16=WorldAssemblyQ16(params.ReliefStrength);
profile.reliefContrastQ16=WorldAssemblyQ16(params.ReliefContrast);
profile.reliefWavelengthSubvoxels=WorldAssemblyWavelength(params.ReliefFrequency,667.0);
profile.heightWarpStrengthSubvoxels=WorldAssemblyFixed(params.HeightWarpStrength);
profile.heightWarpWavelengthSubvoxels=WorldAssemblyWavelength(params.HeightWarpFrequency,125.0);
profile.beachWidthSubvoxels=WorldAssemblyFixed(params.BeachWidth);
profile.cliffStrengthQ16=WorldAssemblyQ16(params.CliffStrength);
profile.cliffSlopeThresholdQ16=std::max<std::int64_t>(1,WorldAssemblyQ16(params.CliffSlopeThreshold));
profile.cliffSharpnessQ16=WorldAssemblyQ16(params.CliffSharpness);
profile.cliffSampleDistanceSubvoxels=WorldAssemblyFixed(std::max(0.5f,params.CliffSampleDist));
const double structuralAbsBound=static_cast<double>(params.ElevationRange)
+static_cast<double>(params.ElevationRange)*params.MountainStrength
+2.0*params.SurfaceRoughness;
const double cliffAbsBound=2.0*structuralAbsBound*params.CliffStrength*params.CliffSharpness;
profile.cliffMaximumDisplacementSubvoxels=WorldAssemblyFixed(params.CliffStrength>0.0f
?std::max(1.0,cliffAbsBound):0.0);
profile.hasCapProfile=true;
profile.capHeightSubvoxels=WorldAssemblyFixed(static_cast<double>(bottomVoxel)
+static_cast<double>(heightVoxels)*params.CeilingRelative);
profile.capWarpStrengthSubvoxels=WorldAssemblyFixed(params.CeilingWarpStrength);
profile.capWarpWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingWarpFrequency,100.0);
profile.capUndulationSubvoxels=WorldAssemblyFixed(params.CeilingUndulation);
profile.capWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingUndulationFrequency,500.0);
profile.capDetailAmplitudeSubvoxels=WorldAssemblyFixed(params.CeilingRoughness);
profile.capDetailWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingRoughnessFrequency,25.0);
profile.capRidgeAmplitudeSubvoxels=WorldAssemblyFixed(params.CeilingRidgeStrength);
profile.capRidgeWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingRidgeFrequency,50.0);
return profile;
};
if(biomeContext.IsValid()&&definition)
{
for(const FBiomeResolved& resolved:biomeContext.Biomes)
{
const UVoxelBiomeDefinition* biome=definition->Biomes.IsValidIndex(resolved.Index)
?definition->Biomes[resolved.Index]:nullptr;
FSurfaceGenerationParams params=surface;
if(biome&&biome->bOverrideTerrain&&biome->GeneratorType==ECaveGeneratorType::SurfaceWorld)
{
params=biome->SurfaceParams;
params.StrateTopWorldZ=surface.StrateTopWorldZ;
params.StrateBottomWorldZ=surface.StrateBottomWorldZ;
params.BoundarySealThickness=surface.BoundarySealThickness;
params.BaseDensity=surface.BaseDensity;
params.WaterLevelRelative=surface.WaterLevelRelative;
}
recipe.biomes.push_back(makeProfile(0x1001u+static_cast<uint32>(resolved.Index),params,&resolved));
}
}
if(recipe.biomes.empty())recipe.biomes.push_back(makeProfile(0x1001u,surface,nullptr));
VoxelForgeCore::WorldAssemblyStratumPlanV1 stratum;
stratum.strateIndex=owner.Manager->GetStrateIndex(
static_cast<float>((static_cast<double>(surfaceChunkZ*CHUNK_SIZE+CHUNK_SIZE/2))*VOXEL_SIZE));
stratum.topChunkZ=topChunkZ;
stratum.bottomChunkZ=bottomChunkZ;
const double strateBottom=static_cast<double>(bottomVoxel);
const double strateHeight=static_cast<double>(heightVoxels);
stratum.capHeightSubvoxels=WorldAssemblyFixed(strateBottom+strateHeight*surface.CeilingRelative);
stratum.capUndulationSubvoxels=WorldAssemblyFixed(surface.CeilingUndulation);
stratum.capWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingUndulationFrequency,250.0);
stratum.capDetailAmplitudeSubvoxels=WorldAssemblyFixed(surface.CeilingRoughness);
stratum.capDetailWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingRoughnessFrequency,25.0);
stratum.capRidgeAmplitudeSubvoxels=WorldAssemblyFixed(surface.CeilingRidgeStrength);
stratum.capRidgeWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingRidgeFrequency,50.0);
stratum.waterSurfaceSubvoxels=WorldAssemblyFixed(strateBottom+strateHeight*surface.WaterLevelRelative);
stratum.waterEnabled=definition&&definition->bHasWater&&surface.WaterLevelRelative>0.0f;
// Select a deterministic steep edge in the resolved owner field for a bounded shelf.
// Selection d'une pente deterministe dans le champ resolu pour une saillie bornee.
constexpr int probeSide=49,probeStep=32;
std::array<float,probeSide*probeSide> heights{};
std::array<uint8,probeSide*probeSide> valid{};
for(int y=0;y<probeSide;++y)
for(int x=0;x<probeSide;++x)
{
const float px=static_cast<float>((x-probeSide/2)*probeStep);
const float py=static_cast<float>((y-probeSide/2)*probeStep);
float ceiling=0.0f;
const std::size_t index=static_cast<std::size_t>(y)*probeSide+x;
valid[index]=owner.Generator->GetSurfaceHeightAt(px,py,topChunkZ,heights[index],ceiling)?1u:0u;
}
double steepest=0.0;int cliffX=0,cliffY=0;bool xAxis=true;int downhill=1;
for(int y=1;y<probeSide-1;++y)
for(int x=1;x<probeSide-1;++x)
{
const std::size_t center=static_cast<std::size_t>(y)*probeSide+x;
if(!valid[center]||!valid[center-1]||!valid[center+1]||!valid[center-probeSide]||!valid[center+probeSide])continue;
const double dx=static_cast<double>(heights[center+1]-heights[center-1]);
const double dy=static_cast<double>(heights[center+probeSide]-heights[center-probeSide]);
const double slope=(std::abs(dx)+std::abs(dy))/(4.0*probeStep);
if(slope>steepest){steepest=slope;cliffX=(x-probeSide/2)*probeStep;cliffY=(y-probeSide/2)*probeStep;
xAxis=std::abs(dx)>=std::abs(dy);downhill=(xAxis?dx:dy)>=0.0?-1:1;}
}
if(steepest>0.05)
{
float ground=0.0f,ceiling=0.0f;
if(owner.Generator->GetSurfaceHeightAt(static_cast<float>(cliffX),static_cast<float>(cliffY),
topChunkZ,ground,ceiling))
{
VoxelForgeCore::WorldAssemblyFeatureV1 shelf;
shelf.stableId=WorldAssemblyFeatureId(recipe.seed,cliffX,cliffY,0x4f564552u);
shelf.type=4;
constexpr int reach=72,width=36,height=64,feather=8;
const int dirX=xAxis?downhill:0,dirY=xAxis?0:downhill;
const int minX=xAxis?(dirX>0?cliffX-feather:cliffX-reach-feather)
:cliffX-width-feather;
const int maxX=xAxis?(dirX>0?cliffX+reach+feather:cliffX+feather)
:cliffX+width+feather;
const int minY=xAxis?cliffY-width-feather
:(dirY>0?cliffY-feather:cliffY-reach-feather);
const int maxY=xAxis?cliffY+width+feather
:(dirY>0?cliffY+reach+feather:cliffY+feather);
VoxelForgeCore::Heightfield2D baseField(recipe,stratum);
double lowestGround=std::numeric_limits<double>::infinity();
double highestGround=-std::numeric_limits<double>::infinity();
for(int sampleY=minY;sampleY<=maxY;sampleY+=4)
for(int sampleX=minX;sampleX<=maxX;sampleX+=4)
{
const auto sample=baseField.point(WorldAssemblyFixed(sampleX),
WorldAssemblyFixed(sampleY),0);
const double heightQ=static_cast<double>(sample.groundHeightSubvoxels)
/VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel;
lowestGround=std::min(lowestGround,heightQ);
highestGround=std::max(highestGround,heightQ);
}
if(!std::isfinite(lowestGround)||!std::isfinite(highestGround))
{error="world assembler cliff shelf could not bound its terrain columns";return false;}
shelf.minimumSubvoxels={WorldAssemblyFixed(minX),WorldAssemblyFixed(minY),
WorldAssemblyFixed(std::max<double>(bottomVoxel,lowestGround-4.0))};
shelf.maximumSubvoxels={WorldAssemblyFixed(maxX),WorldAssemblyFixed(maxY),
WorldAssemblyFixed(std::min<double>((topChunkZ+1)*CHUNK_SIZE,
highestGround+height+4.0))};
shelf.parametersSubvoxels={WorldAssemblyFixed(dirX),WorldAssemblyFixed(dirY),
WorldAssemblyFixed(height),WorldAssemblyFixed(reach)};
stratum.features.push_back(shelf);
}
}
std::uint64_t routeCandidates=0,routeGradeRejected=0,routeSweepRejected=0;
if(!BuildFiniteStrateRoute(recipe,stratum,routeCandidates,routeGradeRejected,
routeSweepRejected,error))return false;
std::printf("[WorldAssemblerRoutePlan] candidates=%llu grade_rejected=%llu sweep_rejected=%llu accepted_points=%zu capsule_m=0.34x1.76 corridor_radius_vox=4 support_probe_points=5 minimum_support_probes=%u status=PASS\n",
static_cast<unsigned long long>(routeCandidates),
static_cast<unsigned long long>(routeGradeRejected),
static_cast<unsigned long long>(routeSweepRejected),stratum.route.size(),
stratum.routeConstraints.minimumSupportProbes);
manifest.plan.strates.push_back(std::move(stratum));
if(!manifest.finalize(error))return false;
const std::string manifestText=manifest.ToJson();
const auto roundTrip=VoxelForgeCore::WorldAssemblyManifest::FromJson(manifestText,error);
if(!roundTrip||!roundTrip->validate(error)||roundTrip->ToJson()!=manifestText
||roundTrip->contentHash!=manifest.contentHash)
{if(error.empty())error="world assembly canonical plan serialization did not round-trip";return false;}
std::printf("[WorldAssemblerPlanSerialization] bytes=%zu canonical_round_trip=true route_points=%zu plan_hash=%016llx manifest_hash=%016llx status=PASS\n",
manifestText.size(),manifest.plan.strates.front().route.size(),
static_cast<unsigned long long>(manifest.plan.contentHash),
static_cast<unsigned long long>(manifest.contentHash));
if(!manifestOutputPath.empty())
{
const std::filesystem::path outputPath(manifestOutputPath);
std::error_code directoryError;
if(!outputPath.parent_path().empty())
std::filesystem::create_directories(outputPath.parent_path(),directoryError);
if(directoryError)
{error="could not create the world assembly manifest output directory";return false;}
std::ofstream output(outputPath,std::ios::binary);
if(!output)
{error="could not open the world assembly manifest output path";return false;}
output.write(manifestText.data(),static_cast<std::streamsize>(manifestText.size()));
if(!output)
{error="could not write the world assembly manifest payload";return false;}
}
VFJson::Value manifestJson;
if(!VFJson::Parser(manifestText).Parse(manifestJson,error))return false;
auto* rootObject=std::get_if<VFJson::Value::Object>(&root.Data);
if(!rootObject)
{error="owner snapshot root is not a JSON object";return false;}
(*rootObject)["world_assembly"]=std::move(manifestJson);
std::printf("[WorldAssemblerPrototype] recipe_version=%u evaluator_version=%u strata=%zu biomes=%zu strate_index=%d chunk_z=%d..%d serialized_bytes=%zu recipe_hash=%016llx plan_hash=%016llx manifest_hash=%016llx source=owner_surface_params_and_biome_map route_points=%zu features=%zu\n",
manifest.recipe.schemaVersion,manifest.recipe.evaluatorVersion,manifest.plan.strates.size(),
manifest.recipe.biomes.size(),manifest.plan.strates.front().strateIndex,topChunkZ,bottomChunkZ,
manifestText.size(),static_cast<unsigned long long>(manifest.recipe.contentHash),
static_cast<unsigned long long>(manifest.plan.contentHash),
static_cast<unsigned long long>(manifest.contentHash),manifest.plan.strates.front().route.size(),
manifest.plan.strates.front().features.size());
return true;
}
bool RunWorldAssemblerCapAudit(FStandaloneOwnerWorld& owner, bool RunWorldAssemblerCapAudit(FStandaloneOwnerWorld& owner,
const VoxelForgeCore::ResolvedWorldSnapshot& snapshot,VoxelForgeCore::World& world, const VoxelForgeCore::ResolvedWorldSnapshot& snapshot,VoxelForgeCore::World& world,
VoxelForgeCore::Vec3d walkCameraVoxels) VoxelForgeCore::Vec3d walkCameraVoxels)
@@ -9628,6 +8877,11 @@ int main(int Argc,char** Argv)
bool bStreamPipeline=false; bool bStreamPipeline=false;
bool bProfileColumnOverlap=false; bool bProfileColumnOverlap=false;
bool bCoarseFirstStreamOrder=false; bool bCoarseFirstStreamOrder=false;
bool bHasSeedOverride=false;
int32 SeedOverride=0;
bool bHasRenderDistanceOverride=false;
int32 RenderDistanceOverride=0;
bool bFloatingIslandsRecipe=false;
bool bProfileDetailBand=false; bool bProfileDetailBand=false;
bool bPassageDetailAuditOnly=false; bool bPassageDetailAuditOnly=false;
bool bGridStairAudit=false; bool bGridStairAudit=false;
@@ -9649,6 +8903,33 @@ int main(int Argc,char** Argv)
{ {
const std::string_view Arg=Argv[I]; const std::string_view Arg=Argv[I];
if(Arg.starts_with("--capture="))App.CapturePath=std::string(Arg.substr(10)); if(Arg.starts_with("--capture="))App.CapturePath=std::string(Arg.substr(10));
else if(Arg.starts_with("--seed="))
{
const std::string Value(Arg.substr(std::string_view("--seed=").size()));
char* End=nullptr;
const long long Parsed=std::strtoll(Value.c_str(),&End,10);
if(End==Value.c_str()||*End!='\0'||Parsed<INT32_MIN||Parsed>INT32_MAX)
{std::fprintf(stderr,"Invalid --seed value: %s\n",Value.c_str());return 2;}
SeedOverride=static_cast<int32>(Parsed);bHasSeedOverride=true;
}
else if(Arg.starts_with("--render-distance-chunks="))
{
const std::string Value(Arg.substr(std::string_view("--render-distance-chunks=").size()));
char* End=nullptr;
const long long Parsed=std::strtoll(Value.c_str(),&End,10);
if(End==Value.c_str()||*End!='\0'||Parsed<0||Parsed>INT32_MAX)
{std::fprintf(stderr,"Invalid --render-distance-chunks value: %s\n",Value.c_str());return 2;}
RenderDistanceOverride=static_cast<int32>(Parsed);bHasRenderDistanceOverride=true;
}
else if(Arg.starts_with("--recipe="))
{
const std::string_view Recipe=Arg.substr(std::string_view("--recipe=").size());
if(Recipe=="surface-world")bFloatingIslandsRecipe=false;
else if(Recipe=="floating-islands")
{bFloatingIslandsRecipe=true;App.bWorldAssemblerPrototype=true;App.bShapeWorld=true;}
else
{std::fprintf(stderr,"Invalid --recipe value: %.*s\n",static_cast<int>(Recipe.size()),Recipe.data());return 2;}
}
else if(Arg.starts_with("--far-horizon-lod8-step=")) else if(Arg.starts_with("--far-horizon-lod8-step="))
App.FarHorizonLOD8InteriorStepVoxels=std::max(0,std::atoi( App.FarHorizonLOD8InteriorStepVoxels=std::max(0,std::atoi(
std::string(Arg.substr(std::string_view("--far-horizon-lod8-step=").size())).c_str())); std::string(Arg.substr(std::string_view("--far-horizon-lod8-step=").size())).c_str()));
@@ -9885,6 +9166,16 @@ int main(int Argc,char** Argv)
if(!VFJson::Parser(std::move(OwnerJsonText)).Parse(App.OwnerJsonRoot,Error)) if(!VFJson::Parser(std::move(OwnerJsonText)).Parse(App.OwnerJsonRoot,Error))
{std::fprintf(stderr,"Owner data load failed: %s\n",Error.c_str());return 2;} {std::fprintf(stderr,"Owner data load failed: %s\n",Error.c_str());return 2;}
} }
if(bHasSeedOverride
&&!StandaloneWorldAssemblyPrototype::OverrideStandaloneSeed(App.OwnerJsonRoot,SeedOverride,Error))
{std::fprintf(stderr,"Seed override failed: %s\n",Error.c_str());return 2;}
if(bHasRenderDistanceOverride
&&!StandaloneWorldAssemblyPrototype::OverrideStandaloneRenderDistance(
App.OwnerJsonRoot,RenderDistanceOverride,Error))
{std::fprintf(stderr,"Render-distance override failed: %s\n",Error.c_str());return 2;}
if(bFloatingIslandsRecipe
&&!StandaloneWorldAssemblyPrototype::SelectTopStrateAsFloatingIslands(App.OwnerJsonRoot,Error))
{std::fprintf(stderr,"Floating-island recipe selection failed: %s\n",Error.c_str());return 2;}
if(!StandaloneOwnerLoader::Resolve(App.OwnerJsonRoot,*App.World,Error)) if(!StandaloneOwnerLoader::Resolve(App.OwnerJsonRoot,*App.World,Error))
{std::fprintf(stderr,"Owner data load failed: %s\n",Error.c_str());return 2;} {std::fprintf(stderr,"Owner data load failed: %s\n",Error.c_str());return 2;}
std::printf("[ColdTimeline] stage=owner_data_load end_ms=%.3f\n", std::printf("[ColdTimeline] stage=owner_data_load end_ms=%.3f\n",
@@ -9916,8 +9207,12 @@ int main(int Argc,char** Argv)
if(App.bWorldAssemblerPrototype) if(App.bWorldAssemblerPrototype)
{ {
const auto PlanStart=std::chrono::steady_clock::now(); const auto PlanStart=std::chrono::steady_clock::now();
const bool bPlanReady=AttachRound1WorldAssemblyPrototype(*App.World,App.OwnerJsonRoot, VoxelForgeCore::WorldAssemblyManifest WorldAssembly;
Error,WorldAssemblyManifestOutputPath); const bool bPlanReady=StandaloneWorldAssemblyPrototype::AttachRound1WorldAssemblyPrototype(*App.World,App.OwnerJsonRoot,
Error,WorldAssemblyManifestOutputPath,&WorldAssembly)
&&(!bFloatingIslandsRecipe
||StandaloneWorldAssemblyPrototype::AttachFloatingIslandWorldAssembly(
*App.World,App.OwnerJsonRoot,WorldAssembly,Error));
const double PlanMilliseconds=std::chrono::duration<double,std::milli>( const double PlanMilliseconds=std::chrono::duration<double,std::milli>(
std::chrono::steady_clock::now()-PlanStart).count(); std::chrono::steady_clock::now()-PlanStart).count();
std::printf("[WorldAssemblerPlanTiming] total_ms=%.3f status=%s\n", std::printf("[WorldAssemblerPlanTiming] total_ms=%.3f status=%s\n",
@@ -9978,7 +9273,7 @@ int main(int Argc,char** Argv)
if(bStreamBenchmark) if(bStreamBenchmark)
{ {
if(bStreamPipeline) if(bStreamPipeline)
return RunPipelinedStreamingBenchmark(App.World,App.Snapshot, return StandaloneStreamBenchmark::RunPipelinedStreamingBenchmark(App.World,App.Snapshot,
FVector(App.Position.X*4.0,App.Position.Y*4.0,App.Position.Z*4.0), FVector(App.Position.X*4.0,App.Position.Y*4.0,App.Position.Z*4.0),
App.WorkerCount,StreamBenchmarkMaxLevel,App.ShapeDetailVariant,App.CoreScheduler, App.WorkerCount,StreamBenchmarkMaxLevel,App.ShapeDetailVariant,App.CoreScheduler,
bStreamHash||!BakeMeshCachePath.empty(),bSkipUvAndColors,bSkipMaterialGroups, bStreamHash||!BakeMeshCachePath.empty(),bSkipUvAndColors,bSkipMaterialGroups,
@@ -0,0 +1,96 @@
#pragma once
#include <cstddef>
#include <memory>
#include <stdexcept>
#include <system_error>
#include <thread>
#include <type_traits>
#include <utility>
#if defined(__linux__)
#include <pthread.h>
#endif
// Linux's static TLS image is larger than the default pthread stack in this standalone build.
// Give only host-owned generation workers enough stack for that TLS plus normal call frames.
#if defined(__linux__)
class FStandaloneWorkerThread
{
public:
static constexpr std::size_t StackSizeBytes=32u*1024u*1024u;
FStandaloneWorkerThread()=default;
template<class F>
explicit FStandaloneWorkerThread(F&& function)
{
using FTask=std::decay_t<F>;
auto task=std::make_unique<FTask>(std::forward<F>(function));
pthread_attr_t attributes;
int result=pthread_attr_init(&attributes);
if(result!=0)throw std::system_error(result,std::generic_category(),"pthread_attr_init");
result=pthread_attr_setstacksize(&attributes,StackSizeBytes);
if(result==0)
{
result=pthread_create(&thread_,&attributes,&RunTask<FTask>,task.get());
if(result==0)task.release();
}
const int destroyResult=pthread_attr_destroy(&attributes);
if(result!=0)throw std::system_error(result,std::generic_category(),"pthread_create");
if(destroyResult!=0)
{
(void)pthread_join(thread_,nullptr);
throw std::system_error(destroyResult,std::generic_category(),"pthread_attr_destroy");
}
joinable_=true;
}
FStandaloneWorkerThread(const FStandaloneWorkerThread&)=delete;
FStandaloneWorkerThread& operator=(const FStandaloneWorkerThread&)=delete;
FStandaloneWorkerThread(FStandaloneWorkerThread&& other) noexcept
:thread_(other.thread_),joinable_(std::exchange(other.joinable_,false))
{}
FStandaloneWorkerThread& operator=(FStandaloneWorkerThread&& other) noexcept
{
if(this!=&other)
{
if(joinable_)(void)pthread_join(thread_,nullptr);
thread_=other.thread_;
joinable_=std::exchange(other.joinable_,false);
}
return *this;
}
~FStandaloneWorkerThread()
{
if(joinable_)(void)pthread_join(thread_,nullptr);
}
bool joinable()const noexcept{return joinable_;}
void join()
{
if(!joinable_)throw std::system_error(std::make_error_code(std::errc::invalid_argument));
const int result=pthread_join(thread_,nullptr);
if(result!=0)throw std::system_error(result,std::generic_category(),"pthread_join");
joinable_=false;
}
private:
template<class F>
static void* RunTask(void* raw)
{
std::unique_ptr<F> task(static_cast<F*>(raw));
(*task)();
return nullptr;
}
pthread_t thread_{};
bool joinable_=false;
};
#else
using FStandaloneWorkerThread=std::thread;
#endif
@@ -0,0 +1,237 @@
#include "OwnerWorldLoader.h"
#include "StandaloneCoreScheduler.h"
#include "StreamBenchmarkPipeline.h"
#include "WorldAssemblyPrototype.h"
#include "StandaloneTlsProbe.h"
#include "../Core/src/StandaloneSnapshotAdapter.h"
#include <algorithm>
#include <chrono>
#include <cstdio>
#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <iterator>
#include <memory>
#include <string>
#include <string_view>
namespace
{
struct FOptions
{
std::filesystem::path DataPath;
int WorkerCount=8;
int ClipRadius=3;
int MaxClipLevel=8;
int MaxLevel=-1;
int FarHorizonLOD8InteriorStepVoxels=0;
bool WorldAssemblerPrototype=false;
bool StreamBenchmark=false;
bool StreamPipeline=false;
bool StreamHash=false;
bool ProfileColumnOverlap=false;
bool ForceGenerate=false;
bool HasSeedOverride=false;
int SeedOverride=0;
bool HasRenderDistanceOverride=false;
int RenderDistanceOverride=0;
bool FloatingIslandsRecipe=false;
bool TlsProbeRequested=false;
int TlsProbeWorkers=0;
bool HasCamera=false;
FVector CameraMeters=FVector::ZeroVector;
};
bool ParseInteger(std::string_view text,int& output)
{
if(text.empty())return false;
char* end=nullptr;
const std::string value(text);
const long parsed=std::strtol(value.c_str(),&end,10);
if(end==value.c_str()||*end!='\0'||parsed<INT32_MIN||parsed>INT32_MAX)return false;
output=static_cast<int>(parsed);
return true;
}
bool ParseCamera(std::string_view text,FVector& meters)
{
const std::string values(text);
float x=0.0f,y=0.0f,z=0.0f,yaw=0.0f,pitch=0.0f;
if(std::sscanf(values.c_str(),"%f,%f,%f,%f,%f",&x,&y,&z,&yaw,&pitch)!=5)
return false;
meters={x,y,z};
return true;
}
bool ParseOptions(int argc,char** argv,FOptions& options)
{
const std::filesystem::path executable=std::filesystem::absolute(argv[0]);
options.DataPath=executable.parent_path().parent_path()/"data/owner_world.json";
for(int index=1;index<argc;++index)
{
const std::string_view arg(argv[index]);
const auto readInt=[&](std::string_view prefix,int& value)
{return arg.starts_with(prefix)&&ParseInteger(arg.substr(prefix.size()),value);};
if(arg=="--help"||arg=="-h")
{
std::printf("Usage: %s [owner_world.json] --world-assembler-prototype --stream-benchmark --stream-pipeline [options]\n"
" --workers=N --clip-radius=N --max-clip-level=N --max-level=N\n"
" --camera=X,Y,Z,YAW,PITCH (position in metres) --stream-hash\n"
" --profile-column-overlap --far-horizon-lod8-step=N --force-generate\n"
" --seed=N --recipe=surface-world|floating-islands\n"
" --render-distance-chunks=N (0 disables the extra far ring)\n"
" --tls-probe=N (Linux worker TLS/stack measurement; N=0..12)\n"
" --process-affinity=MASK --process-priority=Normal --frame-limit=FPS (viewer compatibility only)\n",
argv[0]);
return false;
}
if(arg=="--world-assembler-prototype")options.WorldAssemblerPrototype=true;
else if(arg=="--stream-benchmark")options.StreamBenchmark=true;
else if(arg=="--stream-pipeline")options.StreamPipeline=true;
else if(arg=="--stream-hash")options.StreamHash=true;
else if(arg=="--profile-column-overlap")options.ProfileColumnOverlap=true;
else if(arg=="--force-generate")options.ForceGenerate=true;
else if(arg.starts_with("--recipe="))
{
const std::string_view recipe=arg.substr(std::string_view("--recipe=").size());
if(recipe=="surface-world")options.FloatingIslandsRecipe=false;
else if(recipe=="floating-islands")options.FloatingIslandsRecipe=true;
else {std::fprintf(stderr,"Invalid --recipe value: %.*s\n",static_cast<int>(recipe.size()),recipe.data());return false;}
}
else if(arg.starts_with("--seed="))
{if(!readInt("--seed=",options.SeedOverride))return false;options.HasSeedOverride=true;}
else if(arg.starts_with("--render-distance-chunks="))
{
if(!readInt("--render-distance-chunks=",options.RenderDistanceOverride))return false;
options.RenderDistanceOverride=std::max(0,options.RenderDistanceOverride);
options.HasRenderDistanceOverride=true;
}
else if(arg.starts_with("--tls-probe="))
{
if(!readInt("--tls-probe=",options.TlsProbeWorkers))return false;
if(options.TlsProbeWorkers<0||options.TlsProbeWorkers>12)
{std::fprintf(stderr,"--tls-probe must be in 0..12\n");return false;}
options.TlsProbeRequested=true;
}
else if(arg.starts_with("--camera="))
{
if(!ParseCamera(arg.substr(9),options.CameraMeters))
{std::fprintf(stderr,"Invalid --camera value: %.*s\n",static_cast<int>(arg.size()),arg.data());return false;}
options.HasCamera=true;
}
else if(arg.starts_with("--workers="))
{if(!readInt("--workers=",options.WorkerCount))return false;}
else if(arg.starts_with("--clip-radius="))
{if(!readInt("--clip-radius=",options.ClipRadius))return false;}
else if(arg.starts_with("--max-clip-level="))
{if(!readInt("--max-clip-level=",options.MaxClipLevel))return false;}
else if(arg.starts_with("--max-level="))
{if(!readInt("--max-level=",options.MaxLevel))return false;}
else if(arg.starts_with("--far-horizon-lod8-step="))
{if(!readInt("--far-horizon-lod8-step=",options.FarHorizonLOD8InteriorStepVoxels))return false;}
else if(arg.starts_with("--process-affinity=")||arg.starts_with("--process-priority=")
||arg.starts_with("--frame-limit="))
{
// These viewer switches are accepted for command-line parity. The caller pins
// this headless process with taskset, and a headless run has no frame limiter.
}
else if(!arg.empty()&&arg.front()!='-')options.DataPath=std::filesystem::path(arg);
else
{std::fprintf(stderr,"Unknown option: %.*s\n",static_cast<int>(arg.size()),arg.data());return false;}
}
options.WorkerCount=std::clamp(options.WorkerCount,1,16);
options.ClipRadius=std::clamp(options.ClipRadius,1,64);
options.MaxClipLevel=std::clamp(options.MaxClipLevel,0,8);
options.FarHorizonLOD8InteriorStepVoxels=std::max(0,options.FarHorizonLOD8InteriorStepVoxels);
if(options.TlsProbeRequested)return true;
if(!options.WorldAssemblerPrototype||!options.StreamBenchmark||!options.StreamPipeline)
{
std::fprintf(stderr,"This headless target runs the world-assembler streaming pipeline; pass --world-assembler-prototype --stream-benchmark --stream-pipeline.\n");
return false;
}
return true;
}
}
int main(int argc,char** argv)
{
using Clock=std::chrono::steady_clock;
const auto coldStart=Clock::now();
FOptions options;
if(!ParseOptions(argc,argv,options))return 2;
if(options.TlsProbeRequested)return StandaloneTlsProbe::Run(options.TlsProbeWorkers);
std::printf("[HeadlessConfig] data=%s workers=%d clip_radius=%d max_clip_level=%d max_level=%d hash=%s column_overlap=%s force_generate=%s recipe=%s seed_override=%s render_distance_override=%s\n",
options.DataPath.string().c_str(),options.WorkerCount,options.ClipRadius,options.MaxClipLevel,
options.MaxLevel,options.StreamHash?"on":"off",options.ProfileColumnOverlap?"on":"off",
options.ForceGenerate?"on":"off",options.FloatingIslandsRecipe?"floating-islands":"surface-world",
options.HasSeedOverride?"yes":"no",options.HasRenderDistanceOverride?"yes":"no");
std::printf("[ColdTimeline] stage=owner_data_load begin_ms=%.3f\n",
std::chrono::duration<double,std::milli>(Clock::now()-coldStart).count());
std::string error;
auto ownerWorld=std::make_shared<FStandaloneOwnerWorld>();
VFJson::Value ownerJsonRoot;
{
std::ifstream jsonFile(options.DataPath,std::ios::binary);
if(!jsonFile)
{std::fprintf(stderr,"Owner data load failed: cannot open %s\n",options.DataPath.string().c_str());return 2;}
std::string ownerJsonText{std::istreambuf_iterator<char>(jsonFile),std::istreambuf_iterator<char>{}};
if(!jsonFile&&!jsonFile.eof())
{std::fprintf(stderr,"Owner data load failed: read error for %s\n",options.DataPath.string().c_str());return 2;}
if(!VFJson::Parser(std::move(ownerJsonText)).Parse(ownerJsonRoot,error))
{std::fprintf(stderr,"Owner data load failed: %s\n",error.c_str());return 2;}
}
if(options.HasSeedOverride
&&!StandaloneWorldAssemblyPrototype::OverrideStandaloneSeed(ownerJsonRoot,options.SeedOverride,error))
{std::fprintf(stderr,"Seed override failed: %s\n",error.c_str());return 2;}
if(options.HasRenderDistanceOverride
&&!StandaloneWorldAssemblyPrototype::OverrideStandaloneRenderDistance(
ownerJsonRoot,options.RenderDistanceOverride,error))
{std::fprintf(stderr,"Render-distance override failed: %s\n",error.c_str());return 2;}
if(options.FloatingIslandsRecipe
&&!StandaloneWorldAssemblyPrototype::SelectTopStrateAsFloatingIslands(ownerJsonRoot,error))
{std::fprintf(stderr,"Floating-island recipe selection failed: %s\n",error.c_str());return 2;}
if(!StandaloneOwnerLoader::Resolve(ownerJsonRoot,*ownerWorld,error))
{std::fprintf(stderr,"Owner data load failed: %s\n",error.c_str());return 2;}
std::printf("[ColdTimeline] stage=owner_data_load end_ms=%.3f\n",
std::chrono::duration<double,std::milli>(Clock::now()-coldStart).count());
const int seed=ownerWorld->Seed;
const int exportedMaxClipLevel=ownerWorld->MaxClipLevel;
ownerWorld->ClipRadius=options.ClipRadius;
ownerWorld->Settings->ClipRadius=options.ClipRadius;
ownerWorld->MaxClipLevel=options.MaxClipLevel;
ownerWorld->Settings->MaxClipLevel=options.MaxClipLevel;
if(exportedMaxClipLevel!=options.MaxClipLevel)
std::printf("Standalone max clip level override: exported=%d -> max_level=%d.\n",
exportedMaxClipLevel,options.MaxClipLevel);
FVector cameraVoxels=ownerWorld->ViewerStartVoxels;
if(options.HasCamera)
cameraVoxels=FVector(options.CameraMeters.X*4.0f,options.CameraMeters.Y*4.0f,options.CameraMeters.Z*4.0f);
const auto planStart=Clock::now();
VoxelForgeCore::WorldAssemblyManifest worldAssembly;
if(!StandaloneWorldAssemblyPrototype::AttachRound1WorldAssemblyPrototype(
*ownerWorld,ownerJsonRoot,error,{},&worldAssembly))
{std::fprintf(stderr,"World assembler prototype setup failed: %s\n",error.c_str());return 2;}
if(options.FloatingIslandsRecipe
&&!StandaloneWorldAssemblyPrototype::AttachFloatingIslandWorldAssembly(
*ownerWorld,ownerJsonRoot,worldAssembly,error))
{std::fprintf(stderr,"Floating-island assembly setup failed: %s\n",error.c_str());return 2;}
std::printf("[WorldAssemblerPlanTiming] total_ms=%.3f status=PASS\n",
std::chrono::duration<double,std::milli>(Clock::now()-planStart).count());
auto snapshot=VoxelForgeCore::MakeStandaloneSnapshotFromParsedJson(ownerJsonRoot,seed,
options.ClipRadius,options.MaxClipLevel,false,false,error);
if(!snapshot)
{std::fprintf(stderr,"Shape interval build failed: %s\n",error.c_str());return 2;}
FStandaloneCoreScheduler scheduler;
return StandaloneStreamBenchmark::RunPipelinedStreamingBenchmark(ownerWorld,snapshot,
cameraVoxels,options.WorkerCount,options.MaxLevel,VoxelForgeCore::DetailVariant::coherent,
scheduler,options.StreamHash,false,false,false,false,coldStart,
options.ProfileColumnOverlap,options.FarHorizonLOD8InteriorStepVoxels);
}
+390
View File
@@ -0,0 +1,390 @@
#pragma once
#include "OwnerWorldLoader.h"
#include "StreamingWorld.h"
#include <algorithm>
#include <array>
#include <chrono>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <limits>
#include <thread>
#include <unordered_map>
#include <unordered_set>
#include <vector>
namespace StandaloneStreamBenchmark
{
inline void HashWord(uint64& Hash,uint64 Word,int32 Bytes=8)
{
for(int32 I=0;I<Bytes;++I)
{
Hash^=static_cast<uint8>(Word>>(I*8));
Hash*=1099511628211ull;
}
}
struct FHashedTile
{
FVoxelTileKey Key;
uint64 Hash=14695981039346656037ull;
};
inline bool TileKeyLessForHash(const FVoxelTileKey& A,const FVoxelTileKey& B)
{
if(A.Level!=B.Level)return A.Level<B.Level;
if(A.Coord.Z!=B.Coord.Z)return A.Coord.Z<B.Coord.Z;
if(A.Coord.Y!=B.Coord.Y)return A.Coord.Y<B.Coord.Y;
return A.Coord.X<B.Coord.X;
}
inline uint64 HashTileRows(std::vector<FHashedTile>& Rows)
{
std::sort(Rows.begin(),Rows.end(),[](const FHashedTile& A,const FHashedTile& B)
{return TileKeyLessForHash(A.Key,B.Key);});
uint64 Hash=14695981039346656037ull;
for(const FHashedTile& Row:Rows)
{
HashWord(Hash,static_cast<uint32>(Row.Key.Level),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.X),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.Y),4);
HashWord(Hash,static_cast<uint32>(Row.Key.Coord.Z),4);
HashWord(Hash,Row.Hash);
}
return Hash;
}
inline int RunPipelinedStreamingBenchmark(std::shared_ptr<FStandaloneOwnerWorld> OwnerWorld,
const VoxelForgeCore::ResolvedWorldSnapshot& CoreSnapshot,
const FVector& CameraPositionVoxels,int32 WorkerCount,int32 MaxLevel,
VoxelForgeCore::DetailVariant DetailVariant,const VoxelForgeCore::JobScheduler& Scheduler,
bool bHashDensity,bool bSkipUvAndColors,bool bSkipMaterialGroups,bool bSkipUV,bool bSkipColors,
std::chrono::steady_clock::time_point ColdStart,bool bProfileColumnOverlap,
int32 FarHorizonLOD8InteriorStepVoxels)
{
using Clock=std::chrono::steady_clock;
FStandaloneOwnerWorld& World=*OwnerWorld;
const bool bRoundTunnels=World.Generator->bStandaloneResearchRoundTunnels;
const bool bEnhancedTunnelWalls=World.Generator->bStandaloneResearchEnhancedWalls;
VoxelForgeCore::World Shape(CoreSnapshot);
FStandaloneDesiredTileSet Desired=StandaloneWorldMesher::BuildDesiredSet(World,CameraPositionVoxels);
const auto CoreTiles=Shape.desiredTiles(
{CameraPositionVoxels.X,CameraPositionVoxels.Y,CameraPositionVoxels.Z});
Desired.Tiles.clear();Desired.Tiles.reserve(CoreTiles.size());
for(const auto& Key:CoreTiles)
Desired.Tiles.emplace_back(FIntVector(Key.coordinate.x,Key.coordinate.y,Key.coordinate.z),Key.lod);
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)
{
const FIntVector Origin=Tile.OriginVoxels();const int32 Extent=Tile.ExtentVoxels();
ClipMin.X=std::min(ClipMin.X,Origin.X);ClipMin.Y=std::min(ClipMin.Y,Origin.Y);ClipMin.Z=std::min(ClipMin.Z,Origin.Z);
ClipMax.X=std::max(ClipMax.X,Origin.X+Extent);ClipMax.Y=std::max(ClipMax.Y,Origin.Y+Extent);ClipMax.Z=std::max(ClipMax.Z,Origin.Z+Extent);
if(Tile.Level<World.FullResClipLevels)
{
FineMin.X=std::min(FineMin.X,Origin.X);FineMin.Y=std::min(FineMin.Y,Origin.Y);FineMin.Z=std::min(FineMin.Z,Origin.Z);
FineMax.X=std::max(FineMax.X,Origin.X+Extent);FineMax.Y=std::max(FineMax.Y,Origin.Y+Extent);FineMax.Z=std::max(FineMax.Z,Origin.Z+Extent);
}
}
if(FineMin.X==INT32_MAX||ClipMin.X==INT32_MAX)
{std::fprintf(stderr,"[StreamPipeline] no desired detail or clipmap tiles.\n");return 7;}
const FIntVector CenterChunk=Desired.CenterChunk;
std::unordered_set<FVoxelTileKey,FStandaloneTileKeyHash> Neighborhood;
Neighborhood.reserve(32);
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level==0&&std::abs(Tile.Coord.X-CenterChunk.X)<=1
&&std::abs(Tile.Coord.Y-CenterChunk.Y)<=1&&std::abs(Tile.Coord.Z-CenterChunk.Z)<=1)
Neighborhood.insert(Tile);
if(Neighborhood.size()!=27)
{std::fprintf(stderr,"[StreamPipeline] expected 27 player-neighborhood tiles, found %zu.\n",Neighborhood.size());return 7;}
// The initial desired set now owns all clipmap metadata needed by this Core-only run.
// Release the separate compatibility-world generation graph before compiling Core.
World.Generator.reset();
World.Manager.reset();
World.DefinitionStorage.clear();
World.BiomeStorage.clear();
World.OperationStorage.clear();
World.DensitySamples.clear();
std::string BuildError;
const bool bIncludeFarWorld=MaxLevel<0||MaxLevel>=World.FullResClipLevels;
const auto ShapeBuildStart=Clock::now();
VoxelForgeCore::ShapeBuildRequest ShapeRequest;
ShapeRequest.minVoxel={FineMin.X,FineMin.Y,FineMin.Z};
ShapeRequest.maxVoxel={FineMax.X,FineMax.Y,FineMax.Z};
ShapeRequest.clipMinVoxel={ClipMin.X,ClipMin.Y,ClipMin.Z};
ShapeRequest.clipMaxVoxel={ClipMax.X,ClipMax.Y,ClipMax.Z};
ShapeRequest.workerLimit=static_cast<uint32>(std::clamp(WorkerCount,1,16));
ShapeRequest.detail=DetailVariant;ShapeRequest.includeFarWorld=bIncludeFarWorld;
ShapeRequest.roundTunnels=bRoundTunnels;
ShapeRequest.enhancedTunnelWalls=bEnhancedTunnelWalls;
if(!Shape.compile(ShapeRequest,Scheduler,BuildError))
{std::fprintf(stderr,"[StreamPipeline] full shape build failed: %s\n",BuildError.c_str());return 2;}
const auto ShapeReady=Clock::now();
const double ShapeSeconds=std::chrono::duration<double>(ShapeReady-ShapeBuildStart).count();
FStandaloneStreamingGenerator Streamer(World,WorkerCount,bHashDensity,nullptr,MaxLevel,
bSkipUvAndColors,bSkipMaterialGroups,bSkipUV,bSkipColors,&Shape,bProfileColumnOverlap,
FarHorizonLOD8InteriorStepVoxels);
const auto StreamStart=Clock::now();
const FStandaloneStreamingUpdate Update=Streamer.StartWithDesired(Desired);
if(Update.DesiredTiles!=static_cast<int32>(Desired.Tiles.size()))
{
Streamer.Stop();
std::fprintf(stderr,"[StreamPipeline] expected %zu tiles but queued %d.\n",
Desired.Tiles.size(),Update.DesiredTiles);return 7;
}
std::vector<FHashedTile> DensityRows,MeshRows,PayloadRows,TopologyRows;
int32 Finished=0,NeighborhoodFinished=0,FullDetailFinished=0;
int32 FullDetailExpected=0;
struct FColumnXY
{
std::int64_t X=0,Y=0;
bool operator==(const FColumnXY&)const=default;
};
struct FColumnXYHash
{
std::size_t operator()(const FColumnXY& Value)const noexcept
{
const std::size_t X=std::hash<std::int64_t>{}(Value.X);
const std::size_t Y=std::hash<std::int64_t>{}(Value.Y);
return X^(Y+static_cast<std::size_t>(0x9E3779B9u)+(X<<6)+(X>>2));
}
};
struct FFirstColumnUse
{
FVoxelTileKey Tile;
std::uint64_t WorkerHash=0;
};
std::array<std::unordered_map<FColumnXY,std::vector<FFirstColumnUse>,FColumnXYHash>,9> ColumnUsesByLOD;
std::array<std::uint64_t,9> ColumnDuplicateEventsByLOD{},NeighbourDuplicateEventsByLOD{};
std::array<std::uint64_t,9> CrossWorkerNeighbourDuplicateEventsByLOD{};
std::array<std::uint64_t,9> ColumnCaptureTilesByLOD{},ExpectedTilesByLOD{};
std::array<bool,9> ColumnCaptureCompleteByLOD{};
ColumnCaptureCompleteByLOD.fill(true);
std::array<double,9> WorkerSecondsByLOD{};
std::array<double,9> ColumnEvalMsByLOD{},MarchingExclusiveMsByLOD{};
std::array<double,9> GroundRefineExclusiveMsByLOD{},CapRefineExclusiveMsByLOD{};
std::array<double,9> MeshAssemblyMsByLOD{};
std::array<std::uint64_t,9> TileCountByLOD{};
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level>=0&&Tile.Level<static_cast<int32>(ExpectedTilesByLOD.size()))
++ExpectedTilesByLOD[static_cast<std::size_t>(Tile.Level)];
const auto AreSameLODNeighbours=[](const FVoxelTileKey& A,const FVoxelTileKey& B)
{
if(A.Level!=B.Level)return false;
const std::int64_t DX=std::abs(static_cast<std::int64_t>(A.Coord.X)-B.Coord.X);
const std::int64_t DY=std::abs(static_cast<std::int64_t>(A.Coord.Y)-B.Coord.Y);
const std::int64_t DZ=std::abs(static_cast<std::int64_t>(A.Coord.Z)-B.Coord.Z);
return std::max({DX,DY,DZ})<=1&&(DX+DY+DZ)>0;
};
uint64 NativeSolidBoxes=0,NativeAirBoxes=0,NativeMixedBoxes=0,NativeUnknownBoxes=0;
uint64 NativeFieldCalls=0,NativeColumnHits=0,NativeColumnMisses=0,NativeMeshingSkips=0;
double NativeClassificationMilliseconds=0.0,NativeColumnComputeMilliseconds=0.0;
double NativeMeshingMilliseconds=0.0;
for(const FVoxelTileKey& Tile:Desired.Tiles)
if(Tile.Level<World.FullResClipLevels)++FullDetailExpected;
Clock::time_point NeighborhoodReady{},FullDetailReady{},WholeViewReady{};
bool bNeighborhoodReported=false,bFullDetailReported=false;
while(Finished<Update.DesiredTiles)
{
std::vector<FStandaloneCpuTile> Ready=Streamer.TakeReady();
if(Ready.empty()){std::this_thread::sleep_for(std::chrono::milliseconds(1));continue;}
for(const FStandaloneCpuTile& Tile:Ready)
{
++Finished;
if(Tile.Key.Level>=0&&Tile.Key.Level<static_cast<int32>(TileCountByLOD.size()))
{
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
++TileCountByLOD[LOD];
WorkerSecondsByLOD[LOD]+=Tile.WorkerSeconds;
ColumnEvalMsByLOD[LOD]+=Tile.CoreDiagnostics.columnEvaluationExclusiveMilliseconds;
MarchingExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.marchingCubesExclusiveMilliseconds;
GroundRefineExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.groundRefinementExclusiveMilliseconds;
CapRefineExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.capRefinementExclusiveMilliseconds;
MeshAssemblyMsByLOD[LOD]+=Tile.CoreDiagnostics.meshAssemblyMilliseconds;
}
if(bProfileColumnOverlap&&Tile.Key.Level>=0
&&Tile.Key.Level<static_cast<int32>(ColumnCaptureTilesByLOD.size()))
{
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
++ColumnCaptureTilesByLOD[LOD];
ColumnCaptureCompleteByLOD[LOD]=ColumnCaptureCompleteByLOD[LOD]
&&Tile.CoreDiagnostics.columnCoordinateCaptureComplete;
std::vector<std::array<std::int64_t,2>> Coordinates=
Tile.CoreDiagnostics.evaluatedColumnCoordinates;
std::sort(Coordinates.begin(),Coordinates.end());
Coordinates.erase(std::unique(Coordinates.begin(),Coordinates.end()),Coordinates.end());
for(const auto& Coordinate:Coordinates)
{
const FColumnXY XY{Coordinate[0],Coordinate[1]};
auto [Uses,Inserted]=ColumnUsesByLOD[LOD].try_emplace(XY);
std::vector<FFirstColumnUse>& PriorUses=Uses->second;
if(Inserted)
{
PriorUses.push_back({Tile.Key,Tile.CoreDiagnostics.columnEvaluationWorkerHash});
continue;
}
++ColumnDuplicateEventsByLOD[LOD];
bool bHasNeighbourDuplicate=false,bHasCrossWorkerNeighbourDuplicate=false;
for(const FFirstColumnUse& Prior:PriorUses)
{
if(!AreSameLODNeighbours(Prior.Tile,Tile.Key))continue;
bHasNeighbourDuplicate=true;
bHasCrossWorkerNeighbourDuplicate=bHasCrossWorkerNeighbourDuplicate
||Prior.WorkerHash!=Tile.CoreDiagnostics.columnEvaluationWorkerHash;
}
if(bHasNeighbourDuplicate)++NeighbourDuplicateEventsByLOD[LOD];
if(bHasCrossWorkerNeighbourDuplicate)
++CrossWorkerNeighbourDuplicateEventsByLOD[LOD];
PriorUses.push_back({Tile.Key,Tile.CoreDiagnostics.columnEvaluationWorkerHash});
}
}
WholeViewReady=std::max(WholeViewReady,Tile.CompletedAt);
if(Neighborhood.contains(Tile.Key))
{
++NeighborhoodFinished;
NeighborhoodReady=std::max(NeighborhoodReady,Tile.CompletedAt);
}
if(Tile.Key.Level<World.FullResClipLevels)
{
++FullDetailFinished;
FullDetailReady=std::max(FullDetailReady,Tile.CompletedAt);
NativeSolidBoxes+=Tile.CoreDiagnostics.solidBoxes;
NativeAirBoxes+=Tile.CoreDiagnostics.airBoxes;
NativeMixedBoxes+=Tile.CoreDiagnostics.mixedBoxes;
NativeUnknownBoxes+=Tile.CoreDiagnostics.unknownBoxes;
NativeFieldCalls+=Tile.CoreDiagnostics.fieldCalls;
NativeColumnHits+=Tile.CoreDiagnostics.columnCacheHits;
NativeColumnMisses+=Tile.CoreDiagnostics.columnCacheMisses;
NativeMeshingSkips+=Tile.CoreDiagnostics.meshingSkipped?1u:0u;
NativeClassificationMilliseconds+=Tile.CoreDiagnostics.classificationMilliseconds;
NativeColumnComputeMilliseconds+=Tile.CoreDiagnostics.columnComputeMilliseconds;
NativeMeshingMilliseconds+=Tile.CoreDiagnostics.meshingMilliseconds;
}
if(bHashDensity)
{
if(Tile.bHasDensityHash)DensityRows.push_back({Tile.Key,Tile.DensityHash});
if(Tile.bHasMeshHash)MeshRows.push_back({Tile.Key,Tile.MeshHash});
if(Tile.bHasPayloadHash)PayloadRows.push_back({Tile.Key,Tile.PayloadHash});
if(Tile.bHasTopologyHash)TopologyRows.push_back({Tile.Key,Tile.TopologyHash});
}
}
if(!bNeighborhoodReported&&NeighborhoodFinished==static_cast<int32>(Neighborhood.size()))
{
std::printf("[PipelineMilestone] neighborhood_ready=%.3fs generated=%d/27\n",
std::chrono::duration<double>(NeighborhoodReady-ColdStart).count(),NeighborhoodFinished);
bNeighborhoodReported=true;
}
if(!bFullDetailReported&&FullDetailFinished==FullDetailExpected)
{
std::printf("[PipelineMilestone] full_detail_ready=%.3fs generated=%d/%d\n",
std::chrono::duration<double>(FullDetailReady-ColdStart).count(),
FullDetailFinished,FullDetailExpected);
bFullDetailReported=true;
}
}
Streamer.Stop();
bool bColumnOverlapCapturePassing=true;
if(bProfileColumnOverlap)
{
for(std::size_t LOD=0;LOD<ColumnCaptureTilesByLOD.size();++LOD)
{
const bool bLODComplete=ColumnCaptureCompleteByLOD[LOD]
&&ColumnCaptureTilesByLOD[LOD]==ExpectedTilesByLOD[LOD];
bColumnOverlapCapturePassing=bColumnOverlapCapturePassing&&bLODComplete;
std::printf("[WorldAssemblerLODColumnOverlap] lod=%zu tiles=%llu expected_tiles=%llu unique_xy_columns=%zu repeated_tile_evaluations=%llu neighbouring_duplicate_evaluations=%llu cross_worker_neighbouring_duplicates=%llu capture_complete=%d\n",
LOD,static_cast<unsigned long long>(ColumnCaptureTilesByLOD[LOD]),
static_cast<unsigned long long>(ExpectedTilesByLOD[LOD]),
ColumnUsesByLOD[LOD].size(),
static_cast<unsigned long long>(ColumnDuplicateEventsByLOD[LOD]),
static_cast<unsigned long long>(NeighbourDuplicateEventsByLOD[LOD]),
static_cast<unsigned long long>(CrossWorkerNeighbourDuplicateEventsByLOD[LOD]),
bLODComplete?1:0);
}
}
for(std::size_t LOD=0;LOD<TileCountByLOD.size();++LOD)
{
std::printf("[WorldAssemblerLODWorker] lod=%zu tiles=%llu worker_sum_s=%.6f column_eval_exclusive_ms=%.3f mc_exclusive_ms=%.3f ground_refine_exclusive_ms=%.3f cap_refine_exclusive_ms=%.3f mesh_assembly_ms=%.3f\n",
LOD,static_cast<unsigned long long>(TileCountByLOD[LOD]),WorkerSecondsByLOD[LOD],
ColumnEvalMsByLOD[LOD],MarchingExclusiveMsByLOD[LOD],
GroundRefineExclusiveMsByLOD[LOD],CapRefineExclusiveMsByLOD[LOD],MeshAssemblyMsByLOD[LOD]);
}
const double NeighborhoodSeconds=std::chrono::duration<double>(NeighborhoodReady-ColdStart).count();
const double NeighborhoodMeshSeconds=std::chrono::duration<double>(NeighborhoodReady-ShapeReady).count();
const double FullDetailSeconds=std::chrono::duration<double>(FullDetailReady-ColdStart).count();
const double WholeViewSeconds=std::chrono::duration<double>(WholeViewReady-ColdStart).count();
const double StreamSeconds=std::chrono::duration<double>(WholeViewReady-StreamStart).count();
std::printf("[StreamPipeline] workers=%d shape=%.3fs neighborhood_mesh=%.3fs neighborhood_ready=%.3fs full_detail_ready=%.3fs whole_view_ready=%.3fs neighborhood_tiles=%d/27 full_detail_tiles=%d/%d whole_tiles=%d/%zu stream_wall=%.3fs cache_hits=0 full_payload=1\n",
WorkerCount,ShapeSeconds,NeighborhoodMeshSeconds,NeighborhoodSeconds,
FullDetailSeconds,WholeViewSeconds,NeighborhoodFinished,
FullDetailFinished,FullDetailExpected,Finished,Desired.Tiles.size(),StreamSeconds);
std::printf("[WorldAssemblerTilePipeline] full_detail_tiles=%d solid_boxes=%llu air_boxes=%llu mixed_boxes=%llu unknown_boxes=%llu whole_tile_skips=%llu field_calls=%llu column_cache_hits=%llu column_cache_misses=%llu column_compute_worker_ms=%.3f classification_worker_ms=%.3f meshing_worker_ms=%.3f\n",
FullDetailExpected,static_cast<unsigned long long>(NativeSolidBoxes),
static_cast<unsigned long long>(NativeAirBoxes),
static_cast<unsigned long long>(NativeMixedBoxes),
static_cast<unsigned long long>(NativeUnknownBoxes),
static_cast<unsigned long long>(NativeMeshingSkips),
static_cast<unsigned long long>(NativeFieldCalls),
static_cast<unsigned long long>(NativeColumnHits),
static_cast<unsigned long long>(NativeColumnMisses),
NativeColumnComputeMilliseconds,NativeClassificationMilliseconds,
NativeMeshingMilliseconds);
bool bHashesPassing=true;
if(bHashDensity)
{
bHashesPassing=DensityRows.size()==Desired.Tiles.size()
&&MeshRows.size()==Desired.Tiles.size()
&&PayloadRows.size()==Desired.Tiles.size()
&&TopologyRows.size()==Desired.Tiles.size();
std::vector<FHashedTile> FullDensity,FullMesh,FullPayload,FullTopology;
for(const FHashedTile& Row:DensityRows)if(Row.Key.Level<World.FullResClipLevels)FullDensity.push_back(Row);
for(const FHashedTile& Row:MeshRows)if(Row.Key.Level<World.FullResClipLevels)FullMesh.push_back(Row);
for(const FHashedTile& Row:PayloadRows)if(Row.Key.Level<World.FullResClipLevels)FullPayload.push_back(Row);
for(const FHashedTile& Row:TopologyRows)if(Row.Key.Level<World.FullResClipLevels)FullTopology.push_back(Row);
std::printf("[PipelineFullDetailHash] tiles=%d density=0x%016llx mesh=0x%016llx payload=0x%016llx topology=0x%016llx\n",
FullDetailExpected,static_cast<unsigned long long>(HashTileRows(FullDensity)),
static_cast<unsigned long long>(HashTileRows(FullMesh)),
static_cast<unsigned long long>(HashTileRows(FullPayload)),
static_cast<unsigned long long>(HashTileRows(FullTopology)));
std::printf("[PipelineWholeViewHash] tiles=%zu density=0x%016llx mesh=0x%016llx payload=0x%016llx topology=0x%016llx\n",
Desired.Tiles.size(),static_cast<unsigned long long>(HashTileRows(DensityRows)),
static_cast<unsigned long long>(HashTileRows(MeshRows)),
static_cast<unsigned long long>(HashTileRows(PayloadRows)),
static_cast<unsigned long long>(HashTileRows(TopologyRows)));
}
return NeighborhoodFinished==static_cast<int32>(Neighborhood.size())
&&FullDetailFinished==FullDetailExpected&&Finished==Update.DesiredTiles&&bHashesPassing
&&(!bProfileColumnOverlap||bColumnOverlapCapturePassing)?0:6;
}
} // namespace StandaloneStreamBenchmark
+7 -3
View File
@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "WorldMesher.h" #include "WorldMesher.h"
#include "StandaloneWorkerThread.h"
#include "VoxelForgeCore/VoxelForgeCore.h" #include "VoxelForgeCore/VoxelForgeCore.h"
#include <condition_variable> #include <condition_variable>
@@ -11,10 +12,12 @@
#include <chrono> #include <chrono>
#include <cmath> #include <cmath>
#include <cstdint> #include <cstdint>
#include <cstdio>
#include <cstring> #include <cstring>
#include <deque> #include <deque>
#include <functional> #include <functional>
#include <fstream> #include <fstream>
#include <limits>
#include <unordered_set> #include <unordered_set>
#include <utility> #include <utility>
@@ -509,7 +512,7 @@ public:
Queue.clear();PriorityTasks.clear(); Queue.clear();PriorityTasks.clear();
} }
Wake.notify_all(); Wake.notify_all();
for(std::thread& Worker:Workers)if(Worker.joinable())Worker.join(); for(FStandaloneWorkerThread& Worker:Workers)if(Worker.joinable())Worker.join();
Workers.clear(); Workers.clear();
std::lock_guard<std::mutex> Lock(Mutex); std::lock_guard<std::mutex> Lock(Mutex);
Ready.clear();Outstanding.clear();Desired.clear();Running.clear(); Ready.clear();Outstanding.clear();Desired.clear();Running.clear();
@@ -797,7 +800,8 @@ private:
{ {
VoxelForgeCore::TileGenerationOptions Options; VoxelForgeCore::TileGenerationOptions Options;
Options.bandMinZVoxel=Job.BandZMin;Options.bandMaxZVoxel=Job.BandZMax; Options.bandMinZVoxel=Job.BandZMin;Options.bandMaxZVoxel=Job.BandZMax;
Options.hashDensity=bHashDensity;Options.skipUvAndColors=bSkipUvAndColors; Options.hashDensity=bHashDensity;
Options.skipUvAndColors=bSkipUvAndColors;
Options.skipMaterialGroups=bSkipMaterialGroups;Options.skipUv=bSkipUV;Options.skipColors=bSkipColors; Options.skipMaterialGroups=bSkipMaterialGroups;Options.skipUv=bSkipUV;Options.skipColors=bSkipColors;
Options.captureColumnCoordinates=bCaptureColumnCoordinates; Options.captureColumnCoordinates=bCaptureColumnCoordinates;
Options.lod8HorizonInteriorStepVoxels=Lod8HorizonInteriorStepVoxels; Options.lod8HorizonInteriorStepVoxels=Lod8HorizonInteriorStepVoxels;
@@ -977,7 +981,7 @@ private:
mutable std::mutex Mutex; mutable std::mutex Mutex;
std::condition_variable Wake; std::condition_variable Wake;
bool bStop=true; bool bStop=true;
std::vector<std::thread> Workers; std::vector<FStandaloneWorkerThread> Workers;
std::deque<std::function<void()>> PriorityTasks; std::deque<std::function<void()>> PriorityTasks;
std::vector<FStandaloneTileJob> Queue; std::vector<FStandaloneTileJob> Queue;
std::vector<FStandaloneCpuTile> Ready; std::vector<FStandaloneCpuTile> Ready;
+530
View File
@@ -0,0 +1,530 @@
#pragma once
#include "OwnerWorldLoader.h"
#include "VoxelForgeCore/VoxelForgeCore.h"
#include <algorithm>
#include <array>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iterator>
#include <limits>
#include <numeric>
#include <string>
#include <vector>
namespace StandaloneWorldAssemblyPrototype
{
inline std::int64_t WorldAssemblyFixed(double voxels)
{return static_cast<std::int64_t>(std::llround(voxels*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel));}
inline std::int64_t WorldAssemblyQ16(double value)
{return static_cast<std::int64_t>(std::llround(value*65536.0));}
inline std::int64_t WorldAssemblyWavelength(double frequency,double fallbackVoxels)
{
const double wavelength=std::isfinite(frequency)&&frequency>0.0?1.0/frequency:fallbackVoxels;
return std::max<std::int64_t>(1,WorldAssemblyFixed(wavelength));
}
inline uint64 WorldAssemblyFeatureId(uint32 seed,int64 x,int64 y,uint32 kind)
{
uint64 hash=14695981039346656037ull;
const auto add=[&](uint64 value,int bytes)
{
for(int i=0;i<bytes;++i){hash^=static_cast<uint8>(value>>(8*i));hash*=1099511628211ull;}
};
add(seed,4);add(static_cast<uint64>(x),8);add(static_cast<uint64>(y),8);add(kind,4);
return hash?hash:1;
}
inline bool BuildFiniteStrateRoute(VoxelForgeCore::WorldAssemblyRecipeV1& recipe,
VoxelForgeCore::WorldAssemblyStratumPlanV1& stratum,std::uint64_t& tested,
std::uint64_t& gradeRejected,std::uint64_t& sweepRejected,std::string& error)
{
using namespace VoxelForgeCore;
constexpr std::int64_t PlayerRadiusQ=348; // 0.34 m in Core's 0.25 m voxel scale.
constexpr std::int64_t PlayerHeightQ=1802; // 1.76 m in Core's 0.25 m voxel scale.
constexpr std::int64_t HalfHeightQ=PlayerHeightQ/2;
constexpr std::int64_t StepQ=128; // 0.5 Core voxel, finer than the density lattice.
constexpr std::int64_t ProbeRadiusQ=174;
constexpr std::int64_t SupportDepthQ=256;
constexpr std::int64_t GradeQ16=17560; // tan(15 degrees), rounded upward.
constexpr std::int64_t RouteRadiusQ=4*WorldAssemblySubvoxelsPerVoxel;
struct Direction {std::int32_t x,y;};
constexpr std::array<Direction,8> directions{{
{65536,0},{46341,46341},{0,65536},{-46341,46341},
{-65536,0},{-46341,-46341},{0,-65536},{46341,-46341}}};
struct Candidate
{
std::int64_t score=0;
std::int32_t centerX=0,centerY=0,direction=0;
std::vector<WorldAssemblyRoutePointV1> points;
};
auto& constraints=stratum.routeConstraints;
constraints.version=1;
constraints.capsuleRadiusSubvoxels=PlayerRadiusQ;
constraints.capsuleHeightSubvoxels=PlayerHeightQ;
constraints.maximumGradeQ16=GradeQ16;
constraints.sweepSpacingSubvoxels=StepQ;
constraints.supportProbeRadiusSubvoxels=ProbeRadiusQ;
constraints.supportSearchDepthSubvoxels=SupportDepthQ;
constraints.minimumClearanceSubvoxels=8;
constraints.minimumSupportProbes=3;
const Heightfield2D finalField(recipe,stratum);
if(!finalField.isValid())
{error="route planner received an invalid final composed field";return false;}
std::vector<Candidate> candidates;
constexpr std::int32_t halfLength=128;
constexpr std::int32_t waypointSpacing=8;
for(std::int32_t centerY=-256;centerY<=256;centerY+=64)
for(std::int32_t centerX=-256;centerX<=256;centerX+=64)
for(std::int32_t directionIndex=0;directionIndex<static_cast<std::int32_t>(directions.size());++directionIndex)
{
Candidate candidate;
candidate.centerX=centerX;candidate.centerY=centerY;candidate.direction=directionIndex;
candidate.points.reserve(33);
std::int64_t previousGround=0,previousX=0,previousY=0;
bool gradePass=true;
for(std::int32_t index=0;index<=32;++index)
{
const std::int64_t along=(index-16)*waypointSpacing;
const std::int64_t x=centerX+std::llround(
static_cast<double>(along)*directions[directionIndex].x/65536.0);
const std::int64_t y=centerY+std::llround(
static_cast<double>(along)*directions[directionIndex].y/65536.0);
const auto column=finalField.point(WorldAssemblyFixed(static_cast<double>(x)),
WorldAssemblyFixed(static_cast<double>(y)),0);
const std::int64_t horizontalQ=static_cast<std::int64_t>(std::llround(
std::hypot(static_cast<double>(x-previousX),static_cast<double>(y-previousY))
*WorldAssemblySubvoxelsPerVoxel));
if(index>0)
{
const std::int64_t riseQ=std::abs(column.groundHeightSubvoxels-previousGround);
if(horizontalQ==0||riseQ*65536>horizontalQ*GradeQ16)
{gradePass=false;break;}
candidate.score+=riseQ*65536/std::max<std::int64_t>(1,horizontalQ);
}
WorldAssemblyRoutePointV1 point;
point.positionSubvoxels={WorldAssemblyFixed(static_cast<double>(x)),
WorldAssemblyFixed(static_cast<double>(y)),column.groundHeightSubvoxels+HalfHeightQ};
point.radiusSubvoxels=RouteRadiusQ;
point.stableFeatureId=WorldAssemblyFeatureId(recipe.seed,
static_cast<std::int64_t>(x),static_cast<std::int64_t>(y),
0x52540000u+static_cast<std::uint32_t>(index));
candidate.points.push_back(point);
previousGround=column.groundHeightSubvoxels;previousX=x;previousY=y;
}
++tested;
if(gradePass)candidates.push_back(std::move(candidate));
else ++gradeRejected;
}
std::stable_sort(candidates.begin(),candidates.end(),[](const Candidate& a,const Candidate& b)
{
if(a.score!=b.score)return a.score<b.score;
if(a.centerY!=b.centerY)return a.centerY<b.centerY;
if(a.centerX!=b.centerX)return a.centerX<b.centerX;
return a.direction<b.direction;
});
std::uint64_t sweepAttempt=0,repairAttempt=0;
VoxelForgeCore::WorldAssemblyRouteAuditResult lastAudit{};
for(auto& candidate:candidates)
{
stratum.route=candidate.points;
std::int64_t liftQ=0;
constexpr std::int64_t RepairStepQ=64;
constexpr std::int64_t MaximumRepairLiftQ=SupportDepthQ-RepairStepQ;
for(;;)
{
if(liftQ>0)
for(std::size_t pointIndex=0;pointIndex<stratum.route.size();++pointIndex)
stratum.route[pointIndex].positionSubvoxels[2]
=candidate.points[pointIndex].positionSubvoxels[2]+liftQ;
const Heightfield2D candidateField(recipe,stratum);
const auto audit=AuditHeightfieldRoute(candidateField);
lastAudit=audit;
if(audit.passed)
{
if(liftQ>0)
std::printf("[WorldAssemblerRouteRepaired] uniform_lift_q=%lld support_limit_q=%lld\n",
static_cast<long long>(liftQ),static_cast<long long>(SupportDepthQ));
return true;
}
if(audit.blockedCapsuleSamples==0||liftQ>=MaximumRepairLiftQ)break;
const std::int64_t needed=std::max<std::int64_t>(1,
constraints.minimumClearanceSubvoxels-audit.minimumClearanceSubvoxels);
const std::int64_t steps=(needed+RepairStepQ-1)/RepairStepQ;
const std::int64_t nextLift=std::max(liftQ+RepairStepQ,liftQ+steps*RepairStepQ);
if(nextLift>MaximumRepairLiftQ)break;
liftQ=nextLift;
++repairAttempt;
}
if(sweepAttempt<3)
std::printf("[WorldAssemblerRouteCandidateRejected] ordinal=%llu blocked=%llu unsupported=%llu grade_failures=%llu minimum_clearance_q=%lld\n",
static_cast<unsigned long long>(sweepAttempt),
static_cast<unsigned long long>(lastAudit.blockedCapsuleSamples),
static_cast<unsigned long long>(lastAudit.unsupportedCenterSamples),
static_cast<unsigned long long>(lastAudit.gradeFailures),
static_cast<long long>(lastAudit.minimumClearanceSubvoxels));
++sweepAttempt;
++sweepRejected;
}
std::printf("[WorldAssemblerRouteSearchFailed] tested=%llu grade_rejected=%llu sweepable_candidates=%llu sweep_rejected=%llu last_blocked=%llu last_unsupported=%llu last_grade_failures=%llu\n",
static_cast<unsigned long long>(tested),static_cast<unsigned long long>(gradeRejected),
static_cast<unsigned long long>(candidates.size()),static_cast<unsigned long long>(sweepRejected),
static_cast<unsigned long long>(lastAudit.blockedCapsuleSamples),
static_cast<unsigned long long>(lastAudit.unsupportedCenterSamples),
static_cast<unsigned long long>(lastAudit.gradeFailures));
std::printf("[WorldAssemblerRouteRepairSummary] repair_attempts=%llu\n",
static_cast<unsigned long long>(repairAttempt));
stratum.route.clear();
error="finite-strate route candidates failed the composed-field capsule and support sweep";
return false;
}
inline bool AttachRound1WorldAssemblyPrototype(FStandaloneOwnerWorld& owner,VFJson::Value& root,
std::string& error,const std::string& manifestOutputPath,
VoxelForgeCore::WorldAssemblyManifest* outManifest=nullptr)
{
if(!owner.Manager||!owner.Generator)
{error="world assembler prototype needs the resolved standalone owner world";return false;}
int32 surfaceChunkZ=0,topChunkZ=0,bottomChunkZ=0;
bool foundSurface=false;
for(int32 chunkZ=1024;chunkZ>=-4096;--chunkZ)
{
if(owner.Manager->GetGeneratorTypeForChunk(FIntVector(0,0,chunkZ))
!=ECaveGeneratorType::SurfaceWorld)continue;
surfaceChunkZ=chunkZ;
foundSurface=owner.Manager->GetStrateChunkZBounds(chunkZ,topChunkZ,bottomChunkZ);
break;
}
if(!foundSurface)
{error="world assembler prototype could not find a finite SurfaceWorld strate";return false;}
const FIntVector chunk(0,0,surfaceChunkZ);
const FSurfaceGenerationParams surface=owner.Manager->GetSurfaceParamsForChunk(chunk);
const FBiomeContext biomeContext=owner.Manager->GetBiomeContextForChunk(chunk);
const std::int64_t bottomVoxel=static_cast<std::int64_t>(bottomChunkZ)*CHUNK_SIZE;
const std::int64_t heightVoxels=static_cast<std::int64_t>(topChunkZ-bottomChunkZ+1)*CHUNK_SIZE;
const FBiomeMapParams& map=biomeContext.Map;
const UVoxelStrateDefinition* definition=owner.Manager->GetStrateForChunk(chunk);
VoxelForgeCore::WorldAssemblyManifest manifest;
auto& recipe=manifest.recipe;
recipe.seed=static_cast<uint32>(owner.Seed);
recipe.biomeCellSizeSubvoxels=WorldAssemblyFixed(map.CellSize);
recipe.biomeWarpSubvoxels=WorldAssemblyFixed(map.WarpStrength);
recipe.biomeWarpWavelengthSubvoxels=WorldAssemblyWavelength(map.WarpFrequency,556.0);
recipe.biomeBorderBlendSubvoxels=WorldAssemblyFixed(map.BorderBlend);
recipe.biomeClimateReliefWavelengthSubvoxels=WorldAssemblyWavelength(map.ReliefFrequency,3333.0);
recipe.biomeClimateMoistureWavelengthSubvoxels=WorldAssemblyWavelength(map.MoistureFrequency,2500.0);
recipe.biomeClimateReliefContrastQ16=WorldAssemblyQ16(map.ReliefContrast);
const auto makeProfile=[&](uint32 stableId,const FSurfaceGenerationParams& params,
const FBiomeResolved* climate)
{
VoxelForgeCore::WorldAssemblyBiomeProfileV1 profile;
profile.stableId=stableId;
profile.baseHeightSubvoxels=WorldAssemblyFixed(static_cast<double>(bottomVoxel)
+static_cast<double>(heightVoxels)*params.BaseGroundRelative);
profile.continentAmplitudeSubvoxels=WorldAssemblyFixed(params.ElevationRange);
profile.continentWavelengthSubvoxels=WorldAssemblyWavelength(params.ContinentFrequency,1000.0);
profile.mountainAmplitudeSubvoxels=WorldAssemblyFixed(params.ElevationRange*params.MountainStrength);
profile.mountainWavelengthSubvoxels=WorldAssemblyWavelength(params.MountainFrequency,500.0);
profile.detailAmplitudeSubvoxels=WorldAssemblyFixed(params.SurfaceRoughness);
profile.detailWavelengthSubvoxels=WorldAssemblyWavelength(params.DetailFrequency,25.0);
profile.reliefMinimumQ16=climate?WorldAssemblyQ16(climate->ReliefMin):0;
profile.reliefMaximumQ16=climate?WorldAssemblyQ16(climate->ReliefMax):65536;
profile.moistureMinimumQ16=climate?WorldAssemblyQ16(climate->MoistureMin):0;
profile.moistureMaximumQ16=climate?WorldAssemblyQ16(climate->MoistureMax):65536;
profile.reliefStrengthQ16=WorldAssemblyQ16(params.ReliefStrength);
profile.reliefContrastQ16=WorldAssemblyQ16(params.ReliefContrast);
profile.reliefWavelengthSubvoxels=WorldAssemblyWavelength(params.ReliefFrequency,667.0);
profile.heightWarpStrengthSubvoxels=WorldAssemblyFixed(params.HeightWarpStrength);
profile.heightWarpWavelengthSubvoxels=WorldAssemblyWavelength(params.HeightWarpFrequency,125.0);
profile.beachWidthSubvoxels=WorldAssemblyFixed(params.BeachWidth);
profile.cliffStrengthQ16=WorldAssemblyQ16(params.CliffStrength);
profile.cliffSlopeThresholdQ16=std::max<std::int64_t>(1,WorldAssemblyQ16(params.CliffSlopeThreshold));
profile.cliffSharpnessQ16=WorldAssemblyQ16(params.CliffSharpness);
profile.cliffSampleDistanceSubvoxels=WorldAssemblyFixed(std::max(0.5f,params.CliffSampleDist));
const double structuralAbsBound=static_cast<double>(params.ElevationRange)
+static_cast<double>(params.ElevationRange)*params.MountainStrength
+2.0*params.SurfaceRoughness;
const double cliffAbsBound=2.0*structuralAbsBound*params.CliffStrength*params.CliffSharpness;
profile.cliffMaximumDisplacementSubvoxels=WorldAssemblyFixed(params.CliffStrength>0.0f
?std::max(1.0,cliffAbsBound):0.0);
profile.hasCapProfile=true;
profile.capHeightSubvoxels=WorldAssemblyFixed(static_cast<double>(bottomVoxel)
+static_cast<double>(heightVoxels)*params.CeilingRelative);
profile.capWarpStrengthSubvoxels=WorldAssemblyFixed(params.CeilingWarpStrength);
profile.capWarpWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingWarpFrequency,100.0);
profile.capUndulationSubvoxels=WorldAssemblyFixed(params.CeilingUndulation);
profile.capWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingUndulationFrequency,500.0);
profile.capDetailAmplitudeSubvoxels=WorldAssemblyFixed(params.CeilingRoughness);
profile.capDetailWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingRoughnessFrequency,25.0);
profile.capRidgeAmplitudeSubvoxels=WorldAssemblyFixed(params.CeilingRidgeStrength);
profile.capRidgeWavelengthSubvoxels=WorldAssemblyWavelength(params.CeilingRidgeFrequency,50.0);
return profile;
};
if(biomeContext.IsValid()&&definition)
{
for(const FBiomeResolved& resolved:biomeContext.Biomes)
{
const UVoxelBiomeDefinition* biome=definition->Biomes.IsValidIndex(resolved.Index)
?definition->Biomes[resolved.Index]:nullptr;
FSurfaceGenerationParams params=surface;
if(biome&&biome->bOverrideTerrain&&biome->GeneratorType==ECaveGeneratorType::SurfaceWorld)
{
params=biome->SurfaceParams;
params.StrateTopWorldZ=surface.StrateTopWorldZ;
params.StrateBottomWorldZ=surface.StrateBottomWorldZ;
params.BoundarySealThickness=surface.BoundarySealThickness;
params.BaseDensity=surface.BaseDensity;
params.WaterLevelRelative=surface.WaterLevelRelative;
}
recipe.biomes.push_back(makeProfile(0x1001u+static_cast<uint32>(resolved.Index),params,&resolved));
}
}
if(recipe.biomes.empty())recipe.biomes.push_back(makeProfile(0x1001u,surface,nullptr));
VoxelForgeCore::WorldAssemblyStratumPlanV1 stratum;
stratum.strateIndex=owner.Manager->GetStrateIndex(
static_cast<float>((static_cast<double>(surfaceChunkZ*CHUNK_SIZE+CHUNK_SIZE/2))*VOXEL_SIZE));
stratum.topChunkZ=topChunkZ;
stratum.bottomChunkZ=bottomChunkZ;
const double strateBottom=static_cast<double>(bottomVoxel);
const double strateHeight=static_cast<double>(heightVoxels);
stratum.capHeightSubvoxels=WorldAssemblyFixed(strateBottom+strateHeight*surface.CeilingRelative);
stratum.capUndulationSubvoxels=WorldAssemblyFixed(surface.CeilingUndulation);
stratum.capWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingUndulationFrequency,250.0);
stratum.capDetailAmplitudeSubvoxels=WorldAssemblyFixed(surface.CeilingRoughness);
stratum.capDetailWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingRoughnessFrequency,25.0);
stratum.capRidgeAmplitudeSubvoxels=WorldAssemblyFixed(surface.CeilingRidgeStrength);
stratum.capRidgeWavelengthSubvoxels=WorldAssemblyWavelength(surface.CeilingRidgeFrequency,50.0);
stratum.waterSurfaceSubvoxels=WorldAssemblyFixed(strateBottom+strateHeight*surface.WaterLevelRelative);
stratum.waterEnabled=definition&&definition->bHasWater&&surface.WaterLevelRelative>0.0f;
// Select a deterministic steep edge in the resolved owner field for a bounded shelf.
// Selection d'une pente deterministe dans le champ resolu pour une saillie bornee.
constexpr int probeSide=49,probeStep=32;
std::array<float,probeSide*probeSide> heights{};
std::array<uint8,probeSide*probeSide> valid{};
for(int y=0;y<probeSide;++y)
for(int x=0;x<probeSide;++x)
{
const float px=static_cast<float>((x-probeSide/2)*probeStep);
const float py=static_cast<float>((y-probeSide/2)*probeStep);
float ceiling=0.0f;
const std::size_t index=static_cast<std::size_t>(y)*probeSide+x;
valid[index]=owner.Generator->GetSurfaceHeightAt(px,py,topChunkZ,heights[index],ceiling)?1u:0u;
}
double steepest=0.0;int cliffX=0,cliffY=0;bool xAxis=true;int downhill=1;
for(int y=1;y<probeSide-1;++y)
for(int x=1;x<probeSide-1;++x)
{
const std::size_t center=static_cast<std::size_t>(y)*probeSide+x;
if(!valid[center]||!valid[center-1]||!valid[center+1]||!valid[center-probeSide]||!valid[center+probeSide])continue;
const double dx=static_cast<double>(heights[center+1]-heights[center-1]);
const double dy=static_cast<double>(heights[center+probeSide]-heights[center-probeSide]);
const double slope=(std::abs(dx)+std::abs(dy))/(4.0*probeStep);
if(slope>steepest){steepest=slope;cliffX=(x-probeSide/2)*probeStep;cliffY=(y-probeSide/2)*probeStep;
xAxis=std::abs(dx)>=std::abs(dy);downhill=(xAxis?dx:dy)>=0.0?-1:1;}
}
if(steepest>0.05)
{
float ground=0.0f,ceiling=0.0f;
if(owner.Generator->GetSurfaceHeightAt(static_cast<float>(cliffX),static_cast<float>(cliffY),
topChunkZ,ground,ceiling))
{
VoxelForgeCore::WorldAssemblyFeatureV1 shelf;
shelf.stableId=WorldAssemblyFeatureId(recipe.seed,cliffX,cliffY,0x4f564552u);
shelf.type=4;
constexpr int reach=72,width=36,height=64,feather=8;
const int dirX=xAxis?downhill:0,dirY=xAxis?0:downhill;
const int minX=xAxis?(dirX>0?cliffX-feather:cliffX-reach-feather)
:cliffX-width-feather;
const int maxX=xAxis?(dirX>0?cliffX+reach+feather:cliffX+feather)
:cliffX+width+feather;
const int minY=xAxis?cliffY-width-feather
:(dirY>0?cliffY-feather:cliffY-reach-feather);
const int maxY=xAxis?cliffY+width+feather
:(dirY>0?cliffY+reach+feather:cliffY+feather);
VoxelForgeCore::Heightfield2D baseField(recipe,stratum);
double lowestGround=std::numeric_limits<double>::infinity();
double highestGround=-std::numeric_limits<double>::infinity();
for(int sampleY=minY;sampleY<=maxY;sampleY+=4)
for(int sampleX=minX;sampleX<=maxX;sampleX+=4)
{
const auto sample=baseField.point(WorldAssemblyFixed(sampleX),
WorldAssemblyFixed(sampleY),0);
const double heightQ=static_cast<double>(sample.groundHeightSubvoxels)
/VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel;
lowestGround=std::min(lowestGround,heightQ);
highestGround=std::max(highestGround,heightQ);
}
if(!std::isfinite(lowestGround)||!std::isfinite(highestGround))
{error="world assembler cliff shelf could not bound its terrain columns";return false;}
shelf.minimumSubvoxels={WorldAssemblyFixed(minX),WorldAssemblyFixed(minY),
WorldAssemblyFixed(std::max<double>(bottomVoxel,lowestGround-4.0))};
shelf.maximumSubvoxels={WorldAssemblyFixed(maxX),WorldAssemblyFixed(maxY),
WorldAssemblyFixed(std::min<double>((topChunkZ+1)*CHUNK_SIZE,
highestGround+height+4.0))};
shelf.parametersSubvoxels={WorldAssemblyFixed(dirX),WorldAssemblyFixed(dirY),
WorldAssemblyFixed(height),WorldAssemblyFixed(reach)};
stratum.features.push_back(shelf);
}
}
std::uint64_t routeCandidates=0,routeGradeRejected=0,routeSweepRejected=0;
if(!BuildFiniteStrateRoute(recipe,stratum,routeCandidates,routeGradeRejected,
routeSweepRejected,error))return false;
std::printf("[WorldAssemblerRoutePlan] candidates=%llu grade_rejected=%llu sweep_rejected=%llu accepted_points=%zu capsule_m=0.34x1.76 corridor_radius_vox=4 support_probe_points=5 minimum_support_probes=%u status=PASS\n",
static_cast<unsigned long long>(routeCandidates),
static_cast<unsigned long long>(routeGradeRejected),
static_cast<unsigned long long>(routeSweepRejected),stratum.route.size(),
stratum.routeConstraints.minimumSupportProbes);
manifest.plan.strates.push_back(std::move(stratum));
if(!manifest.finalize(error))return false;
if(outManifest)*outManifest=manifest;
const std::string manifestText=manifest.ToJson();
const auto roundTrip=VoxelForgeCore::WorldAssemblyManifest::FromJson(manifestText,error);
if(!roundTrip||!roundTrip->validate(error)||roundTrip->ToJson()!=manifestText
||roundTrip->contentHash!=manifest.contentHash)
{if(error.empty())error="world assembly canonical plan serialization did not round-trip";return false;}
std::printf("[WorldAssemblerPlanSerialization] bytes=%zu canonical_round_trip=true route_points=%zu plan_hash=%016llx manifest_hash=%016llx status=PASS\n",
manifestText.size(),manifest.plan.strates.front().route.size(),
static_cast<unsigned long long>(manifest.plan.contentHash),
static_cast<unsigned long long>(manifest.contentHash));
if(!manifestOutputPath.empty())
{
const std::filesystem::path outputPath(manifestOutputPath);
std::error_code directoryError;
if(!outputPath.parent_path().empty())
std::filesystem::create_directories(outputPath.parent_path(),directoryError);
if(directoryError)
{error="could not create the world assembly manifest output directory";return false;}
std::ofstream output(outputPath,std::ios::binary);
if(!output)
{error="could not open the world assembly manifest output path";return false;}
output.write(manifestText.data(),static_cast<std::streamsize>(manifestText.size()));
if(!output)
{error="could not write the world assembly manifest payload";return false;}
}
VFJson::Value manifestJson;
if(!VFJson::Parser(manifestText).Parse(manifestJson,error))return false;
auto* rootObject=std::get_if<VFJson::Value::Object>(&root.Data);
if(!rootObject)
{error="owner snapshot root is not a JSON object";return false;}
(*rootObject)["world_assembly"]=std::move(manifestJson);
std::printf("[WorldAssemblerPrototype] recipe_version=%u evaluator_version=%u strata=%zu biomes=%zu strate_index=%d chunk_z=%d..%d serialized_bytes=%zu recipe_hash=%016llx plan_hash=%016llx manifest_hash=%016llx source=owner_surface_params_and_biome_map route_points=%zu features=%zu\n",
manifest.recipe.schemaVersion,manifest.recipe.evaluatorVersion,manifest.plan.strates.size(),
manifest.recipe.biomes.size(),manifest.plan.strates.front().strateIndex,topChunkZ,bottomChunkZ,
manifestText.size(),static_cast<unsigned long long>(manifest.recipe.contentHash),
static_cast<unsigned long long>(manifest.plan.contentHash),
static_cast<unsigned long long>(manifest.contentHash),manifest.plan.strates.front().route.size(),
manifest.plan.strates.front().features.size());
return true;
}
inline bool OverrideStandaloneSeed(VFJson::Value& root,int32 seed,std::string& error)
{
auto* object=std::get_if<VFJson::Value::Object>(&root.Data);
if(!object){error="owner snapshot root is not a JSON object";return false;}
(*object)["seed"].Data=static_cast<double>(seed);
return true;
}
inline bool OverrideStandaloneRenderDistance(VFJson::Value& root,int32 chunks,std::string& error)
{
auto* object=std::get_if<VFJson::Value::Object>(&root.Data);
if(!object){error="owner snapshot root is not a JSON object";return false;}
(*object)["render_distance_chunks"].Data=static_cast<double>(std::max(0,chunks));
return true;
}
inline bool SelectTopStrateAsFloatingIslands(VFJson::Value& root,std::string& error)
{
auto* rootObject=std::get_if<VFJson::Value::Object>(&root.Data);
if(!rootObject){error="owner snapshot root is not a JSON object";return false;}
auto stratesEntry=rootObject->find("strates");
if(stratesEntry==rootObject->end())
{error="owner snapshot has no strata array";return false;}
auto* strates=std::get_if<VFJson::Value::Array>(&stratesEntry->second.Data);
if(!strates||strates->empty())
{error="owner snapshot strata array is empty";return false;}
auto top=strates->begin();
for(auto it=std::next(strates->begin());it!=strates->end();++it)
if(it->Get("top_chunk_z").Number()>top->Get("top_chunk_z").Number())top=it;
auto* strateObject=std::get_if<VFJson::Value::Object>(&top->Data);
if(!strateObject){error="top owner strate is not an object";return false;}
auto assetEntry=strateObject->find("asset");
if(assetEntry==strateObject->end())
{error="top owner strate has no resolved asset";return false;}
auto* asset=std::get_if<VFJson::Value::Object>(&assetEntry->second.Data);
if(!asset){error="top owner strate asset is not an object";return false;}
(*asset)["GeneratorType"].Data=static_cast<double>(
static_cast<std::uint8_t>(ECaveGeneratorType::FloatingIslands));
return true;
}
inline bool AttachFloatingIslandWorldAssembly(FStandaloneOwnerWorld& owner,
VFJson::Value& root,VoxelForgeCore::WorldAssemblyManifest& assembly,std::string& error)
{
if(!owner.Manager)
{error="floating-island assembly needs the resolved standalone strate manager";return false;}
const FStrateSlot* islandSlot=nullptr;
for(const FStrateSlot& slot:owner.Manager->GetLayout())
if(slot.Definition&&slot.Definition->GeneratorType==ECaveGeneratorType::FloatingIslands)
{islandSlot=&slot;break;}
if(!islandSlot)
{error="floating-island recipe requested but no FloatingIslands strate was resolved";return false;}
const std::uint64_t divisor=std::gcd<std::uint64_t>(owner.OwnerVoxelSizeMicrons,
owner.CoreVoxelSizeMicrons);
if(divisor==0)
{error="owner/Core voxel import ratio is invalid for the floating-island recipe";return false;}
VoxelForgeCore::FloatingIslandRecipeV1 recipe;
recipe.seed=static_cast<std::uint32_t>(owner.Seed);
recipe.ownerVoxelSizeMicrons=owner.OwnerVoxelSizeMicrons;
recipe.coreVoxelSizeMicrons=owner.CoreVoxelSizeMicrons;
recipe.ownerToCoreScaleNumerator=owner.OwnerVoxelSizeMicrons/static_cast<std::uint32_t>(divisor);
recipe.ownerToCoreScaleDenominator=owner.CoreVoxelSizeMicrons/static_cast<std::uint32_t>(divisor);
const std::int64_t coreVoxelsPerOwnerChunk=static_cast<std::int64_t>(CHUNK_SIZE)
*recipe.ownerToCoreScaleNumerator/recipe.ownerToCoreScaleDenominator;
const std::int64_t minimumZ=static_cast<std::int64_t>(islandSlot->BottomChunkZ)
*coreVoxelsPerOwnerChunk*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel
+2*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel;
const std::int64_t maximumZ=static_cast<std::int64_t>(islandSlot->TopChunkZ+1)
*coreVoxelsPerOwnerChunk*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel
-2*VoxelForgeCore::WorldAssemblySubvoxelsPerVoxel;
if(maximumZ<=minimumZ)
{error="FloatingIslands strate is too short for a bounded Core recipe";return false;}
recipe.layoutMinimumZSubvoxels=minimumZ;
recipe.layoutMaximumZSubvoxels=maximumZ;
recipe.layoutCenterTopZSubvoxels=minimumZ+(maximumZ-minimumZ)/2;
auto planned=VoxelForgeCore::PlanFloatingIslandCluster(recipe,error);
if(!planned)return false;
VoxelForgeCore::WorldAssemblyFloatingIslandPlanV1 islands;
islands.strateIndex=islandSlot->StrateIndex;
islands.topChunkZ=islandSlot->TopChunkZ;
islands.bottomChunkZ=islandSlot->BottomChunkZ;
islands.manifest=std::move(*planned);
assembly.floatingIslands.push_back(std::move(islands));
if(!assembly.finalize(error))return false;
VFJson::Value assemblyJson;
if(!VFJson::Parser(assembly.ToJson()).Parse(assemblyJson,error))return false;
auto* rootObject=std::get_if<VFJson::Value::Object>(&root.Data);
if(!rootObject){error="owner snapshot root is not a JSON object";return false;}
(*rootObject)["world_assembly"]=std::move(assemblyJson);
std::printf("[FloatingIslandWorldAssembly] seed=%d strate_index=%d chunks=%d..%d island_count=%zu recipe_hash=%016llx status=PASS\n",
owner.Seed,islandSlot->StrateIndex,islandSlot->TopChunkZ,islandSlot->BottomChunkZ,
assembly.floatingIslands.back().manifest.plan.islands.size(),
static_cast<unsigned long long>(assembly.floatingIslands.back().manifest.recipe.contentHash));
return true;
}
} // namespace StandaloneWorldAssemblyPrototype