Water authoring

This chapter covers placing and tuning water bodies in the Editor: shared settings, River / Lake / Ocean field tables, bake buttons, Dry Volume, and River Network.

Placement entry points

EntryNotes
Add Component ?WaterWater Body River / Lake / Ocean, plus Buoyancy, Dry Volume, Surface Attachment, River Network
Create Entity ?WaterSpawns entity with default spline / shape + editor body component
PrefabsGems/Water/Assets/Prefabs/Water/River_Default, Lake_Default, Ocean_Default

Editor components mirror runtime components and share mesh generation, so the viewport preview matches play mode.

Shared Water Body Settings

Every body exposes WaterBodyCommonConfig:

FieldDefaultPurpose
Wavesempty.waterwaves asset; empty = still water
Waves Preview?Height-field thumbnail at t = 0
Max Depth10 mAbsorption shading + buoyancy saturation
Flow Speed Scale1.0Multiplies authored flow
Affects PhysicstrueRegister with buoyancy system
Emits Surface TagstruePublish water / underwater / riverbank
Query Prioritytype defaultOverlap arbitration (higher wins)
Blend Band0 mSoft cross-body blend at boundary
Affected By Global TidetrueApply system tide offset

Default priorities: River family 160, Lake 128, Ocean 64. Material path empty ?type default material. Wave / material details: Waves and materials.


River (Stream / River / GreatRiver)

Create

  1. Create Entity ?Water ?River (Catmull-Rom spline with four default points + editor river component).
  2. Set Preset ?resets Width / Depth / Flow Speed curve defaults (you can override per point afterward).
  3. Enter spline edit mode; drag / insert control points along the channel.
  4. Select a spline point to edit that point’s Width / Depth / Flow Speed, or use the width-disk ComponentMode manipulator.

Preset defaults

PresetHalf-widthDepthFlowWaves / physics
Stream~1 m~0.3 m~1.5 m/sStill; physics off by convention
River~8 m~2 m~1.0 m/sOptional; physics on
GreatRiver~120 m~8 m~0.6 m/sSmall Gerstner; physics on

River Settings

FieldPurpose
PresetStream / River / GreatRiver defaults
Width / Depth / Flow Speed CurvePer-spline-point half-width, bed depth, flow (m, m, m/s)
Bank FalloffShore foam / transparency falloff width (m)
Segment LengthStrip mesh longitudinal segment target (m)
Flow MapBaked product path (read-only; use Bake Flow Map)
Mouth Fade LengthEstuary fade from spline end (m); 0 = off
Flow ObstaclesCircular stamps (arc position, lateral offset, radius, strength) that deflect flow
Wave DirectionAsset Wind / Perpendicular To Flow / Blend
Bed ProfileParabolic / Trapezoid / Power Curve lateral depth shape
Bed Flat FractionTrapezoid only: fraction of half-width at full depth
Bed Power ExponentPower Curve only: exponent e in `depth*(1-
Elevation ModeSpline Z (default) or Terrain Snap
Terrain Sink OffsetTerrainSnap: surface sits this far below sampled terrain (m)

Spline Z uphill segments (downstream Z higher than upstream) show a red viewport warning. Saving is allowed (falls / cascades).

Editor groups and buttons

Group / buttonAction
Bake Flow MapWrites Assets/WaterBakes/FlowMap_<entityId>_lutrgba8.png and binds it for dual-phase normal scroll
Clear Flow MapRemoves the bake binding
Align To Adjacent SegmentsSnaps end vertices / Width / Depth / Flow Speed to the nearest other river endpoint within Match Distance
Generate Audio EmittersSpawns Audio Trigger child entities along the spline (repeat clears previous; single undo)
Carve Terrain / Update Carve / Remove CarvePolyTerrain V-ditch or flat bed (edit-time only; single max width/depth profile for the whole spline)
Show Flow Arrows / Show Depth HeatmapViewport helpers

Long rivers over PrebakeArcLengthThreshold (default 512 m) get AssetProcessor 3-LOD mesh products for faster activate.


Lake

Create

  1. Create Entity ?Water ?Lake (closed Catmull-Rom, ~8-point circle by default).
  2. Drag points along the basin contour (XY projection; water level is entity Z + offset).
  3. Click Snap To Terrain Lowest, then raise Water Level Offset for depth.
  4. Optional: Trace Shoreline (marching-squares contour ?simplified spline vertices in one undo).

Needs a closed spline or PolygonPrismShape on the same entity.

Lake Settings

FieldPurpose
Water Level OffsetLevel relative to entity Z (m)
Uniform DepthDepth when no terrain depth is available (m)
Shoreline FalloffFoam / transparency falloff (m)
Mesh Cell SizeFill mesh cell size (m)
Excluded RegionsClosed-spline or polygon entities carved as islands
Exclusion Fade BandSoft query fade near island edges before hard miss (0 = hard edge)
Far LOD Area ThresholdBoundary area (km²) above which deep interior uses CDLOD far patches; ?0 disables
Far LOD Shore BandDetailed fill band width from shoreline once far LOD is active (m)
Far LOD Shore ClipDiscard far-patch pixels past the shoreline using a coarse shore-distance grid

Ocean

Create

  1. Create Entity ?Water ?Ocean. Entity XY is not critical for rendering (camera-centered grid); Sea Level is absolute double-precision world Z.
  2. Assign a non-empty wave asset before activate (validation error otherwise).
  3. At most one unbounded ocean (empty Region Entities). Additional oceans need Region Entities (closed spline / polygon union).
  4. For World Streaming: add WorldStreamingMemberComponent, keep AlwaysLoaded.

Ocean Settings

FieldPurpose
Sea LevelAbsolute world Z (m)
Grid ExtentCamera-centered coverage radius (default 8192 m)
LOD LevelsCDLOD subdivision levels (default 6; quality tier may lower)
Shore Fade DistanceWave amplitude fade band from shoreline (m)
Shore Bake ExtentBake footprint edge length around the entity (m)
Shore Bake ResolutionBake grid texels per side
Region EntitiesFinite-domain rings; empty = infinite

Shore Distance bake

ButtonAction
Bake Shore DistanceSigned chamfer shore grid serialized onto the component (m_shoreGrid); drives foam + amplitude fade
Clear ShoreClears the baked grid

Without a bake, runtime falls back to a coarse terrain-derived estimate when terrain is present.


Dry Volume

Water Dry Volume places an oriented box that excludes surface queries (cabins, glass tunnels, underwater rooms). Camera underwater checks, buoyancy, and gameplay all honor the exclusion.

FieldPurpose
DimensionsFull box size in entity-local units (a sibling Box Shape overrides these)

River Network

Water River Network holds a confluence graph for tributaries:

FieldPurpose
River SegmentsParticipating river entity IDs
JunctionsUpstream river + Downstream river + Blend Fade Length

Each junction treats the upstream spline end as merging into the downstream course; blend fade recovers waves/flow beyond the solved disc. Editor Align Network can help sync endpoint parameters. Sample: AutomatedTesting/Levels/WaterSamples/RiverNetwork.


Baking summary

BakeWhereOutput
Flow mapRiver Bake Flow MapPNG under Assets/WaterBakes/ + config path
Shore distanceOcean Bake Shore DistanceSerialized m_shoreGrid on the ocean
Long river meshAssetProcessor (PrebakeArcLengthThreshold 512 m)3-LOD model products

After changing Flow Obstacles, re-bake the flow map so GPU scrolling matches CPU analytic deflection.

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.