Dynamic Simulation Zone Settings

I recommend reading the description of how the simulation works to better understand its strengths, weaknesses, and possible use cases

Zone Types

A zone designed for stationary simulations such as rivers, lakes, or local flow areas.

  • At startup, it captures the current scene depth within the zone and uses it to compute water-surface intersections

  • The water flow dynamically adapts to the captured terrain and obstacles — allowing rivers to wrap around geometry

  • You can change water sources or modify the flow path, and the simulation will react accordingly

  • Optionally, you can use "pre-caching" feature to bake the current simulation state (including scene depth and flow) This skips the filling phase and starts the simulation from the cached state

  • When cached, the saved data texture is always used — even if terrain or static objects change after restarting Note: Only static data (such as terrain and static geometry) is cached. Dynamic interactions (like water sources, forces, drains, or obstacles) remain fully functional and will still be applied during runtime.

🛠 For procedural or runtime-generated worlds, you can manually reinitialize the zone using: zone.ForceUpdateZone();


Simulation Settings

Intersection Layer Mask – defines which scene layers are used when capturing depth and geometry for water zones. Only objects on these layers will affect water flow, intersections, and foam generation


Texture Foam Settings

Enables or disables foam rendering in the zone. When enabled, foam is drawn as a scrolling texture (using flowmap or advection flow)

Foam Type — Flow Map Foam is cheaper and just follows the static flow texture, good for performance but less realistic. Advected Foam is carried by the actual simulation creating dynamic swirling and stretching around obstacles, but costs more performance

Foam Strength – sets the threshold for foam generation. Shallow (River) Foam raises or lowers the chance of foam appearing in rivers and near shore, while Ocean Foam does the same for the open ocean (starting roughly ~5 meters from the coast). Higher values = more foam appears at lower flow speeds. Note: The foam near the shoreline (where ocean waves break against terrain) is also controlled by river settings.


Foam Particles

Renders small foam particles in zones. Adds detail and realism, but high particle counts can be performance-heavy, especially when many are visible at once

Defines the maximum number of foam particles stored in the GPU buffer. Even if few particles are visible, the entire buffer is allocated in memory which still consumes VRAM and adds a small processing overhead. Use lower values if you don’t need dense foam detail to save performance and memory

Controls how many foam particles are spawned per second. Higher values create denser, more detailed foam trails/splashes, but also increase GPU load; lower values reduce density and improve performance


Splash Particles

Enables rendering of splash particles in zones. Particles can be performance-heavy, especially in large numbers near the camera, causing pixel overdraw. Use with caution

Defines the maximum number of splash particles stored in the GPU buffer. Even if few particles are visible, the entire buffer is allocated in memory, which still consumes VRAM and adds a small processing overhead. Use lower values if you don’t need dense foam detail to save performance and memory.

Controls how many foam particles are spawned per second. Higher values create denser, more detailed foam trails/splashes, but also increase GPU load; lower values reduce density and improve performance


Cache Control

These buttons control the simulation pre-baking process:

Start Cache – Starts the simulation in a 20x accelerated mode. While active, you can move water sources, objects, and tweak parameters in real time to quickly see how the river or flow will behave. This is useful for fine-tuning without waiting for the simulation to run at normal speed.

Last updated