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.
Included in Oceanology Pro, Oceanology Lite and Riverology 3.
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.
| Feature | Oceanology NextGen | Oceanology Pro |
|---|---|---|
| Simulation backend | Niagara Grid2D fluid driven through a managed Scene Capture 2D data interface, on an actor marked Experimental | Native global compute shader dispatched from a world subsystem, with no Niagara system and no scene capture in the loop |
| Area covered | A placed Water Interactor actor with a box volume and a fixed 4096 cm managed ortho width | One shared field per world whose window recenters on the followed actor, with nothing to place |
| Opting an object in | Give the actor a tag, or add it to the volume's Show Only Actors array | A Water Interaction component with authored contact points, automatic physics-asset derivation for pawns, or a direct Add Impact call |
| Field resolution | 512 by 512 render target | 32 to 2048, default 1024 at 8 cm per cell, an 81.9 m window |
| Material output | One flow render target consumed by the water material | RGBA16f signed normal, centimeter height and foam, plus a separate RG16f signed velocity field in cm/s |
| Solver rate | Fixed 60 Hz, up to 2 fixed steps consumed per rendered frame by default (1 to 8) |
|---|---|
| Height history | Three rotating R16f buffers, each retaining the world center it was written at |
| Resolution | 32 to 2048 samples per axis, default 1024 |
| Cell size | 0.5 to 100 cm per sample, default 8 cm |
| Simultaneous contact points | 128 by default, configurable from 1 to 1024 |
| GPU binning | 8 by 8 texel tiles, at most 64 point references per tile; dropped points and tile references are counted, not silently lost |
| Recenter threshold | 5 to 49 percent of window size, default 25 percent |
| Edge falloff | Normalized square-edge sponge, default 8, which is a 64-texel border at 1024 resolution |
| Foam | Half-life 2 s by default, advected by the momentum field, generated from slope, curvature and impact rate |
| Velocity field | Pressure-gradient acceleration 980 cm/s^2, 0.985 retention per step, clamped at 2500 cm/s by default |
| Height safety clamp | 512 cm by default, 1 to 8192 cm |
| Activity tail | The field keeps propagating for 8 s after the last new contact, then idles |