Skip to main content
← Roadmap
🌊 Oceanology ProIn Progress6.0.0

Included in Oceanology Pro and Oceanology Lite.

Infinite interactive water

Water reacts to anything that touches it, anywhere in the level — including the open ocean. The simulation window follows the player, so there is no boundary to fall out of and no setup per area.


Water that reacts to whatever moves through it, anywhere in the level, without an artist first placing a box around the area where interaction is allowed. Oceanology Pro runs one native interaction field per world: a fixed-resolution height simulation in world space whose window recenters on whatever you are following. A boat can sail an infinite ocean for an hour and never cross an interaction boundary. It is a world subsystem plus a compute shader, not a Niagara system, a scene capture, or an actor tag convention.

A moving window, not a placed volume

The solver runs at a fixed 60 Hz so tuning stays frame-rate stable, and it rotates three R16f height buffers. Each buffer remembers the world-space center it was written at, so when the window moves the older frames are re-read at their own centers while the new one integrates: history rebases in place, with no copy pass, no reset, and no seam when the field recenters. Recentering only begins once the focus has drifted past a fraction of the window size, 25 percent by default. Focus resolves in order: an explicit Set Follow Actor, then the first player controller's pawn, then its camera, then any registered tracked actor. World origin shifts are handled explicitly, so a large world that rebases its origin does not throw the field away. Two more buffer pairs carry advected foam and horizontal momentum, so a wake drifts and decays instead of blinking on and off with the object that made it.

Getting an object into the water

  • Add a Water Interaction component and author contact points on it. Each source has its own component or socket reference, local offset, radius, signed intensity, edge hardness, height offset and speed limit, so a hull and its two outriggers are three points on one non-ticking component.
  • Let the Advanced module derive them. For pawns in range it builds contact points from the skeletal mesh's physics asset, largest bodies first, up to 16 contacts per mesh and 6 active pawns by default. If the actor already carries an authored interaction component, the automatic path defers to it. Per-gameplay-tag physics asset overrides let a vehicle use a simplified proxy.
  • Call Add Impact or Add Directional Impact from Blueprint for one-shot events: a cannon round, a dropped crate, a spell. Strength is a signed peak height, so punching a depression into the surface is as easy as raising it, and the directional form injects horizontal surface flow.
  • Register any actor with Register Tracked Actor and it gets a footprint derived from its own bounds, clamped between a configurable minimum and maximum radius.

What the material gets back

Two textures and three scalars. The RGBA16f output carries signed normal XY, height in centimeters and foam density. A second, stable RG16f texture carries signed horizontal flow in centimeters per second, which is what lets foam streak along the wake and flow-mapped detail shear correctly rather than the surface only wobbling its normal. The subsystem writes the window center, world size and resolution into a Material Parameter Collection (SimLocation, FluidSimSize and FluidSimResolution by default) and binds both textures directly into water material instances, so a custom water material can read the field with no Blueprint glue. Every parameter name is overridable.

Oceanology NextGenOceanology Pro
Simulation backendNiagara Grid2D fluid driven through a managed Scene Capture 2D data interface, on an actor marked ExperimentalNative global compute shader dispatched from a world subsystem, with no Niagara system and no scene capture in the loop
Area coveredA placed Water Interactor actor with a box volume and a fixed 4096 cm managed ortho widthOne shared field per world whose window recenters on the followed actor, with nothing to place
Opting an object inGive the actor a tag, or add it to the volume's Show Only Actors arrayA Water Interaction component with authored contact points, automatic physics-asset derivation for pawns, or a direct Add Impact call
Field resolution512 by 512 render target32 to 2048, default 1024 at 8 cm per cell, an 81.9 m window
Material outputOne flow render target consumed by the water materialRGBA16f signed normal, centimeter height and foam, plus a separate RG16f signed velocity field in cm/s
Solver rateFixed 60 Hz, up to 2 fixed steps consumed per rendered frame by default (1 to 8)
Height historyThree rotating R16f buffers, each retaining the world center it was written at
Resolution32 to 2048 samples per axis, default 1024
Cell size0.5 to 100 cm per sample, default 8 cm
Simultaneous contact points128 by default, configurable from 1 to 1024
GPU binning8 by 8 texel tiles, at most 64 point references per tile; dropped points and tile references are counted, not silently lost
Recenter threshold5 to 49 percent of window size, default 25 percent
Edge falloffNormalized square-edge sponge, default 8, which is a 64-texel border at 1024 resolution
FoamHalf-life 2 s by default, advected by the momentum field, generated from slope, curvature and impact rate
Velocity fieldPressure-gradient acceleration 980 cm/s^2, 0.985 retention per step, clamped at 2500 cm/s by default
Height safety clamp512 cm by default, 1 to 8192 cm
Activity tailThe field keeps propagating for 8 s after the last new contact, then idles

This is one entry on the Galidar roadmap. For what already shipped in each release, see the Changelog.