Ocean
- Last UpdatedNov 25, 2025
- 8 minute read
The Ocean node can be used to create a realistic representation of an infinite water surface.
The water representation includes sky and sun reflection. For this reason, the Ocean node needs to be coupled to a corresponding SkyDome node. If it is not coupled, the aspect of the water will not be correct as some data aspects will be missing.
Limitations
The current limitations of the Ocean node are:
-
Ocean is opaque; it is not possible to see through it.
-
Ocean does not accept shadows.
Platform support
This node is supported on XR-Windows platform only.
It's important to note that the Ocean node is supported only in FGI-based rendering pipelines.
|
XR-WIN |
XR-P-WIN |
XR-P-IOS |
XR-P-AND |
XR-P-WASM |
|---|---|---|---|---|
|
Full support |
No support |
No support |
No support |
No support |
|
|
|
|
|
|
Ocean presets
Managing Ocean settings can be complicated because there are many parameters and correlations. For this reason, the Ocean node comes with four different presets.
-
Calm
-
Normal
-
Waves
-
Big waves
The user can select a preset mode using the presets field.

Custom settings
By selecting the custom value for the presets field, the ocean starts with the last selected preset mode and allows the user to manage settings manually inside the Graphic Context Editor of XR Studio.
Achieving good results requires a deep understanding of the underlaying functionalities.
Ocean functions
Functions are grouped into five main groups of properties:
-
Ocean Colors. Manipulates the coloring of the water.
-
Ocean Geometry. Customizes the ocean surface geometry.
-
Ocean Local Simulation. Customizes the local ocean behavior.
-
Ocean Main Simulation. Customizes the main ocean behavior.
-
Ocean Rendering. Customizes the rendering of the ocean surface using different textures or shader-related settings.
Ocean fields
These are the fields for Ocean node. Only the node-specific fields are indicated, not fields obtained by inheritance.
Field inheritance: NodeBase > Ocean
Default values refer to the Waves preset.
|
Field |
Type |
Use |
Default Value |
Description |
|---|---|---|---|---|
|
beckmannRoughness |
sfloat |
Optional |
0.00001 |
The Beckmann roughness model is based on an isotropic gaussian distribution of slopes. Its roughness parameter corresponds to the standard deviation (RMS) of the slope. A value of zero corresponds to a perfectly smooth specular surface. |
|
foamBubblesTexture |
sstring |
Optional |
waveworks_foam_bubbles_bc4.dds |
The texture used to draw foam bubbles. |
|
foamColor |
svec3 |
Optional |
0.9 0.9 0.9 |
The foam color. |
|
foamIntensityTexture |
sstring |
Optional |
waveworks_foam_intensity_bc4.dds |
The texture used to map the foam intensity. |
|
foamUnderwaterColor |
svec3 |
Optional |
0.6 0.6 0.6 |
The foam underwater color. |
|
geometry_cellCount |
sint |
Optional |
16 |
The number of cells in the geometry patches along the X and Y axes. |
|
geometry_generateDiamondPattern |
sbool |
Optional |
false |
The flag that defines whether cell diagonals should be uniform or alternating (forming a diamond pattern). |
|
geometry_geomorphingDegree |
sfloat |
Optional |
1 |
The degree of geomorphing to use in the range [0,1]. |
|
geometry_maxEdgeLength |
sfloat |
Optional |
5 |
The upper limit of the length, in pixels, that an edge of triangle of the generated geometry can cover in screen space. |
|
geometry_maxLODNumber |
sint |
Optional |
11 |
The LOD of the root node patches used to build quadtree. |
|
geometry_meanSeaLevel |
sfloat |
Optional |
0 |
The mean ocean level, in meters. It is used internally for culling the quadtree nodes against view frustum. |
|
geometry_minPatchLength |
sfloat |
Optional |
25 |
The size of the smallest geometry patch representing quadtree node in world space, in meters (the size of a finest LOD patch). |
|
localSim_amplitudeMultiplier |
sfloat |
Optional |
1 |
Amplitude scale factor for simulated wave amplitude. |
|
localSim_foam_dissipationSpeed |
sfloat |
Optional |
0.3 |
The speed of spatial dissipation of turbulent energy. The range is [0, 1]. The typical values are in the [0.5, 1] range. |
|
localSim_foam_falloffSpeed |
sfloat |
Optional |
0.6 |
In addition to spatial dissipation, the turbulent energy dissolves over time. This parameter sets the speed of dissolving over time. The range is [0, 1]. The typical values are in [0.9, 0.99] range. |
|
localSim_foam_generationAmount |
sfloat |
Optional |
0.2 |
The foam_generation_threshold. The range is [0, 1]. The typical values are [0, 0.1] range. |
|
localSim_foam_generationThreshold |
sfloat |
Optional |
0.6 |
The turbulent energy representing foam and bubbles spread in water starts generating on the crests of the waves if Jacobian of wave curvature gets higher than this threshold. The range is [0, 1]. The typical values are in [0.2, 0.4] range. |
|
localSim_foam_whitecapsThreshold |
sfloat |
Optional |
0.3 |
The crests of the waves become covered with foam if Jacobian of wave curvature gets higher than this threshold. The range is [0, 1]. |
|
localSim_lateralMultiplier |
sfloat |
Optional |
1 |
In addition to height displacements, the simulation also applies to lateral displacements. This controls the non-linearity and therefore 'choppiness' in the resulting wave shapes. The range is [0, 1]. Should typically be set to 1.0. |
|
localSim_simulationAPI |
sint |
Optional |
gpu |
This parameter determines whether the simulation is performed on the GPU or CPU. |
|
localSim_simulationDomainCenter |
svec2 |
Optional |
0 0 |
The coordinates of the center of the simulation domain on horizontal plane, in meters. |
|
localSim_simulationDomainGridSize |
sint |
Optional |
512 |
The size of the simulation grid, in cells. |
|
localSim_simulationDomainSize |
sfloat |
Optional |
200 |
The size of the simulation domain, in meters. |
|
mainSim_baseWind_amplitudeMultiplier |
sfloat |
Optional |
1 |
The amplitude scale factor for simulated wave amplitude. |
|
mainSim_baseWind_direction |
sfloat |
Optional |
0 |
The direction of the wind inducing the local waves. |
|
mainSim_baseWind_distance |
sfloat |
Optional |
0.1 |
The distance over which the wind was blowing at speed defined by parameter above to develop waves, or fetch parameter in JONSWAP spectrum, in km. |
|
mainSim_baseWind_smallWavesCutoffLength |
sfloat |
Optional |
0 |
The simulation spectrum can be low-pass filtered to eliminate wavelengths that could end up under-sampled. This controls the upper limit of wavelengths (in meters) that are considered small. |
|
mainSim_baseWind_smallWavesCutoffPower |
sfloat |
Optional |
0 |
The simulation spectrum can be low-pass filtered to eliminate wavelengths that could end up under-sampled. This controls how much the small waves are damped, in [0, 1] range. |
|
mainSim_baseWind_spectrumPeaking |
sfloat |
Optional |
3.3 |
The factor that defines amplification of dominant wavelength's peak in JONSWAP spectrum. Typical values are in the [3.3, 7] range. |
|
mainSim_baseWind_speed |
sfloat |
Optional |
4.7 |
The speed of the wind inducing the waves. |
|
mainSim_baseWind_windDependency |
sfloat |
Optional |
1 |
The degree to which waves appear to move in the wind direction (as opposed to randomly moving waves). Values in the [0, 1] range. |
|
mainSim_detailLevel |
sint |
Optional |
high |
The detail level of the simulation. This drives the resolution of the FFT. |
|
mainSim_foam_dissipationSpeed |
sfloat |
Optional |
0.6 |
The speed of spatial dissipation of turbulent energy. The range is [0, 1]. The typical values are in [0.5, 1] range. |
|
mainSim_foam_falloffSpeed |
sfloat |
Optional |
0.985 |
In addition to spatial dissipation, the turbulent energy dissolves over time. This parameter sets the speed of dissolving over time. The range is [0, 1]. The typical values are in [0.9, 0.99] range. |
|
mainSim_foam_generationAmount |
sfloat |
Optional |
0.12 |
The foam generation threshold. The range is [0, 1]. The typical values are [0, 0.1] range. |
|
mainSim_foam_generationThreshold |
sfloat |
Optional |
0.37 |
The turbulent energy representing foam and bubbles spread in water starts generating on the crests of the waves if Jacobian of wave curvature gets higher than this threshold. The range is [0, 1]. The typical values are in [0.2, 0.4] range. |
|
mainSim_foam_whitecapsThreshold |
sfloat |
Optional |
0.5 |
The crests of the waves become covered with foam if Jacobian of wave curvature gets higher than this threshold. The range is [0, 1]. |
|
mainSim_lateralMultiplier |
sfloat |
Optional |
1 |
In addition to height displacement, the simulation also applies lateral displacements. This controls the non-linearity and therefore 'choppiness' in the resulting wave shapes. The range is [0, 1]. Typically set to 1.0. |
|
mainSim_simulationAPI |
sint |
Optional |
gpu |
This parameter determines whether the simulation is peformed on the GPU or CPU. |
|
mainSim_simulationPeriod |
sfloat |
Optional |
1000 |
The repeat interval for the FFT simulation in worldspace, in meters. |
|
mainSim_swellWind_amplitudeMultiplier |
sfloat |
Optional |
1 |
Amplitude scale factor for simulated wave amplitude. |
|
mainSim_swellWind_direction |
sfloat |
Optional |
90 |
The direction of the distant wind inducing the swell. |
|
mainSim_swellWind_distance |
sfloat |
Optional |
1 |
The distance over which the wind was blowing at speed defined by parameter above to develop swell, or fetch parameter in JONSWAP spectrum, in km. |
|
mainSim_swellWind_smallWavesCutoffLength |
sfloat |
Optional |
1 |
The simulation spectrum can be low-pass filtered to eliminate wavelengths that could end up under-sampled, this controls upper limit of wavelengths (in meters) that are considered small. |
|
mainSim_swellWind_smallWavesCutoffPower |
sfloat |
Optional |
1 |
The simulation spectrum can be low-pass filtered to eliminate wavelengths that could end up under-sampled. This controls how much the small waves are damped. Values are in the [0, 1] range. |
|
mainSim_swellWind_spectrumPeaking |
sfloat |
Optional |
10 |
The factor that defines amplification of dominant swell wavelengths peak in JONSWAP spectrum. Typical values are in the [3.3, 7] range. |
|
mainSim_swellWind_speed |
sfloat |
Optional |
1.5 |
The speed of the wind inducing the swell. |
|
mainSim_swellWind_windDependency |
sfloat |
Optional |
520 |
The degree to which swell appears to move in the wind direction. |
|
mainSim_timeScale |
sfloat |
Optional |
1 |
The global time multiplier. |
|
mainSim_useBeaufortScale |
sbool |
Optional |
true |
When set to true, the base_wind_speed will accept Beaufort scale value. Otherwise, in meters. |
|
scale |
sfloat |
Optional |
1 |
Scale of the final vertices (from meters to scene units). |
|
skyName |
sstring |
Optional |
Reference to a SkyDome node to be used for reflection and other rendering related calculations. |
|
|
skyType |
senum |
Optional |
skyDome |
Specifies type of Sky to be used to perform reflection on the ocean. Currently, only accepts skyDome value. |
|
specularLevel |
sfloat |
Optional |
1 |
The level of specularity. |
|
useMicrofacetFresnel |
sbool |
Optional |
true |
Includes fresnel calculation for microfacets. |
|
useMicrofacetReflection |
sbool |
Optional |
true |
Includes fresnel calculation for microfacets. |
|
useMicrofacetSpecular |
sbool |
Optional |
true |
Includes specular calculation for microfacets. |
|
uvWarpingAmplitude |
sfloat |
Optional |
0.03 |
These parameters define sinusoidal UV warping for individual cascades to hide repeats in certain cases. Unitless amplitude of sinusoidal distortion (as a fraction of cascade's UV units), should typically be in [0, 0.05] range. |
|
uvWarpingFrequency |
sfloat |
Optional |
2 |
Frequency for sinusoidal distortion. Typical values are in the [1,3] range. |
|
waterDeepColor |
svec3 |
Optional |
0 0.2 0.4 |
The color of the deep water. |
|
waterScatterColor |
svec3 |
Optional |
0 0.7 0.6 |
The color of scattered water. |
|
waterScatterIntensity |
svec2 |
Optional |
0.01 0.02 |
The intensity of scatter. |
|
waterShallowIntensity |
svec2 |
Optional |
0.02 0.02 |
The intensity of shallow. |
|
windGustsTexture |
sstring |
Optional |
waveworks_wind_gusts_bc4.dds |
The texture used for the wind gusts effect on the water surface. |