On this page

Shallow water solver

  • The new Shallow Water Solver SOP node simulates, how water behaves in certain scenarios. Typical examples are ripples and non-breaking waves, ponds and puddles, or water, running over cracks and surface irregularities. The Shallow Water Solver is entirely based on heightfields. Heightfields can be painted, sculpted or created from displacement maps. The solver recognizes the included height information to simulate, how water behaves in such an environment. The solver’s output is also a heightfield.

  • In contrast to particle fluid simulations, the Shallow Water Solver is a 2D solver. The main advantage is the solver’s simulation speed. The flooding of huge landscapes with the Shallow Water Solver is much faster as with particles. Also the amount of cached data is significantly smaller and you don’t have to use particle surface methods to create meshes. Other effects, like the filling of glasses and pools, can’t be performed with the Shallow Water Solver and still require particles. Secondary effects such as whitewater, foam or splashes from collisions are not available with the Shallow Water Solver by default.

  • The Shallow Water Solver is controlled through masks. With masks you can define the location of sources, sinks, and where forces should be applied. It’s also possible to connect custom velocity fields to drive a simulation. Masks can be applied through Houdini’s heightfield mask nodes, e.g. HeightField Draw, HeightField Mask by Object or HeightField Mask by Feature.

  • The mask’s value (0-1) determines the water source’s (or sink’s) strength. Values of 0 have no effect on the simulation, 1 means full strength. This way it’s, for example, possible to create sinks, where the water slowly trickles away. Masks can be static, animated or deforming. Animated and deforming masks are evaluated per frame or - if the changes are very fast - per substep (slow!). The solver’s Constraint Updates sub-pane provides appropriate Frequency parameters for sources, sinks, and forces.

  • Displaced water from collisions with moving objects is possible, but requires custom velocity and force fields. The quality of the results also strongly depends on things like object speed, scale, and solver substeps. For accurate and highly customizable fluid-object interactions you can use Vellum fluids or FLIP fluids.

  • The Shallow Water Solver node’s output contains all heightfields, masks and the water’s velocity field as separate channels. You can see in the node’s Node info, which heightfields are available.


  • On most platforms, Houdini now uses the FFT implementation from Intel’s MKL library in the VolumeFFT SOP and ocean_sample VEX function. This implementation is significantly faster than the previous one for large domains, for example an Ocean Spectrum with a Resolution Exponent of 12 (4K) or higher.

  • In the Ocean Spectrum SOP you can now choose from the new TMA spectrum and the traditional Phillips, better known as Encino and Tessendorf waves.

  • Encino waves are based on the Empirical directional wave spectra for computer graphics paper from Christopher Horavth, published in 2015. Christopher’s nickname is Blackencino. In January 2001, Jerry Tessendorf published his paper on Simulating Ocean Water. The Tessendorf implementation is still the standard for ocean waves in computer graphics.

  • In TMA mode, a Swell parameter modifies the directional spreading to create more parallel waves. The Fetch (km) parameter describes the distance that wind travels over open water without a significant change of direction. It can also be interpreted as the distance from an imaginary shore line. By changing Swell and Fetch (km) you can simulate anything from high-frequency waves near the coast to swelling open sea waves. With Wind you adjust the waves' height and speed. The influence of the Depth parameter is also more obvious in TMA mode.

Ocean rendering in Karma CPU

What’s new in Houdini 19.5