Water waves and materials

This chapter covers wave assets, interactive ripples, surface materials, and how Quality Tier gates GPU features.

.waterwaves assets

Wave spectra live in Gems/Water/Assets/Waves/ (extension .waterwaves). Assign via the body’s Waves field. Empty = still water (detail normals / flow only).

PresetModeTypical use
Waves_CalmLakeGerstnerLakes
Waves_RiverRippleGerstnerRivers
Waves_OceanModerate / OceanStormGerstnerOpen sea
Waves_OceanSpectrumModerateSpectrum (JONSWAP ?FFT)High-quality ocean
Waves_GoldenCaptureGerstnerScreenshot / CI phase pin

Gerstner mode

Up to 16 components (Registry MaxGerstnerComponents can only lower the cap):

FieldMeaning
WavelengthMeters
AmplitudeMeters
DirectionDegrees relative to asset wind direction
SteepnessHorizontal sharpening q in [0, 1]
Phase OffsetRadians

Asset load validates steepness sum and quantizes angular frequencies so waterTime can wrap every 3600 s without phase pops.

Spectrum mode (FFT)

Analytic Phillips / JONSWAP parameters drive a GPU IFFT cascade (default sizes 512 / 64 / 8 m). Inspector fields:

FieldMeaning
Spectrum TypePhillips or JONSWAP
Wind SpeedU10, m/s
FetchJONSWAP fetch length, km
Directional Spreadcos^N exponent
Amplitude Scale / ChoppinessGlobal amplitude; horizontal FFT displacement
Min / Max WavelengthBand limits, m
SeedDeterministic realization seed

Buoyancy and CPU queries use a ?6-component Gerstner approximation sampled at load time (same WaveEvaluator API). Only one Spectrum ocean drives the FFT chain; additional Spectrum oceans fall back to the CPU approx for rendering displacement.

Registry (/O3DE/Gems/Water/Fft/):

KeyDefault
Enabledtrue
Resolution256 (tier may lower)
CascadeSizes[512, 64, 8]

Interactive ripples

When ripples and FFT are enabled, body-enter events inject particles into the finest FFT cascade slice. Registry /O3DE/Gems/Water/Ripples/:

KeyDefaultPurpose
EnabledtrueMaster gate
MaxParticles16Pool size
SpawnMinSpeed2.0Min enter speed, m/s
LifetimeSeconds3.0Particle lifetime
AmplitudeScale0.02Injection amplitude

Low tier / Gerstner-only paths disable ripple injection with the FFT chain.

Materials

Material type: Gems/Water/Assets/Materials/Types/WaterSurface.materialtype.

PresetLook
WaterSurface_StreamClearHigh transparency, shallow tint
WaterSurface_LakeGreenGreen absorption, deep cyan
WaterSurface_OceanDeepDeep blue absorption, foam-ready

Assign via the body’s material path (empty ?type default). User-facing groups include:

GroupExamples
ShadingShallow / Deep Color, Absorption, Roughness, detail normals
ReflectionMode (Planar / SSR / IBL), SSR distance / thickness / edge fade
RefractionStrength, depth fade
FoamTexture, shore foam depth, crest Jacobian threshold
FlowFlow map bind, U scale, max speed
UnderwaterFog color / density, waterline width / refraction, DoF focus
CausticsIntensity / scale (also gated by Registry + tier)

Reflection preference: planar (High tier) > SSR > IBL. Scene-color refraction uses a half-resolution copy by default (SceneColorCopyFullRes can force full res).

Quality tiers

/O3DE/Gems/Water/QualityTier: High / Medium / Low.

TierGerstner GPUOcean LODFFTCausticsPlanar reflection
High166256²onon
Medium85128²onoff
Low44offoffoff

CPU buoyancy always samples the full validated wave table; the tier only trims GPU upload. Related Registry gates: CausticsEnabled, PlanarReflectionEnabled, UnderwaterDoF/Enabled.

Rendering features (user view)

TransparentPass
    └── WaterParent
            ├── SceneColorCopy (refraction source)
            ├── WaterSurface (+ optional FFT / InfoMap / ripples)
            ├── PlanarReflection (High)
            └── Caustics (fullscreen additive)
  • WaterInfoMap: top-down still-water height / depth / flow for shore foam and underwater split fog.
  • Motion vectors: Gerstner prev-time displacement for TAA (DrawList motion).
  • Underwater: camera hysteresis (~0.05 m) + DeferredFog parameter override; half-immersed cameras can split fog per pixel when InfoMap is available.

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.