Houdini 20.0 Nodes VOP nodes

Water Surface VOP node

Simulates marine water of variable depth and visibility.

This node type is deprecated. It is scheduled to be deleted in an upcoming revision of Houdini.

(Since version 15.0.)

This operator simulates marine water of variable depth and visibility.

The operator does not contain any intrinsic bump mapping. Instead, it is meant to partner well with the Waves displacement operator, which provides a solution for a mix of rolling waves and choppy water.

The most important parameter is Water Depth (waterdepth), which determines the color of the water: lighter where the water is shallow, and darker where the water is deep. Ideally, you will create a float Point attribute called waterdepth using the AttribCreate SOP in the Geometry module, and will assign it to the geometry representing the water surface. This will allow you to vary the depth of the water at each point on the surface.

The Weed inputs (weedcolor, weedfreq, and weedamount) add more realism to the water and can be used to simulate anything from algae to coral reefs and underwater rocks. The weed pattern will always be confined to the mid-depth layers – never too close to the beach or too far into the ocean.

This operator does an internal computation of reflectivity using a faux Frenel method that gives you more control over the behavior. To add a reflective material, such as Cloud Environment, to the water surface, multiply the color output of that environment by the Reflectivity Amount (reflect) output of this operator, then add the result to the Color (color) output of this operator to obtain the final color.

If the Position (P) input and the Normal (N) input are not connected, the global variables by the same names will be used instead. Typically you will use Rest Position or UV Space Change as inputs for P, and will not touch N unless you want to apply additional displacement to the water surface using an operator such as Waves, although, even then, we recommend that you use Waves as a separate displacement shader instead of a bump map. If you do need to access the global variables directly, they are available from the Global Variables operator.

See also

VOP nodes