Skip to content

@orillusion/core


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 ​

MeshRenderer.constructor

Properties ​

object3D ​

object3D: Object3D = null

Defined in: src/components/ComponentBase.ts:29

owner object3D

Inherited from ​

MeshRenderer.object3D


isDestroyed ​

isDestroyed: boolean = false

Defined in: src/components/ComponentBase.ts:77

Inherited from ​

MeshRenderer.isDestroyed


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 ​

MeshRenderer.receiveShadow


morphData ​

morphData: MorphTargetData

Defined in: src/components/renderer/MeshRenderer.ts:24

Inherited from ​

MeshRenderer.morphData


instanceCount ​

instanceCount: number = 0

Defined in: src/components/renderer/RenderNode.ts:35

Inherited from ​

MeshRenderer.instanceCount


lodLevel ​

lodLevel: number = 0

Defined in: src/components/renderer/RenderNode.ts:36

Inherited from ​

MeshRenderer.lodLevel


alwaysRender ​

alwaysRender: boolean = false

Defined in: src/components/renderer/RenderNode.ts:37

Inherited from ​

MeshRenderer.alwaysRender


instanceID ​

instanceID: string

Defined in: src/components/renderer/RenderNode.ts:38

Inherited from ​

MeshRenderer.instanceID


drawType ​

drawType: number = 0

Defined in: src/components/renderer/RenderNode.ts:39

Inherited from ​

MeshRenderer.drawType


isRenderOrderChange? ​

optional isRenderOrderChange?: boolean

Defined in: src/components/renderer/RenderNode.ts:55

Inherited from ​

MeshRenderer.isRenderOrderChange


needSortOnCameraZ? ​

optional needSortOnCameraZ?: 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 ​

MeshRenderer.shadowCacheMode


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 ​

MeshRenderer.visibleLayer


eventDispatcher ​

Get Signature ​

get eventDispatcher(): CEventDispatcher

Defined in: src/components/ComponentBase.ts:63

Returns ​

CEventDispatcher

Set Signature ​

set eventDispatcher(value): void

Defined in: src/components/ComponentBase.ts:68

Parameters ​
value ​

CEventDispatcher

Returns ​

void

Inherited from ​

MeshRenderer.eventDispatcher


isStart ​

Get Signature ​

get isStart(): boolean

Defined in: src/components/ComponentBase.ts:79

Returns ​

boolean

Inherited from ​

MeshRenderer.isStart


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 ​

Transform

Inherited from ​

MeshRenderer.transform


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 ​

MeshRenderer.enable


geometry ​

Get Signature ​

get geometry(): GeometryBase

Defined in: src/components/renderer/MeshRenderer.ts:53

The geometry of the mesh determines its shape

Returns ​

GeometryBase

Set Signature ​

set geometry(value): void

Defined in: src/components/renderer/MeshRenderer.ts:57

Parameters ​
value ​

GeometryBase

Returns ​

void

Inherited from ​

MeshRenderer.geometry


material ​

Get Signature ​

get material(): Material

Defined in: src/components/renderer/MeshRenderer.ts:99

material

Returns ​

Material

Set Signature ​

set material(value): void

Defined in: src/components/renderer/MeshRenderer.ts:103

Parameters ​
value ​

Material

Returns ​

void

Inherited from ​

MeshRenderer.material


batchMode ​

Get Signature ​

get batchMode(): BatchMode

Defined in: src/components/renderer/RenderNode.ts:118

Returns ​

BatchMode

Set Signature ​

set batchMode(value): void

Defined in: src/components/renderer/RenderNode.ts:122

Parameters ​
value ​

BatchMode

Returns ​

void

Inherited from ​

MeshRenderer.batchMode


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 ​

MeshRenderer.rendererMask


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 ​

MeshRenderer.renderOrder


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 ​

MeshRenderer.materials


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 ​

MeshRenderer.castShadow


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 ​

MeshRenderer.castGI


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 ​

MeshRenderer.castReflection


waterMaterial ​

Get Signature ​

get waterMaterial(): WaterMaterial

Defined in: src/components/renderer/WaterRenderer.ts:126

Surface material, for shading parameters.

Returns ​

WaterMaterial


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 ​

GeometryBase

Set Signature ​

set surfaceGeometry(value): void

Defined in: src/components/renderer/WaterRenderer.ts:168

Parameters ​
value ​

GeometryBase

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 ​

WaterSpectrum

Set Signature ​

set spectrum(value): void

Defined in: src/components/renderer/WaterRenderer.ts:253

Parameters ​
value ​

WaterSpectrum

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 ​

MeshRenderer.start


stop() ​

stop(): void

Defined in: src/components/ComponentBase.ts:163

Returns ​

void

Inherited from ​

MeshRenderer.stop


onLateUpdate()? ​

optional onLateUpdate(view?): any

Defined in: src/components/ComponentBase.ts:167

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

MeshRenderer.onLateUpdate


onBeforeUpdate()? ​

optional onBeforeUpdate(view?): any

Defined in: src/components/ComponentBase.ts:168

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

MeshRenderer.onBeforeUpdate


onGraphic()? ​

optional onGraphic(view?): any

Defined in: src/components/ComponentBase.ts:170

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

MeshRenderer.onGraphic


onParentChange()? ​

optional onParentChange(lastParent?, currentParent?): any

Defined in: src/components/ComponentBase.ts:171

Parameters ​

lastParent? ​

Object3D

currentParent? ​

Object3D

Returns ​

any

Inherited from ​

MeshRenderer.onParentChange


onAddChild()? ​

optional onAddChild(child): any

Defined in: src/components/ComponentBase.ts:172

Parameters ​

child ​

Object3D

Returns ​

any

Inherited from ​

MeshRenderer.onAddChild


onRemoveChild()? ​

optional onRemoveChild(child): any

Defined in: src/components/ComponentBase.ts:173

Parameters ​

child ​

Object3D

Returns ​

any

Inherited from ​

MeshRenderer.onRemoveChild


onEnable() ​

onEnable(): void

Defined in: src/components/renderer/MeshRenderer.ts:30

Returns ​

void

Inherited from ​

MeshRenderer.onEnable


onDisable() ​

onDisable(): void

Defined in: src/components/renderer/MeshRenderer.ts:34

Returns ​

void

Inherited from ​

MeshRenderer.onDisable


cloneTo() ​

cloneTo(obj): void

Defined in: src/components/renderer/MeshRenderer.ts:38

clone component data to target object3D

Parameters ​

obj ​

Object3D

target object3D

Returns ​

void

Inherited from ​

MeshRenderer.cloneTo


copyComponent() ​

copyComponent(from): this

Defined in: src/components/renderer/MeshRenderer.ts:43

Parameters ​

from ​

this

Returns ​

this

Inherited from ​

MeshRenderer.copyComponent


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 ​

View3D

command ​

GPUCommandEncoder

Returns ​

void

Inherited from ​

MeshRenderer.onCompute


attachSceneOctree() ​

attachSceneOctree(octree): void

Defined in: src/components/renderer/RenderNode.ts:87

Parameters ​

octree ​

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 ​

RendererMask

Returns ​

void

Inherited from ​

MeshRenderer.addMask


removeMask() ​

removeMask(mask): void

Defined in: src/components/renderer/RenderNode.ts:148

Parameters ​

mask ​

RendererMask

Returns ​

void

Inherited from ​

MeshRenderer.removeMask


hasMask() ​

hasMask(mask): boolean

Defined in: src/components/renderer/RenderNode.ts:152

Parameters ​

mask ​

RendererMask

Returns ​

boolean

Inherited from ​

MeshRenderer.hasMask


addRendererMask() ​

addRendererMask(tag): void

Defined in: src/components/renderer/RenderNode.ts:232

Parameters ​

tag ​

RendererMask

Returns ​

void

Inherited from ​

MeshRenderer.addRendererMask


removeRendererMask() ​

removeRendererMask(tag): void

Defined in: src/components/renderer/RenderNode.ts:236

Parameters ​

tag ​

RendererMask

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 ​

View3D

passType ​

PassType

renderContext ​

RenderContext

Returns ​

void

Inherited from ​

MeshRenderer.renderPass


renderPass2() ​

renderPass2(view, passType, rendererPassState, clusterLightingBuffer, encoder, useBundle?): void

Defined in: src/components/renderer/RenderNode.ts:537

render pass at passType

Parameters ​

view ​

View3D

passType ​

PassType

rendererPassState ​

RendererPassState

clusterLightingBuffer ​

ClusterLightingBuffer

encoder ​

GPURenderPassEncoder

useBundle? ​

boolean = false

Returns ​

void

Inherited from ​

MeshRenderer.renderPass2


recordRenderPass2() ​

recordRenderPass2(view, passType, rendererPassState, clusterLightingBuffer, encoder, useBundle?): void

Defined in: src/components/renderer/RenderNode.ts:595

Parameters ​

view ​

View3D

passType ​

PassType

rendererPassState ​

RendererPassState

clusterLightingBuffer ​

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 ​

MeshRenderer.preInit


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 ​

MeshRenderer.beforeDestroy


init() ​

init(param?): void

Defined in: src/components/renderer/WaterRenderer.ts:110

Parameters ​

param? ​

any

Returns ​

void

Overrides ​

MeshRenderer.init


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? ​

View3D

Returns ​

void

Overrides ​

MeshRenderer.onUpdate


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 ​

Vector3

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

Overrides ​

MeshRenderer.destroy