Active wave spectrum — the OceanFeature reads this to drive the anim-waves compute pass each frame.
Active ocean rest-plane Y — the CPU surface sampler reads this.
Active look settings — the underwater pass derives its fog colour / density / caustics params from these.
Caustics texture view — shared with the underwater pass so underwater caustics use the identical pattern.
StaticcreateAnalytical seafloor Y (constant, world units). The fragment shader combines this with the rendered scene depth so depth fog reaches true deep-water blue out at the horizon even when no terrain is below the ocean.
Toggle the wireframe overlay over the surface — shows the LOD chunk tessellation (grid + diagonals) so you can see how the Interior + Rings + CDLOD morph fit together.
Seabed depth-cache region the fragment's shallow scatter colour
samples. size <= 0 disables (hybrid scene-depth fallback).
Directional CSM cascades (cascade mode, ≤ 4) — soft term darkens the
scatter/SSS by strength, hard term gates sun specular, caustics and
foam sun-diffuse. Pass null to disable shadow sampling.
Atmosphere hookups: skyViewEnabled switches the reflection fallback
to the sky-view LUT; aerialMaxDist > 0 switches the distance haze
to the aerial froxel volume (pass the SAME maxDist the volume was
marched with — see DeferredLightingPass's aerial params).
Procedural horizontal flow (a uniform current plus up to
OCEAN_MAX_FLOW_VORTICES vortices). Flow advects the surface
detail (normal-map UVs) so the water visibly streams — a river current
or a whirlpool's swirl. Pass null to disable.
Raise/lower the water surface in bounded circular regions — a mountain
lake above the base sea, a lowered pond. Up to
OCEAN_MAX_SEA_LEVEL_REGIONS. Pass [] to clear.
Raise the water surface along capsule strips whose offset lerps end to
end — chain them (sharing endpoints) to step a river's surface
downhill. Up to OCEAN_MAX_SEA_LEVEL_SEGMENTS. Pass [] to
clear.
CPU mirror of the shader's seaLevelOffset() — the sea-level region +
segment offset (m) at a world XZ. Used for the local water level under
the camera (altitude LOD zoom, underwater culling) and for gameplay
water queries (a swimming character on a river).
Conservative per-frame displacement bounds (world m) — expand the
culling AABBs so choppy/displaced water isn't culled while its
geometry still reaches into the view (Crest's
ExpandBoundsForDisplacements). The host feature estimates these
from the active wave sources each frame.
Bound the water body with clip-surface regions (Crest's clip surface):
'keep' discs show water only inside them (a finite water body),
'cut' discs punch holes (a hull cutout). Up to
OCEAN_MAX_CLIP_REGIONS. Pass [] to clear.
Wire a reflection-probe cube view into the surface fragment's
reflection sample. Pass null to fall back to the sky panorama.
The view must have dimension: 'cube' — the caller is responsible
for slicing a cube-array down to a single cube before passing it
in.
Per-frame ocean state. Layout matches OceanUniforms in
ocean_surface.wgsl. The OceanLodTransform drives per-chunk
scale/center so the cascade tiles match the wave-buffer slices.
Insert the pass into graph for one frame. Implementations call
graph.addPass(name, type, b => { ... }) exactly once and use the
supplied PassBuilder to declare reads, writes, transient
resources, and the execute callback.
Graph being built this frame.
Pass-specific dependency record (handles, scene data, etc.).
Pass-specific output record (typically a set of handles downstream passes will consume).
Release every long-lived GPU resource owned by the pass (pipelines, persistent uniform buffers, samplers, BGLs). Called by the factory or application during teardown. Default implementation is a no-op.
Human-readable identifier used in graph node labels and error messages.