# 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](UE-SETUP.md).