Files
VoxelForge/Experiments/LivingPlane/UNREAL-MAPPING.md
T
Fr0zkaandClaude Opus 5.5 3b71d35eba experiment: LivingPlane repeatable + standalone UE runtime module (L164)
Readback barrier fix (GL_TEXTURE_UPDATE_BARRIER_BIT before glGetTexImage); check_repeatability.py compares full-field
checksums across query/capture settings - Intel GPU PASS (3b9d45905c7aafff), llvmpipe PASS, mismatch control fails.
New runtime module VoxelForgeLivingPlane (separate from generation): RDG global shader (Shaders/LivingPlane.usf),
ping-pong RGBA32F render targets, actor with WPO plane and object inputs, no CPU readback. Compiles in Linux UE 5.7.
Windows build: Source/VoxelForgeLivingPlane/*, Shaders/LivingPlane.usf, VoxelForge.uplugin. Setup: UE-SETUP.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-11-02 11:10:43 +01:00

2.0 KiB

Unreal mapping note

The prototype stores height, vertical velocity, a recovering imprint, and a spare channel in a pair of RGBA32F textures. A world-owned Unreal component can keep equivalent transient render graph textures and advance them with a compute pass. It should own simulation time and clear or restore its buffers when the world is recreated.

The sphere path becomes a world-space interaction event: position, contact radius, and impulse strength are supplied to the compute pass. For multiplayer or deterministic replay, replicate the compact events and simulation tick, or record the resulting field; do not assume that independent GPU floating-point runs will produce byte-identical textures.

The rendered top surface can remain a render-only displaced mesh. If it must participate in voxel collision or queries, its height must also reach the density evaluator. For a height h(x,y), the plugin's density convention is negative inside solid and positive in air, so the plane's signed density is z - h(x,y). Keep this calculation in metres until the existing voxel/Core boundary converts with the active voxel size (25 cm by default); do not mix metre distances and voxel counts in the wave solver.

The current sample is an isolated visual field. Wiring this into AVoxelWorld would need an explicit owner for simulation lifetime, collision/update cadence, save/load, and the replication policy before it could affect shipped terrain.

L164 render-only Unreal implementation

Source/VoxelForgeLivingPlane/ now implements this render-only path as a separate runtime module. AVoxelForgeLivingPlaneActor owns two UAV-capable RGBA32F render targets, advances the wave, breathing, and imprint equations with an RDG global shader, and binds the current texture to its plane material. Blueprint/C++ supplies object position, radius, velocity, push, and active state. The actor does not call the generation modules and does not read the field back. Level setup and the material graph are in UE-SETUP.md.