Included in Oceanology Pro and Oceanology Lite.
Place a simulation actor over a river, lake or beach and the water becomes real fluid: it flows downhill, pools behind obstacles, and reacts to the actual terrain underneath instead of a flat plane.
A real fluid solver you place in the level. Drop an Oceanology Shallow Water Simulation actor, size its box over a river mouth, a harbour, a flooded street or a lake, and the water inside it stops being an animated surface and becomes a column of water with mass and momentum. It flows downhill, piles up against geometry, drains, floods, and dries out. By default the actor discovers every eligible water body overlapping its bounds, so the normal workflow really is place it, size it, press Start.
It integrates the 2D shallow water equations conservatively on the GPU: a finite-volume scheme with hydrostatic reconstruction at cell faces and a Rusanov flux. That combination is what makes it well balanced, so a lake at rest stays exactly at rest instead of slowly boiling, and a wet front can advance onto dry cells and retreat again without leaking mass every time it moves. Foam is carried as transported mass rather than painted on top. Each numerical substep costs two dispatches, height then momentum, and the substep count is chosen from a Courant condition every update, so refining the grid does not quietly destabilise the simulation. A GPU volume probe can reduce the whole domain to total wet volume and wet-cell count for readback, which is the instrument used to prove the transport scheme actually conserves mass instead of trusting that it looks right.
The live solver publishes a decimated, asynchronous copy of the surface to gameplay queries and buoyancy: depth, height and horizontal velocity per cell. A raft in a simulated current is carried by it, and a query outside the captured water reports Uncovered rather than guessing at a surface. The readback never stalls the render thread and is rate limited. Baked regions serve the same query API from a deterministic CPU snapshot instead.
| Oceanology NextGen | Oceanology Pro | |
|---|---|---|
| Local fluid behaviour | None. Water height came from the wave sources; the only surface disturbance available was the experimental Niagara ripple volume | Placed regions running a conservative GPU shallow water solver with terrain, sources, sinks, momentum and wetting/drying |
| Terrain coupling | Landscape depth read through the Water Info texture | A private bottom-contour capture of static and stationary rendered geometry, refreshed only when you ask for it |
| River flow | Spline flow authored into the material | Spline ends become real hydraulic source and sink boundary conditions feeding the solver |
| Gameplay coupling | Buoyancy and queries sampled the analytic wave surface | Buoyancy and queries can additionally sample the solved depth, height and velocity field, live or baked, with explicit coverage |
| Simulation modes | Fixed Bounds, which preserves one hydrological volume, or Follow Water Info, a window that migrates with the view for infinite oceans |
| Update rate | 15 to 240 Hz, default 60, with up to 4 fixed updates consumed per rendered frame |
| Substepping | Courant number 0.1 to 0.45 (default 0.45), up to 16 substeps, and a hard ceiling of 64 integration dispatches per frame that dilates time instead of building a catch-up backlog |
| Grid | Coupled to the Water Info texture by default, or an explicit cell size with a 128 to 2048 cell window; fixed regions derive both axes from their authored size, capped at 2048 |
| VRAM budget | 48 MiB per simulation by default (16 to 512), plus a shared world budget of 256 MiB across all loaded live simulations |
| Physics defaults | Gravity 980 cm/s^2, velocity damping 0.12, bottom friction 4, dry depth 2 cm, maximum velocity 3000 cm/s, maximum surface rise 2000 cm |
| Open boundary | An 8-texel sponge restoring the authored water height and flow at the region edge |
| Terrain capture | Up to 512 primitives, 10000 cm vertical search depth, with explicit actor, actor-tag and component-tag overrides taking priority |
| Impulse slots | 16 per solver dispatch, shared between automatic wakes (12 by default), placed content and explicit gameplay hits |
| Regions per material | Up to 8 loaded regional outputs published to a single water material |
| Live physics readback | 1 to 30 Hz (default 12), long axis 32 to 256 cells (default 128), aspect preserved |
| Performance gates | Pauses GPU updates while none of its water is rendered, after a configurable visibility grace period |
This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.