---
title: FluidSimulation
product: Advanced Framework Pro
version: 1.0
engine: Unreal Engine 5.8
updated: 2026-10-05
canonical: https://docs.human-codeable.com/plugins/fluidsimulation.html
---

System

# FluidSimulation

#### What it gives you

—

#### Requires

None

#### Required by

None

10 assets156 API members

Note

Narrative documentation for this plugin is still being written. The API reference below is complete.

## API reference

Every blueprint asset in this plugin. Expand an asset to see its members.

### Blueprints

**BP_FluidSim_01**78 members

extends `Actor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Ripple Sim MID`Debug | `MaterialInstanceDynamic` | — |
| var | `Render Normals MID`Debug | `MaterialInstanceDynamic` | — |
| var | `Display MID`Debug | `MaterialInstanceDynamic` | — |
| var | `Ripple RTs`Debug | `TextureRenderTarget2D[]` | — |
| var | `Show Simulation Mesh`Simulation | `bool` | Allows toggling the simulation. |
| var | `Display Material`Simulation | `MaterialInterface` | Which material this blueprint uses to display the fluid simulation. |
| var | `Solver`Simulation | `FluidSimSolverMode` | — |
| var | `Virtual FPS`Simulation | `float` | Fluidsim looks best run at a fixed frame rate. This is the fixed frame rate the sim will run at. Higher fps cost more. |
| var | `Fixed Step`Debug | `float` | — |
| var | `Damping`Simulation | `float` | Wave dampening. 1 means no dampening, 0.9 means waves lose 10% every simulation step. |
| var | `Simulation World Size`Simulation | `float` | The size of the simulated grid in the world. |
| var | `Resolution`Simulation | `int` | The 2D resolution of the simulation. |
| var | `Travel Speed`Simulation\|Ripple Solver | `float` | Wave Travel Speed. For advanced tweaking. |
| var | `Normal RT`Debug | `TextureRenderTarget2D` | — |
| var | `Cut Pos`Debug | `Vector` | — |
| var | `Grid Center`Debug | `Vector` | — |
| var | `Forces RT`Debug | `TextureRenderTarget2D` | — |
| var | `Show Cross Section`Debug | `bool` | — |
| var | `Perf Test Mode`Debug | `bool` | — |
| var | `Perf RT`Debug | `TextureRenderTarget2D` | — |
| var | `Impulse Forces`Forces | `FluidForceImpulsePerInstanceData[]` | — |
| var | `Dynamic Forces`Forces | `Map<ActorComponent, FluidForceDynamicPerInstanceData>` | — |
| var | `Force Parent and MIDMap`Forces | `Map<MaterialInterface, MaterialInstanceDynamic>` | — |
| var | `Debug Text`Debug | `bool` | — |
| var | `Pawn Check Every N Frames`Forces | `int` | — |
| var | `Projectile Forces`Forces | `Map<ActorComponent, FluidForceDynamicPerInstanceData>` | — |
| var | `Follow Player `Simulation | `bool` | When True, the simulation moves with the player. When false you can position it or attach it to other objects. |
| var | `Default Water Depth`Simulation\|Shallow Water | `float` | The default depth only affects the Shallow Water simulation. Only used when Terrain Water System is disabled. When the Terrain Water system is enabled, the water depth comes from the Water Bodies associated with your landscape. |
| var | `Fixed Time Step`Simulation | `bool` | When true, the simulation will attempt to run at its own separate frame rate, potentially performing multiple substeps per frame in order to hit the specified VirtualFPS value. |
| var | `Frames Until Simulation Idle`Simulation | `int` | When >0, the simulation will become idle after the set number of frames elapse without any new fluid forces. Note that the idle time will genearlly be the Number of Frames divided by the fps. For example, at 600 frames and 60fps, the simulation would go idle after seeing no new forces for 10 seconds. You must adjust dampenig values to ensure the fluid is not still flowing much by this point. |
| var | `Landscape Water Texture`Debug | `Texture` | — |
| var | `Simulate Wave Foam`Simulation\|Wave Simulation | `bool` | — |
| var | `Wave Sim World Size`Simulation\|Wave Simulation | `float` | — |
| var | `Wave Foam Resolution`Simulation\|Wave Simulation | `int` | The 2D resolution of the simulation. |
| var | `Fading`Simulation\|Wave Simulation | `float` | — |
| var | `Wave Time Offset`Simulation\|Wave Simulation | `float` | — |
| var | `Depth Capture RT`Debug | `TextureRenderTarget2D` | — |
| var | `Edge Mask RT`Debug | `TextureRenderTarget2D` | — |
| var | `Jump Flood A`Debug | `TextureRenderTarget2D` | — |
| var | `Jump Flood B`Debug | `TextureRenderTarget2D` | — |
| var | `Generate Scene Capture Distance Field`Simulation\|Shallow Water | `bool` | — |
| var | `Water Body`Simulation\|Wave Simulation | `WaterBody` | — |
| var | `Edge Mask MID`Debug | `MaterialInstanceDynamic` | — |
| var | `Compute Distance MID`Debug | `MaterialInstanceDynamic` | — |
| var | `Voronoi Distance Ref Copy`Debug | `TextureRenderTarget2D` | — |
| var | `Terrain Mode`Simulation | `FluidTerrainModes` | Controls how terrain influences the simulation. Note that 'Terrain with Elevation' mode is not supported for the RIpple Solver. |
| var | `Wave Threshold`Simulation\|Wave Simulation | `float` | — |
| fn | `Get Frames Since Last Active Force` | `()` | — |
| fn | `Clear Sim from Waterbody MIDs` | `()` | — |
| fn | `Remove Projectile Force` | `(Component: ActorComponent)` | — |
| fn | `Register Projectile Force` | `(Dynamic Fluid Force: FluidForceDynamic, Tracked Component: SceneComponent)` | — |
| fn | `GetPlayerPawnForces` | `()` | — |
| fn | `Validate RTs` | `(out RTs All Valid: bool)` | — |
| fn | `Set Waterbody MID Params` | `()` | — |
| fn | `GetLocalPawn` | `(out Pawn: Pawn)` | — |
| fn | `Draw Dynamic Force`Default | `(out Canvas: Canvas, out Canvas Size: Vector2D, out Dynamic Force Settings: FluidForceDynamicPerInstanceData)` | — |
| fn | `Remove Dynamic Force` | `(Component: ActorComponent)` | — |
| fn | `Register Dynamic Force` | `(Dynamic Fluid Force: FluidForceDynamic, Tracked Component: SceneComponent, WaterLevel: float)` | — |
| fn | `Update Dynamic Forces` | `()` | — |
| fn | `Draw Impulse Force`Default | `(Canvas: Canvas, Canvas Size: Vector2D, Impulse Settings: FluidForceImpulsePerInstanceData)` | — |
| fn | `Update Impulse Lifetimes` | `()` | — |
| fn | `Apply Fluid Force Impulse` | `(Impulse Settings: FluidForceImpulse)` | — |
| fn | `Get LandscapeWaterInfo` | `()` | — |
| fn | `Get Force MID`Default | `(out Parent: MaterialInterface, out MID: MaterialInstanceDynamic)` | — |
| fn | `GridMovement` | `()` | — |
| fn | `Setup SimMID and MPC Values`Default | `()` | — |
| fn | `SetupDisplayMIDs`Default | `()` | — |
| fn | `Convert Force Position` | `(Force Location: Vector, Sine Bob: float, out UV Location: Vector)` | — |
| fn | `Cycle Render Targets` | `(out Current Target: TextureRenderTarget2D)` | — |
| event | `Clear RTs` | `()` | — |
| event | `Allocate RTs` | `()` | — |
| event | `ReCheckScalability` | `()` | — |
| event | `Release RTs` | `()` | — |
| event | `FluidGridDebug` | `()` | — |
| event | `Get Wave Spectrum` | `()` | — |
| event | `Initialize In Editor` | `()` | — |
| event | `Tick Custom` | `()` | — |
| event | `Capture Height and DF` | `()` | — |

### Blueprints/Components

**ShallowWaterSimComponent**31 members

extends `ActorComponent`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Height RT A` | `TextureRenderTarget2D` | — |
| var | `Height RT B` | `TextureRenderTarget2D` | — |
| var | `Velocity RT A` | `TextureRenderTarget2D` | — |
| var | `Velocity RT B` | `TextureRenderTarget2D` | — |
| var | `Velocity Force RT` | `TextureRenderTarget2D` | — |
| var | `Height Idx` | `int` | — |
| var | `Velocity Idx` | `int` | — |
| var | `Advect Height MID`MIDs | `MaterialInstanceDynamic` | — |
| var | `Advect Velocity MID`MIDs | `MaterialInstanceDynamic` | — |
| var | `Height Divergence Update MID`MIDs | `MaterialInstanceDynamic` | — |
| var | `Gravity Acceleration MID`MIDs | `MaterialInstanceDynamic` | — |
| var | `Sim Resolution` | `IntPoint` | — |
| var | `Sim World Size` | `Vector2D` | — |
| var | `Texel World Size` | `Vector2D` | — |
| var | `Sim Location` | `Vector` | — |
| var | `Delta T` | `float` | — |
| var | `Seed Water MID`MIDs | `MaterialInstanceDynamic` | — |
| var | `Use Scene Capture`Simulation | `bool` | — |
| var | `Sub Steps` | `int` | — |
| var | `Manual Advect Material` | `MaterialInterface` | — |
| var | `Manual Advect Velocity Material` | `MaterialInterface` | — |
| fn | `PingPong-Velocity` | `(out Read RT: TextureRenderTarget2D, out Write RT: TextureRenderTarget2D)` | — |
| fn | `PingPong-Height` | `(out Read RT: TextureRenderTarget2D, out Write RT: TextureRenderTarget2D)` | — |
| fn | `Clear RTs` | `(Default Water Depth: float)` | — |
| fn | `Create RTs` | `()` | — |
| fn | `Simulation Step` | `(out Height RT: TextureRenderTarget2D)` | — |
| fn | `Seed Water`Default | `()` | — |
| fn | `Set Sim MID Params` | `(Forces: Texture, Terrain: Texture)` | — |
| fn | `Create Sim MIDs` | `()` | — |
| event | `Initialize ShallowWaterSim` | `(Res: int, Terrain Mode: FluidTerrainModes, Forces: Texture, Terrain Texture: Texture, Default Water Depth: float)` | — |
| event | `Release Shallow Water Sim RTs` | `()` | — |

**WaveFoamSimComponent**12 members

extends `ActorComponent`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Foam RT A` | `TextureRenderTarget2D` | — |
| var | `Foam RT B` | `TextureRenderTarget2D` | — |
| var | `Wave RT` | `TextureRenderTarget2D` | — |
| var | `Draw Wave MID` | `MaterialInstanceDynamic` | — |
| var | `Foam Diffuse MID` | `MaterialInstanceDynamic` | — |
| var | `Foam Tone Map MID` | `MaterialInstanceDynamic` | — |
| fn | `Render Waves to RT` | `(out NewParam: GerstnerWave[])` | — |
| event | `InitializeWaveFoamSim` | `(Res: int, WorldSize: float, Fading: float, TimeBias: float, WaterBody: WaterBody, ShallowWater: ShallowWaterSimComponent)` | — |
| event | `Create MIDs` | `()` | — |
| event | `Allocate RTs` | `()` | — |
| event | `Wave Simulation Step` | `()` | — |
| event | `Release Foam Sim RTs` | `()` | — |

### Blueprints/Examples

**BP_Dynamic_Force_Component**6 members

extends `Actor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Radius` | `float` | — |
| var | `Strength` | `float` | — |
| var | `Material` | `MaterialInterface` | — |
| var | `Show Mesh` | `bool` | — |
| var | `Oscillation Speed` | `float` | — |
| var | `Osc Mag` | `float` | — |

**BP_Dynamic_Force_SkelMesh**1 members

extends `Actor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Fluid Force Dynamic Settings` | `FluidForceDynamic` | — |

**BP_Fluid_Impulse_Repeating**3 members

extends `Actor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Impulse Every N Seconds` | `float` | — |
| var | `Imulse Settings` | `FluidForceImpulse` | — |
| event | `Trigger` | `()` | — |

**BP_GetSimRenderTargets_Material**2 members

extends `Actor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Material To Use` | `MaterialInterface` | — |
| var | `Static Mesh` | `StaticMesh` | — |

**BP_WaterSim_TickInEditorTest**3 members

extends `WaterLandscapeBrush`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Tick In Editor` | `bool` | — |
| event | `Start Tick` | `()` | — |
| event | `Stop Tick` | `()` | — |

### Blueprints/Libraries

**PhysicsMacros**0 members

extends `Actor`

No editor-visible members; this asset configures defaults only.

### WaveFoam

**WaveFoamRenderer**20 members

extends `LandmassActor`

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Foam RT A` | `TextureRenderTarget2D` | — |
| var | `Foam RT B` | `TextureRenderTarget2D` | — |
| var | `Draw Wave MID` | `MaterialInstanceDynamic` | — |
| var | `Foam Diffuse MID` | `MaterialInstanceDynamic` | — |
| var | `Fade` | `float` | — |
| var | `Time Bias` | `float` | — |
| var | `Freeze` | `bool` | — |
| var | `Foam Tone Map MID` | `MaterialInstanceDynamic` | — |
| var | `Res` | `int` | — |
| var | `Wave RT` | `TextureRenderTarget2D` | — |
| var | `Waterbody` | `WaterBody` | — |
| var | `Wave` | `GerstnerWave` | — |
| var | `Ticking` | `bool` | — |
| var | `Simulation World Size` | `float` | — |
| event | `Allocate RTs` | `()` | — |
| event | `Create MID` | `()` | — |
| event | `Start Tick` | `()` | — |
| event | `Stop Tick` | `()` | — |
| event | `CustomTick`Tick | `(DeltaSeconds: float)` | — |
| event | `Initialize` | `()` | — |
