Houdini 20.0 Nodes Geometry nodes

Ocean Evaluate 2.0 geometry node

Deforms input geometry based on ocean “spectrum” volumes.

Since 16.0

This node uses volumes generated by one or more Ocean Spectrum nodes Merged together and connected to the second input to deform geometry in the first input. If multiple ocean spectra are input, their waves will be added together during evaluation, possibly modified by any mask or noise parameters on each input Ocean Spectrum layer.



The time at which to evaluate the ocean surface.


Downsample the incoming ocean spectra before evaluating any ocean values. This parameter specifies the number of powers of two to remove from the resolution of the incoming ocean spectrum. For example, if the spectrum was originally specified at resolution 10 to generate a 1024 x 1024 volume, downsampling by 2 will evaluate ocean volumes at resolution 8, a 256 x 256 volume.


The same high resolution spectrum can be processed by multiple Ocean Evaluate nodes, for example one with no downsampling to deform surface geometry, and another at a downsampled resolution to generate the more expensive volume or point output.

Max Resolution

Downsample the incoming ocean spectra to the specified maximum resolution before evaluating any ocean values. This parameter is useful to avoid evaluation of very high-resolution spectra when only requiring simulation data, for example. It can also be more convenient than the Downsample parameter when there are multiple incoming spectra of different resolutions.

Depth Falloff

Specifies how deformation and velocity values falloff as the input points lie below the ocean surface. This value also controls the rank of the calculation volumes that are output if Rest Displacement or Rest Velocity is enabled: 2D if falloff is None but 3D otherwise.


Values do not falloff below the surface.


All values have the same exponential falloff below the surface.

Exponential by Frequency

Values have an exponential falloff that is scaled per wave frequency. With this setting the contribution from small, high frequency waves falls off very quickly. It is the most accurate setting and most expensive to compute.

Falloff Scale

An additional scale applied to the exponential falloff modes in Depth Falloff. For the most physically accurate values this should be set to 1 in conjunction with the Exponential by Frequency mode.

Max Depth

The maximum depth for the evaluated ocean volumes. All input positions deeper than this value will be clamped before sampling the ocean values.

Depth Divisions

The number of divisions along the depth axis if the computed ocean are 3D, as specified by the Depth Falloff parameter. Higher values are more accurate but more expensive to calculate.

Solo Layer

If multiple ocean spectra are input to this node, limit the evaluation to the specified layer.


Deform Input Geometry

Deform the input geometry by the calculated ocean deformations.

Preview Grid

Output a deformed grid exactly the size of the underlying ocean volume. This preview grid is fastest to evaluate and provides a simple way to view the deforming ocean surface.

Point Velocity

Add a velocity point attribute to the output geometry.

UV Attribute

Add a uv attribute to the output geometry that can be used for texture lookups into the texture maps created with the Export to Texture tab. If Bake All Displacements to One Layer is disabled on that tab and there are multiple Ocean Spectrum layers input to this node, then each layer will get a separate uv attribute. If Bake All Displacements to One Layer is enabled, only one layer of uv attribute is assigned to the input geometry via a planar projection over the entire input geometry.

Cusp Attribute

Add a cusp point attribute to the output geometry that represents the sharpness of the wave peaks at any point, with values ranging from below 0 if the wave is stretched out, to greater than 1 if the wave peak is so sharp it has inverted.

Cusp Direction Attribute

Add a cuspdir vector point attribute to the output geometry that points in the direction of the wave peaks.


The cuspdir vector will point in the direction of the wave peak, but may or may not be aligned with the wave velocity. It can be useful to align these vectors with the following VEX code:

if (dot(v@v, v@cuspdir) < 0)
    @cuspdir = -@cuspdir;

Visualize Cusp

Visualize the cusp attribute by color.

Attribute Ramp

The color ramp with which to visualize the cusp attribute.


Surface SDF

Generate a surface SDF volume of the specified size and resolution.

Height Field

Generate a height 2-D volume containing the wave height in each voxel. This output can be manipulated using the HeightField family of SOPs.


The method used for generating the surface and height volumes. Point Sampling is less accurate, but also uses less memory and processing time. Projection is more accurate, but at high resolutions can use a large amount of memory and processing time.

Surface Depth

The Surface SDF will represent the ocean at the specified depth. This differs from simply offsetting the output surface SDF as it takes into account the Depth Falloff setting.


Controls the radius of the points used to generate volumes when Method is set to Point Sampling. Higher values are more expensive, but give smoother volumes.


Generate a vel velocity volume of the specified size and resolution.

Hydrostatic Pressure

Generate a pressure volume of the given size and resolution initialized to the hydrostatic values of the ocean. This uses the depth of the ocean with respect to the heightfield.


Strength of gravity for hydrostatic pressure computation.

Mass Density

Density of the liquid for the hydrostatic pressure computation.


The size of the generated volumes.


The origin of the generated volumes.

Uniform Sampling

It is often advantageous to make sure voxels in a volume are cubes. This option allows the resolution of the volume to be specified without having to worry about matching the size and resolution fields. This parameter controls which axis is divided into Uniform Sampling Divisions.

Uniform Sampling Divs

The number of voxels to divide the Uniform Sampling axis into. The other axes will be divided into the number of cells that fit for this voxel size.

Sampling Divs

When using non-uniform voxel cells, each dimensions resolution can be specified here.

Div Size

The uniform size of the voxels, when specifying the voxel size directly. The given sized box will be filled by voxels of this size.

Max Extrap Cells

When generating velocity volumes, how many voxels from the ocean surface to extrapolate velocity values.

Max Displacement Frame

When generating volumes and points, this node needs to calculate the maximum horizontal and vertical displacement in the input ocean waves. If this parameter is enabled, the displacement will be estimated only once at the specified frame, which is fast, gives a stable point output, and is typically accurate enough for good results. However, in the case of animated wave amplitudes or quickly varying instancing geometry, it may be necessary to continuously re-calculate the displacement by disabling this parameter.

Rest Volumes

Rest Displacement

Output the internally computed displacement volume. Samples taken from this volume should be in rest position.

Rest Velocity

Output the internally computed velocity volume. Samples taken from this volume should be in rest position.

Rest Derivatives

Output the internally computed spatial derivatives of displacement. Samples taken from this volume should be in rest position.


Points from Volume

Generate points with velocity in the volumetric intersection of the ocean surface and the specified box.

Point Separation

The smallest distance between any two of the generated points in the initial configuration.

Jitter Seed

Random seed for creating jitter.

Jitter Scale

The amount of jitter to apply to the positional values of the points.

Min Rest Depth

The minimum depth of points relative to the ocean surface.

Max Rest Depth

The maximum depth of points relative to the ocean surface.

Box Size

The size of the box in which to generate points.

Box Center

The origin of the box in which to generate points.

Pad Scale

The rest configuration of points is generated by evaluating the maximum possible ocean displacement at time zero. This will usually be sufficient padding, but with extreme displacement it might be necessary to increase the padding scale in this parameter.

Create Output Group

Create a group containing the generated points.

Output Group

The name of the generated output point group.

Export to Texture

This tab controls exporting the displacement and cusp volumes to textures that can be sampled during rendering. Most of the parameters here are exposed from the Composite output node. If there are multiple Ocean Spectrum inputs to this node and Bake All Displacements to One Layer is disabled, then each layer can be written out to a separate file sequence by using the $OCEANLAYER global variable in the filename, as it is set to the current layer being exported. If Bake All Displacements to One Layer is enabled then only one layer is output.


Controls where the displacement and / or cusp values are stored in the texture.

Raster Depth

Controls the bit depth of the generated textures. If the texture format supports 16-bit float, this bit depth can save space with little degradation in rendering.

Bake All Displacements to One Layer

Bake all displacements from the input layers, masks, and noise to a single texture that covers the entire input geometry. If the UV Attribute output is enabled, the 'uv' attribute will span the entire input geometry and this single texture can be used to displace the input geometry at render time.


The texture will not repeat as the per-layer spectrum output will. However, since it includes all masks and noise in a single texture, it is the most straightforward method for rendering ocean output with a displacement map.

See also

Geometry nodes