standalone: VoxelForgeCore library -- the fast generator behind a clean C++20 API, output unchanged
- Standalone/Core: public header VoxelForgeCore.h (no Unreal types), static library target, ResolvedWorldSnapshot (from the schema-v1 JSON), World (compile, generateTile, density/sign, point/segment solid, classifyBox), host-supplied JobScheduler (the core starts no threads), sequenced, idempotent EditTransaction returning affected tiles per LOD. - The viewer, benchmarks, edits and audits run on Core; StreamingWorld stays host code. - Same as round 11: 11 hash rows at W1 and W8, routes 5642/5642, look/passage/far audits pass, bad-shell control fails, six fixed captures byte-identical; cold W8 1.025 s vs 1.041 s reference. - SHARED_CPP_LIBRARY_PLAN.md rewritten for a UBT module compiling the same sources via shims. Open issue before Unreal: Core's implementation still compiles the Compat stand-ins named like Unreal types (TArray, FVector...); inside a UE binary that is an ODR clash. Must be namespaced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
631dd57eb4
commit
557f6aac30
22 files changed
+6185
-5063
No files matched your search
+17
-15
@@ -1,31 +1,33 @@
|
||||
# VoxelForge standalone world
|
||||
|
||||
This C++20 program loads the owner snapshot from `data/owner_world.json`, runs the copied
|
||||
VoxelForge density pipeline and marching-cubes mesher, streams the clipmap with eight worker threads
|
||||
by default, and displays it through Direct3D 11. Unreal is not linked or needed at run time.
|
||||
This C++20 program loads the owner snapshot from `data/owner_world.json`, runs the VoxelForge CPU
|
||||
pipeline, streams the clipmap with up to eight host worker threads, and displays it through Direct3D
|
||||
11. `Core/` contains the Unreal-free `VoxelForgeCore` API and static-library target used by the
|
||||
standalone shape-world path. Unreal is not linked or needed at run time.
|
||||
|
||||
## Build and launch
|
||||
|
||||
From the plugin root, run:
|
||||
|
||||
```powershell
|
||||
.\Standalone\Build.ps1
|
||||
.\Standalone\bin\VoxelForgeStandalone.exe
|
||||
.\Standalone\Build.ps1 -Target All
|
||||
.\Standalone\bin\VoxelForgeCoreStandalone.exe --shape-world
|
||||
```
|
||||
|
||||
The build uses the configured VS 2022 `vcvars64.bat`, MSVC `/std:c++20 /O2 /arch:AVX2 /fp:precise`.
|
||||
`Build.ps1` starts MSVC at BelowNormal priority and does not enable `/MP`.
|
||||
Pass another executable name to build beside any viewer that may be open:
|
||||
`.\Standalone\Build.ps1 -OutputName VoxelForgeStandalone_test.exe`. The executable finds the
|
||||
JSON beside itself under `Standalone\data\`.
|
||||
`Build.ps1 -Target Core` builds only `Build\VoxelForgeCore\VoxelForgeCore.lib`; `-Target All`
|
||||
builds that library and the viewer. `Core\core_sources.txt` is the shared translation-unit
|
||||
manifest. The build uses the configured VS 2022 `vcvars64.bat`, MSVC `/std:c++20`, `/O2`,
|
||||
`/arch:AVX2`, `/fp:precise` and `/MP8`, BelowNormal priority and affinity `0xFF00`. Pass another
|
||||
executable name to build beside any viewer that may be open by setting `-OutputName`, for example
|
||||
`VoxelForgeCoreStandalone_test.exe`. The executable finds the JSON under `Standalone\data\`.
|
||||
|
||||
### Daytime resource limit
|
||||
|
||||
Run tests and benchmarks at Idle or BelowNormal priority and use no more than 8 of this PC's 16
|
||||
logical CPUs. The default viewer uses eight workers. Use `Build\LaunchBelowNormal.ps1` for any test or
|
||||
benchmark process; it starts the child at BelowNormal, applies affinity `0xFF00`, and verifies both.
|
||||
Builds use no more than four compiler processes (the current build is serial) and retain
|
||||
`/fp:precise`. The all-core 16-worker runs documented below were the owner's one-night exception.
|
||||
Run audits and benchmarks at BelowNormal priority and use no more than 8 of this PC's 16 logical
|
||||
CPUs. The viewer clamps worker requests to eight. `Build.ps1` bounds MSVC with `/MP8`, sets the
|
||||
build process to BelowNormal and affinity `0xFF00`, and retains `/fp:precise`. The verification
|
||||
runner in `Core\verification\RunMachine.ps1` applies the same limits to viewer runs and refuses to
|
||||
overwrite an existing log stem.
|
||||
|
||||
## Controls
|
||||
|
||||
|
||||
Reference in new issue
Block a user