Skip to main content

Oceanology Next-Gen — Waves

Last updated: 2025-12-10

Prerequisites

  • Unreal Engine 5.6 or newer.
  • Oceanology Next-Gen installed and configured (see the Setup page).
  • At least one Oceanology Next-Gen water body placed in your level (Infinite Ocean or Lake).
  • Basic familiarity with Blueprints and material parameters in Unreal Engine.

Notes

  • Oceanology Next-Gen uses a Spectral Gerstner wave system that generates realistic ocean surface displacement based on the Beaufort wind scale. This physically-based approach creates natural wave patterns that respond to wind speed and direction.
  • The wave system includes Wave Buffers that capture wave data into render targets at multiple LOD distances (Near, Medium, Far) for efficient GPU sampling.
  • Shore Waves provide coastal breaking wave simulation with configurable transition factors and sway amplitudes.
  • Wave parameters directly affect Buoyancy calculations — any changes to wave settings will influence how objects float and respond to the water surface.
  • The system is deterministic, ensuring synchronized wave states across multiplayer clients without additional network overhead.

Step-by-step

1. Add an Oceanology Infinite Ocean to your level

Open your level and use the Quickly Add to the Project menu (the + button in the toolbar or right-click in the viewport). Type oceanology in the search field to filter the available actors.

You will see several Oceanology actors available:

Volumes:

  • Oceanology Water Niagara Waves Volume — Enables Niagara-based wave effects in specific regions.
  • Oceanology Water Volume — Defines regions for buoyancy and underwater effects.

All Actors:

  • BP_OceanologyChronos — Time-of-day controller for dynamic lighting.
  • Oceanology Infinite Ocean — An infinite ocean water body with full wave simulation.
  • Oceanology Lake — A bounded lake water body.
  • Oceanology Light Source Controller — Controls light source behavior with water.
  • Oceanology Manager — The central controller for all Oceanology systems.
  • Oceanology Material to Struct Converter — Utility for converting material parameters.
  • Oceanology Preset Converter Actor — Converts presets between versions.
  • Oceanology Scrubber — Utility actor for timeline scrubbing.
  • Oceanology Water Depth Debugger — Visualizes water depth calculations.
  • Oceanology Water Interactor — Enables interaction effects with water.
  • Oceanology Water Niagara Waves Volume — Niagara wave effects volume.
  • Oceanology Water Surface Debugger — Visualizes wave calculations for debugging.
  • Oceanology Water Volume — Water physics volume.
  • Oceanology Wave Audio — Dynamic audio based on wave conditions.

For this guide, drag Oceanology Infinite Ocean into your scene along with the Oceanology Manager.

Oceanology actors in Quick Add menu

2. Access the Wave settings

Select OceanologyInfiniteOcean in the Outliner. In the Details panel, you will find the Waves category containing all wave-related settings.

Waves Category Overview:

SectionDescription
Start/Stop Wave SimulationButtons to control wave simulation in editor.
Wave Solver ClassThe wave solver component used for calculations. Default is OceanologyGerstnerWaveSolverComponent.
Gerstner WavesSpectral Gerstner parameters controlling wave shape and behavior.
Wave Buffer SystemMaterials and render targets for wave data capture.
Wave Buffer SettingsResolution, distance, and LOD configuration for wave buffers.
Wave Solver Update IntervalTime between wave solver updates. 0.0 = every frame.
Debug EnabledToggle debug visualization for wave calculations.
Shore WavesCoastal breaking wave parameters.

Use Start Wave Simulation to preview waves in the editor without entering Play mode.

OceanologyInfiniteOcean Waves settings


Configuring Spectral Gerstner Waves

The Spectral Gerstner system generates realistic ocean waves based on physical wind parameters and energy distribution.

3. Configure Spectral Gerstner parameters

Expand the Gerstner Waves category, then expand Spectral Gerstner to access the core wave generation parameters.

Spectral Gerstner Parameters:

ParameterDefaultDescription
BeaufortScale5.0Wind intensity on the Beaufort scale (0-12). Higher values create larger, more powerful waves. 5 = Fresh breeze with moderate waves.
DirectionalVariance30.0Angular spread of wave directions in degrees. Lower values create more uniform wave direction; higher values create more chaotic seas.
FoamThresholdHigh-0.525Upper threshold for foam generation. Waves exceeding this steepness produce foam.
FoamThresholdLow-0.2Lower threshold for foam generation. Controls where foam begins to appear.
MaxWaveHeight13.7Maximum wave height in Unreal units. Caps the tallest waves in the simulation.
MaxWaveLength13312.0Maximum wavelength in Unreal units. Controls the longest wave period.
MinWaveHeight0.25Minimum wave height. Ensures small ripples are always present.
MinWaveLength128.0Minimum wavelength. Controls the shortest wave detail.
SmallWaveThreshold0.25Threshold below which waves are considered small and may be filtered.
WaveComponentCount128.0Number of wave components in the spectral simulation. Higher = more detail, more GPU cost.
WaveEnergyDistribution1.0Energy distribution across wave frequencies. Affects how energy is spread between large and small waves.
WaveSpectrumResolution1.0Resolution multiplier for the wave spectrum calculation.
WindDirectionYellow vectorDirection the wind is blowing. Waves propagate in this direction.

Beaufort Scale Reference:

BeaufortWind SpeedSea StateDescription
0-10-5 km/hCalmMirror-like surface
2-36-19 km/hSmoothSmall wavelets
4-520-38 km/hModerateModerate waves, some foam
6-739-61 km/hRoughLarge waves, extensive foam
8-962-88 km/hVery RoughHigh waves, spray
10-1289+ km/hStormExceptionally high waves

Spectral Gerstner parameters


Wave Buffer System

The Wave Buffer System captures wave displacement data into render targets for efficient GPU-based sampling by materials and gameplay systems.

4. Understand the Wave Buffer System

Expand the Wave Buffer System category to view the material and render target configuration.

Material Section:

ParameterDefaultDescription
User Override Wave Buffer MaterialEnable to use a custom wave buffer material instead of the default.
Wave Buffer MaterialMI_SpectralGerstner_OceanThe material instance used for wave buffer rendering. Contains the spectral Gerstner shader logic.

Render Target Section: The system uses three render targets at different LOD distances for optimal performance:

ParameterDefaultDescription
RT Wave Data NearRT_WaveData_Near_8Render target for near-distance wave data. Highest detail for close-up waves.
RT Wave Data MediumRT_WaveData_Medium_8Render target for medium-distance wave data. Balanced detail and coverage.
RT Wave Data FarRT_WaveData_Far_8Render target for far-distance wave data. Covers distant ocean with lower detail.

Material Instance Dynamic:

ParameterDefaultDescription
Wave Buffer MIDWaveBufferMID_8Dynamic material instance used at runtime for wave buffer updates.

How It Works:

  1. The wave solver calculates wave displacement each frame.
  2. Results are rendered to the three LOD render targets.
  3. Materials and buoyancy systems sample these textures for displacement data.
  4. This approach offloads expensive wave math to a single GPU pass, enabling efficient reuse.

Wave Buffer System

5. Configure Wave Buffer Settings

Expand the Wave Buffer Settings category to control wave capture resolution and LOD distances.

Core Settings:

ParameterDefaultDescription
Use Wave BuffersMaster toggle for the wave buffer system. Disable for legacy wave sampling.
Use WavesMaster toggle for wave displacement. Disable for flat water.
Wave Capture Size32768.0World-space size of the wave capture area in Unreal units. Larger = more coverage, less detail per unit.
Wave Capture Disable Distance75000.0Distance from camera beyond which wave capture is disabled for performance.

Resolution Settings:

ParameterDefaultDescription
Wave Texture Resolution2048 x 2048Resolution of the wave buffer render targets. Higher = more detail, more VRAM.
Wave Texture FormatRTF RGBA16fPixel format for wave data. 16-bit float provides precision for displacement data.

LOD Toggles:

ParameterDefaultDescription
Wave Data Near EnabledEnable near-distance wave buffer for close-up detail.
Wave Data Medium EnabledEnable medium-distance wave buffer.
Wave Data Far EnabledEnable far-distance wave buffer for distant ocean.
Line Of Sight Trace ViewUse line-of-sight tracing to optimize wave buffer updates.

Update Settings:

ParameterDefaultDescription
Wave Solver Update Interval0.0Time between wave solver updates in seconds. 0.0 = update every frame.
Debug EnabledEnable debug visualization for wave buffers.

Performance Tuning:

  • Lower resolution (1024x1024) for better performance on mid-range GPUs.
  • Disable Far LOD if your camera never views distant ocean.
  • Increase Update Interval (0.016 = 60fps cap) to reduce GPU load.

Wave Buffer Settings


Shore Waves

Shore Waves simulate coastal breaking waves that transition from deep water to shallow shorelines.

6. Configure Shore Waves

Expand the Shore Waves category to access coastal wave parameters.

Shore Wave Parameters:

ParameterDefaultDescription
BaseWaveTransitionFactor300.0Distance over which waves transition from deep to shallow behavior. Higher = more gradual transition.
CoastalWavesEnable coastal breaking wave simulation. Requires shoreline depth data.
DirectionWaveSpeed250.0Speed at which waves move toward the shore in Unreal units/second.
GlobalNoiseScale20000.0Scale of the noise pattern applied to shore waves. Larger = broader noise patterns.
GlobalWaveScale0.25Overall scale multiplier for shore wave displacement.
SideBreakForce500.0Force applied to waves breaking at an angle to the shore. Creates realistic diagonal breakers.
WaveHeight1500.0Height of shore waves in Unreal units.
WaveLength4000.0Wavelength of shore waves. Shorter = more frequent waves hitting the beach.
WavePhaseSpeed1.0Speed multiplier for wave phase animation.
WaveSwayAmplitude2000.0Horizontal sway amplitude of breaking waves. Creates the characteristic curling motion.

Shore Wave Behavior:

  • Shore waves are layered on top of the base spectral Gerstner simulation.
  • They activate based on water depth, transitioning smoothly from deep water waves.
  • CoastalWaves enables advanced breaking behavior with foam and spray generation.
  • Requires proper landscape/depth setup for accurate shoreline detection.

Tuning Tips:

  • Increase WaveHeight for dramatic beach breaks.
  • Reduce WaveLength for more frequent wave sets.
  • Adjust BaseWaveTransitionFactor to control how far from shore the transition begins.
  • Enable CoastalWaves only when you have shoreline geometry configured.

Shore Waves settings

7. Preview the wave result

With the default Spectral Gerstner settings (Beaufort 5.0), the ocean displays realistic moderate waves with natural foam patterns on wave crests. The wind direction controls wave propagation, and the directional variance creates organic variation in wave angles.

Default Configuration Result:

  • Moderate wave heights suitable for general ocean scenes.
  • Natural foam distribution on wave crests and turbulent areas.
  • Realistic wave spacing and movement patterns.
  • Good balance between visual quality and performance.

This configuration works well for most gameplay scenarios and can be adjusted using the Beaufort scale for calmer or stormier conditions.

Wave simulation result


Wave Parameter Reference

Spectral Gerstner Parameters

ParameterRangeDefaultDescription
BeaufortScale0.012.05.0Wind intensity scale
DirectionalVariance0.0180.030.0Wave direction spread in degrees
MaxWaveHeight1.050.013.7Maximum wave height
MaxWaveLength1000.050000.013312.0Maximum wavelength
WaveComponentCount32.0512.0128.0Number of wave components

Wave Buffer Settings

ParameterRangeDefaultDescription
Wave Capture Size1000.0100000.032768.0Capture area size
Wave Texture Resolution51240962048Render target resolution
Wave Capture Disable Distance10000.0200000.075000.0LOD cutoff distance

Shore Wave Parameters

ParameterRangeDefaultDescription
WaveHeight100.05000.01500.0Shore wave height
WaveLength500.010000.04000.0Shore wavelength
WaveSwayAmplitude100.05000.02000.0Breaking wave sway

Preset Configurations

The following presets demonstrate common ocean conditions using the Beaufort scale:

ScenarioBeaufortDir. VarianceMax HeightWave LengthNotes
Calm Lake1.015.02.05000.0Mirror-like with subtle ripples
Light Breeze3.025.05.08000.0Gentle waves, minimal foam
Moderate Ocean5.030.013.713312.0Default balanced setting
Rough Seas7.040.025.018000.0Large waves, significant foam
Storm9.060.040.025000.0Extreme waves, heavy spray
Hurricane11.090.050.035000.0Maximum intensity

Interaction with Other Systems

SystemInteraction
BuoyancyPontoons sample wave buffer data for floating calculations. Higher waves = more dramatic vessel motion.
SwimmingWave motion affects swimming character stability and movement speed.
UnderwaterWave surface determines the underwater/above-water boundary and light penetration.
Niagara EffectsFoam, spray, and splash particles respond to wave steepness and foam thresholds.
AudioOcean audio intensity can be driven by Beaufort scale for dynamic soundscapes.
MaterialsWave buffers provide displacement data for shoreline blending and wetness effects.

Troubleshooting

ProblemLikely CauseSolution
Ocean appears flatUse Waves disabledEnable Use Waves in Wave Buffer Settings
No wave animationWave simulation not startedClick Start Wave Simulation or enter Play mode
Waves look blockyLow texture resolutionIncrease Wave Texture Resolution to 2048 or higher
Poor performanceHigh wave component countReduce WaveComponentCount to 64 or lower
Buoyancy not synced with visualsWave buffers disabledEnable Use Wave Buffers
Shore waves not appearingCoastalWaves disabled or no depth dataEnable CoastalWaves and verify landscape setup
Waves all same directionDirectionalVariance too lowIncrease DirectionalVariance for more variation
Foam not visibleFoam thresholds misconfiguredAdjust FoamThresholdHigh/Low values

Summary

In this guide, you learned how to:

  1. Add an Oceanology Infinite Ocean — Place the ocean actor and manager in your level.
  2. Access wave settings — Find the Waves category in the ocean actor's Details panel.
  3. Configure Spectral Gerstner — Adjust Beaufort scale, directional variance, and wave dimensions for desired sea state.
  4. Understand Wave Buffers — Learn how wave data is captured to render targets for efficient GPU sampling.
  5. Configure Wave Buffer Settings — Set resolution, capture size, and LOD distances for optimal performance.
  6. Configure Shore Waves — Set up coastal breaking waves with transition factors and sway amplitudes.
  7. Preview results — See the final wave simulation with realistic foam and motion.

With this knowledge, you can create any ocean condition from mirror-calm lakes to hurricane-force storms, all with physically-based wave behavior and optimized GPU performance.