Skip to content

No. 0482 AR ArtEQLabs Pro

Fluid Lab

UE 5.4–5.85/52.0.5

Module: Art · Category: FX · Tool ID: EQFluidLab

Interactive water that actually reacts. A GPU wave canvas simulates a height field per water body; characters and props stamp ripples into it, objects float on it, and the whole thing can be baked down to a looping flipbook when you need the look without the cost.

Four tabs: Setup spawns and wires water, Presets stores and applies tuned looks, Bake flattens the sim to an atlas, and Debug reports measured runtime cost.

Fluid Lab Setup tab with generated content ready: Quick Start spawners, Selected Actors attach behaviours, the three water looks, and the Generated Content section.
Fluid Lab Setup tab with generated content ready: Quick Start spawners, Selected Actors attach behaviours, the three water looks, and the Generated Content section.
A water surface dropped into the level and switched between its three looks, a crate made to float and a buoy given a ripple injector, then simulated and read back in the Debug tab.
  • Ponds, lakes and pools that need to react to gameplay rather than just scroll a normal map
  • Rivers with directional flow along a spline
  • Waterfalls down a cliff face
  • Anything needing buoyancy: floating crates, boats, debris
  • Baking a looping water flipbook for distant or low-end water
  • Don’t use it for oceans. This is a bounded height-field canvas per water body, not a horizon-scale water system.
  • Don’t use the live sim for every puddle in a level. Each body carries a canvas; bake the ones nobody interacts with.
  • Don’t skip Generate Masters. Nearly every action depends on the generated master materials, and the tool will tell you so by name when they are missing.
  1. Open the EQLabs Hub and search for water or fluid (or browse to Art → FX).
  2. Click the tool card.
  3. Start on Setup → Generate Masters before anything else.

Everything else depends on this. The Generated Content section writes master materials, meshes and presets into your project, never into plugin content.

ControlNotes
Masters FolderProject folder the masters are written to — must be a /Game/... path
Generate MastersMaster materials (water looks, baked, debug)
Generate Plane MeshesThe plane meshes surfaces use
Generate PresetsThe shipped UEQFluidPreset assets

Until these exist the panel says so plainly — “Surface created — generate masters first” — naming the asset it could not find.

Why generation rather than shipped assets: the masters are written into your project so they are yours to modify and version. That is also why they are get-or-create — the tool will not clobber a master you have edited.

One click drops a ready, simulating body of water with mesh, material and preset already wired.

ActionResult
Create Water SurfaceA water surface at the origin, selected
Create RiverA spline river — drag the spline points to shape it
Create WaterfallA spline waterfall — drag the spline down your cliff, top point first
Generate Demo MapBuilds and opens a showcase level: four preset quadrants, a buoyant crate, ambient rain

The Demo Map is the fastest way to see what the system does and to compare the presets side by side.

For rivers, flow is not automatic — enable Inject Downstream Flow to make the surface carry things along it.

A river created with Create River and shaped by dragging its spline points.
A river created with Create River and shaped by dragging its spline points.
The same river flowing, with props carried by the current.
The same river flowing, with props carried by the current.

Actions that apply to the current level selection.

ActionWhat it adds
Add BuoyancyMakes selected actors float — enables physics on them
Add Ripple InjectorSelected actors stamp ripples into the water as they move
Add Underwater FXUnderwater camera effects on a fluid surface

Each reports what it did, including how many actors already had the component, so running it twice is safe.

Worth knowing up front:

  • Buoyancy needs simple collision. An actor without simple collision and a physics-enabled collision setting cannot simulate, and the tool says exactly that rather than silently doing nothing.
  • The ripple injector stamps from its component’s own location. If ripples appear in the wrong place, move the component, not the actor.
  • Underwater FX follows the local player camera, so the effect only shows in play, not in the editor viewport.
Crates and a barrel given Add Buoyancy: dropped in, they float and settle on four-point buoyancy.
Crates and a barrel given Add Buoyancy: dropped in, they float and settle on four-point buoyancy.
A character with a ripple injector, leaving foam on the surface as it walks.
A character with a ripple injector, leaving foam on the surface as it walks.

Applies to fluid surfaces only.

LookTrade-off
Single Layer WaterDefault. Cheapest, best lighting integration
TranslucentReal refraction and a soft shoreline, at a higher cost
StylizedToon/stylised treatment

Single Layer Water is the right default in almost every case — it is the engine’s own water shading model and integrates with lighting properly. Move to Translucent when you specifically need refraction through the surface or a soft shore transition.

A pond using the default Single Layer Water look.
A pond using the default Single Layer Water look.
The same pond with the Stylized look and rain.
The same pond with the Stylized look and rain.

Presets are UEQFluidPreset assets holding a tuned look — simulation values plus flow and ambient-wave settings.

ControlNotes
Apply to SelectedApplies the chosen preset to selected surfaces and rivers
Preset NameName for a new preset, e.g. EQFluid_MyWater
Save Selected Surface as PresetCaptures the selected surface’s current values into a new asset

Saved presets go into the Masters Folder set on the Setup tab.

Capture requires exactly one surface selected — the tool refuses several, because collapsing multiple looks into one preset is ambiguous rather than merely awkward. It also refuses a name that already exists rather than overwriting.

Rivers accept presets too, and take everything the surface does.

Fluid Lab Bake tab: frame resolution, atlas columns and rows, sim steps and ambient stamps per frame, playback FPS, and a status line reporting the baked frame count and output path.
Fluid Lab Bake tab: frame resolution, atlas columns and rows, sim steps and ambient stamps per frame, playback FPS, and a status line reporting the baked frame count and output path.

Bakes the GPU sim into a looping flipbook atlas plus an M_EQFluid_WaterBaked material. This is how you get the look on water nobody interacts with, at a fraction of the cost.

SettingNotes
Frame ResolutionSim and tile resolution per frame
Columns / RowsAtlas layout — atlas size = Columns × Res by Rows × Res
Sim Steps / FrameHigher = faster apparent motion in the loop
Ambient Stamps / FrameRaindrop-like agitation that keeps the loop alive
Playback FPSLoop playback rate
Bake FlipbookRuns the solver offline — cancellable

Two things make the result usable: the bake runs the real GPU solver offline rather than approximating it, and the loop seam is cross-faded, so the flipbook does not pop when it wraps.

Watch the atlas dimensions. Columns × Res by Rows × Res grows fast — an 8×8 grid at 512 is a 4096×4096 texture.

Every number on this tab is measured, not modelled.

ReadoutSource
Canvas countLive simulation canvases
ResolutionCanvas resolution
Sleep stateWhether the canvas has settled and stopped simulating
Sim GPU msMeasured from RHI timestamps around the solver’s own passes
Readback livenessWhether GPU readback is flowing

The GPU cost is bracketed around the solver’s passes specifically — it is the sim’s cost, not the frame’s.

ActionEffect
Apply Debug Material to SelectedSwaps in the debug material — undoable
Restore Water MaterialPuts the water material back

Sleep state is the one to watch for performance. A settled canvas sleeps and stops costing anything; water that never sleeps is being agitated by something — usually an ambient wave setting or an injector that never stops stamping.

  1. Setup → Generate Masters (once per project).
  2. Create Water Surface.
  3. Scale and position it.
  4. Presets → apply a preset close to what you want.
  5. Select the character → Add Ripple Injector.
  6. Select props that should float → Add Buoyancy (give them simple collision first).
  7. Tune, then Save Selected Surface as Preset to keep the look.
  8. Debug → confirm the canvas sleeps when nothing is disturbing it.
  • “Not found — run Generate Masters first.” Almost every first-use problem. The message names the missing asset.
  • Masters Folder must be a /Game/... path. Preset saving fails on an invalid content path and says so.
  • Buoyancy without simple collision does nothing. The tool warns, but the fix is on the mesh.
  • Rivers need Inject Downstream Flow enabled to actually carry anything.
  • Underwater FX won’t show in the editor viewport. It follows the player camera, so it needs play mode.
  • Atlas size is multiplicative. Check Columns × Res before baking.
  • Water that never sleeps costs you every frame. Check the Debug tab’s sleep state.
  • Debug material swaps are transacted. Undo restores the water material.
The full workflow, start to finish.
Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.