Class: WaterRenderer
Defined in: src/components/renderer/WaterRenderer.ts:53
Water surface: a grid on the owner's xz plane displaced by Gerstner waves and shaded by WaterMaterial (refraction, absorption, reflection, sun highlight).
Waves are up to eight Gerstner waves (waves) plus, for open water, a wind-driven sea simulated with FFTs (spectrum).
The surface is a rectangle (width by length) or any flat mesh in the owner's xz plane (surfaceGeometry), e.g. a round pond. The waves are evaluated in world space, so several water objects line up; getHeight returns the same surface on the CPU. The owner may be scaled and rotated about y; the surface stays horizontal and the waves keep their world directions.
Extends
Constructors
Constructor
new WaterRenderer():
WaterRenderer
Defined in: src/components/renderer/MeshRenderer.ts:26
Returns
WaterRenderer
Inherited from
Properties
object3D
object3D:
Object3D=null
Defined in: src/components/ComponentBase.ts:29
owner object3D
Inherited from
isDestroyed
isDestroyed:
boolean=false
Defined in: src/components/ComponentBase.ts:77
Inherited from
receiveShadow
receiveShadow:
boolean
Defined in: src/components/renderer/MeshRenderer.ts:23
Enabling this option allows the grid to display any shadows cast on the grid.
Inherited from
morphData
morphData:
MorphTargetData
Defined in: src/components/renderer/MeshRenderer.ts:24
Inherited from
instanceCount
instanceCount:
number=0
Defined in: src/components/renderer/RenderNode.ts:35
Inherited from
lodLevel
lodLevel:
number=0
Defined in: src/components/renderer/RenderNode.ts:36
Inherited from
alwaysRender
alwaysRender:
boolean=false
Defined in: src/components/renderer/RenderNode.ts:37
Inherited from
instanceID
instanceID:
string
Defined in: src/components/renderer/RenderNode.ts:38
Inherited from
drawType
drawType:
number=0
Defined in: src/components/renderer/RenderNode.ts:39
Inherited from
isRenderOrderChange?
optionalisRenderOrderChange?:boolean
Defined in: src/components/renderer/RenderNode.ts:55
Inherited from
MeshRenderer.isRenderOrderChange
needSortOnCameraZ?
optionalneedSortOnCameraZ?:boolean
Defined in: src/components/renderer/RenderNode.ts:56
Inherited from
MeshRenderer.needSortOnCameraZ
shadowCacheMode
shadowCacheMode:
"auto"|"static"|"dynamic"='auto'
Defined in: src/components/renderer/RenderNode.ts:446
Shadow cache classification.
'auto'(default): renderer is drawn to the shadow map every frame as part of the single-pass render — matches historical behaviour.'static': renderer is drawn only to the cached static depth layer, rebuilt lazily when the light moves or the scene explicitly marks the static cache dirty. Use for buildings, terrain, prop meshes that don't move.'dynamic': renderer is drawn every frame on top of the copied-in static layer. Use for characters, physics objects, anything that moves.
Only consulted when engine.setting.shadow.enableStaticCache === true; otherwise all renderers behave as 'auto'.
Inherited from
waves
waves:
GerstnerWave[]
Defined in: src/components/renderer/WaterRenderer.ts:55
Up to WATER_MAX_WAVES waves; edit in place or reassign.
timeScale
timeScale:
number=1
Defined in: src/components/renderer/WaterRenderer.ts:62
Wave animation speed; 0 freezes the surface.
caustics
caustics:
boolean=true
Defined in: src/components/renderer/WaterRenderer.ts:64
Sunlight caustics on everything under the surface (CausticsPass, setting.render.water).
causticsIntensity
causticsIntensity:
number=0.6
Defined in: src/components/renderer/WaterRenderer.ts:66
Strength of the caustics.
detailScale
detailScale:
number=1.8
Defined in: src/components/renderer/WaterRenderer.ts:72
Base wavelength in world units of the fine ripples on top of the waves. Too small to displace the mesh, they bend the surface normal per pixel and focus the sunlight into the caustics.
detailStrength
detailStrength:
number=0.35
Defined in: src/components/renderer/WaterRenderer.ts:78
How much the fine ripples bend the surface normal (0 to 1): 1 is the slope that focuses the caustics, which always use all of it; lower keeps the view through calm water clearer.
rippleSpeed
rippleSpeed:
number=1.2
Defined in: src/components/renderer/WaterRenderer.ts:80
Speed of the interactive ripples (addRipple) in world units per second.
rippleDamping
rippleDamping:
number=0.3
Defined in: src/components/renderer/WaterRenderer.ts:82
Fraction of the ripples' motion lost per second.
Accessors
visibleLayer
Get Signature
get visibleLayer():
number
Defined in: src/components/ComponentBase.ts:46
Composition-layer membership bitmask. The pass / camera / collector filters via
(component.visibleLayer & pass.layerMask & camera.cullingMask) !== 0
Defaults to VisibleLayer.Default (bit 0) so a fresh subclass is visible to passes whose layerMask is VisibleLayer.All (which includes bit 0). Application code can assign project-specific bits (1..31) to organise the scene into composition layers.
Returns
number
Set Signature
set visibleLayer(
value):void
Defined in: src/components/ComponentBase.ts:50
Parameters
value
number
Returns
void
Inherited from
eventDispatcher
Get Signature
get eventDispatcher():
CEventDispatcher
Defined in: src/components/ComponentBase.ts:63
Returns
Set Signature
set eventDispatcher(
value):void
Defined in: src/components/ComponentBase.ts:68
Parameters
value
Returns
void
Inherited from
isStart
Get Signature
get isStart():
boolean
Defined in: src/components/ComponentBase.ts:79
Returns
boolean
Inherited from
transform
Get Signature
get transform():
Transform
Defined in: src/components/ComponentBase.ts:89
Return the Transform component attached to the Object3D. Null before the component is attached — addComponent assigns object3D only after construction — so constructor-time callers can probe safely via this.transform?..
Returns
Inherited from
enable
Get Signature
get enable():
boolean
Defined in: src/components/ComponentBase.ts:113
Enable/disable components. The enabled components can be updated, while the disabled components cannot be updated.
Returns
boolean
Set Signature
set enable(
value):void
Defined in: src/components/ComponentBase.ts:96
Enable/disable components. The enabled components can be updated, while the disabled components cannot be updated.
Parameters
value
boolean
Returns
void
Inherited from
geometry
Get Signature
get geometry():
GeometryBase
Defined in: src/components/renderer/MeshRenderer.ts:53
The geometry of the mesh determines its shape
Returns
Set Signature
set geometry(
value):void
Defined in: src/components/renderer/MeshRenderer.ts:57
Parameters
value
Returns
void
Inherited from
material
Get Signature
get material():
Material
Defined in: src/components/renderer/MeshRenderer.ts:99
material
Returns
Set Signature
set material(
value):void
Defined in: src/components/renderer/MeshRenderer.ts:103
Parameters
value
Returns
void
Inherited from
batchMode
Get Signature
get batchMode():
BatchMode
Defined in: src/components/renderer/RenderNode.ts:118
Returns
Set Signature
set batchMode(
value):void
Defined in: src/components/renderer/RenderNode.ts:122
Parameters
value
Returns
void
Inherited from
rendererMask
Get Signature
get rendererMask():
number
Defined in: src/components/renderer/RenderNode.ts:156
Returns
number
Set Signature
set rendererMask(
value):void
Defined in: src/components/renderer/RenderNode.ts:160
Parameters
value
number
Returns
void
Inherited from
renderOrder
Get Signature
get renderOrder():
number
Defined in: src/components/renderer/RenderNode.ts:164
Returns
number
Set Signature
set renderOrder(
value):void
Defined in: src/components/renderer/RenderNode.ts:168
Parameters
value
number
Returns
void
Inherited from
materials
Get Signature
get materials():
Material[]
Defined in: src/components/renderer/RenderNode.ts:177
Returns
Material[]
Set Signature
set materials(
value):void
Defined in: src/components/renderer/RenderNode.ts:181
Parameters
value
Material[]
Returns
void
Inherited from
castShadow
Get Signature
get castShadow():
boolean
Defined in: src/components/renderer/RenderNode.ts:422
Returns
boolean
Set Signature
set castShadow(
value):void
Defined in: src/components/renderer/RenderNode.ts:426
Parameters
value
boolean
Returns
void
Inherited from
castGI
Get Signature
get castGI():
boolean
Defined in: src/components/renderer/RenderNode.ts:449
Returns
boolean
Set Signature
set castGI(
value):void
Defined in: src/components/renderer/RenderNode.ts:453
Parameters
value
boolean
Returns
void
Inherited from
castReflection
Get Signature
get castReflection():
boolean
Defined in: src/components/renderer/RenderNode.ts:457
Returns
boolean
Set Signature
set castReflection(
value):void
Defined in: src/components/renderer/RenderNode.ts:461
Parameters
value
boolean
Returns
void
Inherited from
waterMaterial
Get Signature
get waterMaterial():
WaterMaterial
Defined in: src/components/renderer/WaterRenderer.ts:126
Surface material, for shading parameters.
Returns
width
Get Signature
get width():
number
Defined in: src/components/renderer/WaterRenderer.ts:131
Size of the default rectangle along local x; the owner's scale applies.
Returns
number
Set Signature
set width(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:134
Parameters
value
number
Returns
void
length
Get Signature
get length():
number
Defined in: src/components/renderer/WaterRenderer.ts:141
Size of the default rectangle along local z; the owner's scale applies.
Returns
number
Set Signature
set length(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:144
Parameters
value
number
Returns
void
resolution
Get Signature
get resolution():
number
Defined in: src/components/renderer/WaterRenderer.ts:151
Grid segments of the default rectangle along its longer side; the waves need a few vertices per shortest wavelength.
Returns
number
Set Signature
set resolution(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:154
Parameters
value
number
Returns
void
surfaceGeometry
Get Signature
get surfaceGeometry():
GeometryBase
Defined in: src/components/renderer/WaterRenderer.ts:165
Custom surface mesh: flat, in the owner's local xz plane (its y is ignored), indexed, and fine enough for the waves. The water, underwater view and caustics all follow its outline. Null restores the rectangle.
Returns
Set Signature
set surfaceGeometry(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:168
Parameters
value
Returns
void
waveFadeDistance
Get Signature
get waveFadeDistance():
number
Defined in: src/components/renderer/WaterRenderer.ts:187
Distance from the camera, in wavelengths, at which each wave has faded out of the surface (from half of it on), so waves too short for the mesh or the screen there do not alias. The default suits an even mesh; lower it for a mesh that coarsens with distance. 0 keeps every wave at any distance. Visual only: getHeight keeps every wave.
Returns
number
Set Signature
set waveFadeDistance(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:190
Parameters
value
number
Returns
void
rippleResolution
Get Signature
get rippleResolution():
number
Defined in: src/components/renderer/WaterRenderer.ts:196
Ripple grid cells along the longer side of the water; changing it clears the ripples.
Returns
number
Set Signature
set rippleResolution(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:199
Parameters
value
number
Returns
void
rippleArea
Get Signature
get rippleArea():
number
Defined in: src/components/renderer/WaterRenderer.ts:210
Side, in local units, of the square around the water's origin where ripples are simulated, all of it taken as water; null covers the whole surface. For water too large for one grid to resolve ripples, such as an ocean. Changing it clears the ripples.
Returns
number
Set Signature
set rippleArea(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:213
Parameters
value
number
Returns
void
spectrum
Get Signature
get spectrum():
WaterSpectrum
Defined in: src/components/renderer/WaterRenderer.ts:250
FFT ocean waves added to the Gerstner waves, from wind over open water; null for none. Needs setting.render.water.
Returns
Set Signature
set spectrum(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:253
Parameters
value
Returns
void
time
Get Signature
get time():
number
Defined in: src/components/renderer/WaterRenderer.ts:317
Wave phase time in seconds.
Returns
number
Set Signature
set time(
value):void
Defined in: src/components/renderer/WaterRenderer.ts:320
Parameters
value
number
Returns
void
Methods
start()
start():
void
Defined in: src/components/ComponentBase.ts:162
Returns
void
Inherited from
stop()
stop():
void
Defined in: src/components/ComponentBase.ts:163
Returns
void
Inherited from
onLateUpdate()?
optionalonLateUpdate(view?):any
Defined in: src/components/ComponentBase.ts:167
Parameters
view?
Returns
any
Inherited from
onBeforeUpdate()?
optionalonBeforeUpdate(view?):any
Defined in: src/components/ComponentBase.ts:168
Parameters
view?
Returns
any
Inherited from
onGraphic()?
optionalonGraphic(view?):any
Defined in: src/components/ComponentBase.ts:170
Parameters
view?
Returns
any
Inherited from
onParentChange()?
optionalonParentChange(lastParent?,currentParent?):any
Defined in: src/components/ComponentBase.ts:171
Parameters
lastParent?
currentParent?
Returns
any
Inherited from
onAddChild()?
optionalonAddChild(child):any
Defined in: src/components/ComponentBase.ts:172
Parameters
child
Returns
any
Inherited from
onRemoveChild()?
optionalonRemoveChild(child):any
Defined in: src/components/ComponentBase.ts:173
Parameters
child
Returns
any
Inherited from
onEnable()
onEnable():
void
Defined in: src/components/renderer/MeshRenderer.ts:30
Returns
void
Inherited from
onDisable()
onDisable():
void
Defined in: src/components/renderer/MeshRenderer.ts:34
Returns
void
Inherited from
cloneTo()
cloneTo(
obj):void
Defined in: src/components/renderer/MeshRenderer.ts:38
clone component data to target object3D
Parameters
obj
target object3D
Returns
void
Inherited from
copyComponent()
copyComponent(
from):this
Defined in: src/components/renderer/MeshRenderer.ts:43
Parameters
from
this
Returns
this
Inherited from
setMorphInfluence()
setMorphInfluence(
key,value):void
Defined in: src/components/renderer/MeshRenderer.ts:110
Set deformation animation parameters
Parameters
key
string
value
number
Returns
void
Inherited from
MeshRenderer.setMorphInfluence
setMorphInfluenceIndex()
setMorphInfluenceIndex(
index,value):void
Defined in: src/components/renderer/MeshRenderer.ts:119
Parameters
index
number
value
number
Returns
void
Inherited from
MeshRenderer.setMorphInfluenceIndex
onCompute()
onCompute(
view,command):void
Defined in: src/components/renderer/MeshRenderer.ts:128
Parameters
view
command
GPUCommandEncoder
Returns
void
Inherited from
attachSceneOctree()
attachSceneOctree(
octree):void
Defined in: src/components/renderer/RenderNode.ts:87
Parameters
octree
Returns
void
Inherited from
MeshRenderer.attachSceneOctree
detachSceneOctree()
detachSceneOctree():
void
Defined in: src/components/renderer/RenderNode.ts:92
Returns
void
Inherited from
MeshRenderer.detachSceneOctree
addMask()
addMask(
mask):void
Defined in: src/components/renderer/RenderNode.ts:144
Parameters
mask
Returns
void
Inherited from
removeMask()
removeMask(
mask):void
Defined in: src/components/renderer/RenderNode.ts:148
Parameters
mask
Returns
void
Inherited from
hasMask()
hasMask(
mask):boolean
Defined in: src/components/renderer/RenderNode.ts:152
Parameters
mask
Returns
boolean
Inherited from
addRendererMask()
addRendererMask(
tag):void
Defined in: src/components/renderer/RenderNode.ts:232
Parameters
tag
Returns
void
Inherited from
removeRendererMask()
removeRendererMask(
tag):void
Defined in: src/components/renderer/RenderNode.ts:236
Parameters
tag
Returns
void
Inherited from
MeshRenderer.removeRendererMask
refreshRenderClassification()
refreshRenderClassification():
void
Defined in: src/components/renderer/RenderNode.ts:270
Recompute renderOrder from current pass states and re-bucket this renderer in EntityCollect (opaque vs transparent map).
Called when a material's alphaMode flips at runtime — the pass.renderOrder changes (3000 ↔ 0), but EntityCollect classifies once at addRenderNode time. Without this nudge the renderer stays in its old list and gets drawn through the wrong pipeline (e.g. WBOIT continues drawing a HASH-toggled material).
Materials hop into this via Reference.getReference(material) to find every renderer holding them; sample code can also call it directly after manual state changes.
Returns
void
Inherited from
MeshRenderer.refreshRenderClassification
selfCloneMaterials()
selfCloneMaterials(
key):this
Defined in: src/components/renderer/RenderNode.ts:295
Parameters
key
string
Returns
this
Inherited from
MeshRenderer.selfCloneMaterials
renderPass()
renderPass(
view,passType,renderContext):void
Defined in: src/components/renderer/RenderNode.ts:465
Parameters
view
passType
PassType
renderContext
Returns
void
Inherited from
renderPass2()
renderPass2(
view,passType,rendererPassState,clusterLightingBuffer,encoder,useBundle?):void
Defined in: src/components/renderer/RenderNode.ts:537
render pass at passType
Parameters
view
passType
PassType
rendererPassState
RendererPassState
clusterLightingBuffer
encoder
GPURenderPassEncoder
useBundle?
boolean = false
Returns
void
Inherited from
recordRenderPass2()
recordRenderPass2(
view,passType,rendererPassState,clusterLightingBuffer,encoder,useBundle?):void
Defined in: src/components/renderer/RenderNode.ts:595
Parameters
view
passType
PassType
rendererPassState
RendererPassState
clusterLightingBuffer
encoder
GPURenderPassEncoder
useBundle?
boolean = false
Returns
void
Inherited from
MeshRenderer.recordRenderPass2
preInit()
preInit(
_rendererType):boolean
Defined in: src/components/renderer/RenderNode.ts:633
Parameters
_rendererType
PassType
Returns
boolean
Inherited from
beforeDestroy()
beforeDestroy(
force?):void
Defined in: src/components/renderer/RenderNode.ts:750
before release this component, object refrences are not be set null now.
Parameters
force?
boolean
Returns
void
Inherited from
init()
init(
param?):void
Defined in: src/components/renderer/WaterRenderer.ts:110
Parameters
param?
any
Returns
void
Overrides
addRipple()
addRipple(
x,z,strength?,radius?):void
Defined in: src/components/renderer/WaterRenderer.ts:235
Starts a ripple at world (x, z): the surface there is pushed down, as by something striking it, and a ring spreads out, reflecting off the edge of the water. Pointer input and objects entering or moving through the water all start ripples this way. Points off the water are ignored; at most WATER_MAX_RIPPLES_PER_FRAME start per frame. Needs setting.render.water.
Parameters
x
number
z
number
strength?
number = 0.05
depth of the crater at its center, in world units
radius?
number = 0.2
radius of the pushed area, in world units
Returns
void
onUpdate()
onUpdate(
view?):void
Defined in: src/components/renderer/WaterRenderer.ts:324
Parameters
view?
Returns
void
Overrides
isUnderwater()
isUnderwater(
point):boolean
Defined in: src/components/renderer/WaterRenderer.ts:337
True when the point is inside the water's xz footprint and below the surface.
Parameters
point
Returns
boolean
containsXZ()
containsXZ(
x,z,margin?):boolean
Defined in: src/components/renderer/WaterRenderer.ts:346
True when world (x, z) lies inside the water's footprint.
Parameters
x
number
z
number
margin?
number = 0
grows the footprint by this many world units on each side
Returns
boolean
getHeight()
getHeight(
x,z):number
Defined in: src/components/renderer/WaterRenderer.ts:400
World-space height of the surface above (x, z) at the current time. Gerstner waves also move points sideways, so the undisplaced position whose displaced xz lands on (x, z) is found by fixed-point iteration. The FFT waves (spectrum) are computed on the GPU: asking for a point queues it, and their part of the height comes from the nearest point asked for in an earlier frame, a frame or two old (none until then). Ask every frame for points that move.
Parameters
x
number
z
number
Returns
number
destroy()
destroy(
force?):void
Defined in: src/components/renderer/WaterRenderer.ts:463
Parameters
force?
boolean
Returns
void

