Skip to content

Documentation / scene / GerstnerWaveGenerator

Class: GerstnerWaveGenerator ​

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:11

Gerstner wave generator.

Extends ​

  • Disposable

Implements ​

Constructors ​

Constructor ​

new GerstnerWaveGenerator(randomSeed?): GerstnerWaveGenerator

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:20

Creates a new Gerstner wave generator.

Parameters ​

randomSeed? ​

number = 0

Returns ​

GerstnerWaveGenerator

Overrides ​

Disposable.constructor

Accessors ​

disposed ​

Get Signature ​

get disposed(): boolean

Defined in: libs/base/dist/index.d.ts:6107

Returns ​

boolean

Implementation of ​

WaveGenerator.disposed

Inherited from ​

Disposable.disposed


rand ​

Get Signature ​

get rand(): PRNG

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:56

Returns ​

PRNG


numWaves ​

Get Signature ​

get numWaves(): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:63

Gets the number of waves.

Returns ​

number

Set Signature ​

set numWaves(val): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:66

Parameters ​
val ​

number

Returns ​

void


foamWidth ​

Get Signature ​

get foamWidth(): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:210

Gets the foam width.

Returns ​

number

Set Signature ​

set foamWidth(val): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:213

Parameters ​
val ​

number

Returns ​

void


foamContrast ​

Get Signature ​

get foamContrast(): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:220

Gets the foam contrast.

Returns ​

number

Set Signature ​

set foamContrast(val): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:223

Parameters ​
val ​

number

Returns ​

void

Methods ​

on() ​

on<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:630

IEventTarget.on

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener ​

EventListener<{ dispose: []; }, K>

context? ​

unknown

Returns ​

void

Implementation of ​

WaveGenerator.on

Inherited from ​

Disposable.on


once() ​

once<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:634

IEventTarget.once

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener ​

EventListener<{ dispose: []; }, K>

context? ​

unknown

Returns ​

void

Implementation of ​

WaveGenerator.once

Inherited from ​

Disposable.once


off() ​

off<K>(type, listener?, context?): void

Defined in: libs/base/dist/index.d.ts:638

IEventTarget.off

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener? ​

EventListener<{ dispose: []; }>

context? ​

unknown

Returns ​

void

Implementation of ​

WaveGenerator.off

Inherited from ​

Disposable.off


dispatchEvent() ​

dispatchEvent<K>(type, ...args): void

Defined in: libs/base/dist/index.d.ts:642

IEventTarget.dispatchEvent

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

args ​

...object[K]

Returns ​

void

Implementation of ​

WaveGenerator.dispatchEvent

Inherited from ​

Disposable.dispatchEvent


dispose() ​

dispose(): void

Defined in: libs/base/dist/index.d.ts:6108

Dispose the wave generator.

Returns ​

void

Implementation of ​

WaveGenerator.dispose

Inherited from ​

Disposable.dispose


onDispose() ​

protected onDispose(): void

Defined in: libs/base/dist/index.d.ts:6109

Returns ​

void

Inherited from ​

Disposable.onDispose


clone() ​

clone(): GerstnerWaveGenerator

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:49

Create a new instance from this

Returns ​

GerstnerWaveGenerator

The created instance

Implementation of ​

WaveGenerator.clone


deleteWave() ​

deleteWave(index): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:80

Delete wave at index

Parameters ​

index ​

number

Returns ​

void


insertWave() ​

insertWave(index): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:93

Insert a wave slot at index, shifting the subsequent waves up

Parameters ​

index ​

number

Returns ​

void


setWaveDirection() ​

setWaveDirection(waveIndex, angle): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:119

Sets the angle of the wave direction in radians.

Parameters ​

waveIndex ​

number

index of the wave to set.

angle ​

number

angle of the wave direction in radians.

Returns ​

void


getWaveDirection() ​

getWaveDirection(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:130

Gets the angle of the wave direction in radians.

Parameters ​

waveIndex ​

number

index of the wave to get.

Returns ​

number

Angle of the wave direction in radians.


setWaveSteepness() ​

setWaveSteepness(waveIndex, steepness): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:138

Sets the steepness of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

steepness ​

number

Steepness of the wave.

Returns ​

void


getWaveSteepness() ​

getWaveSteepness(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:149

Gets the steepness of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

number

Steepness of the wave.


setWaveAmplitude() ​

setWaveAmplitude(waveIndex, val): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:157

Sets the amplitude of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

val ​

number

Amplitude of the wave.

Returns ​

void


getWaveAmplitude() ​

getWaveAmplitude(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:168

Gets the amplitude of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

number

Amplitude of the wave.


setWaveLength() ​

setWaveLength(waveIndex, val): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:176

Sets the length of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

val ​

number

Length of the wave.

Returns ​

void


getWaveLength() ​

getWaveLength(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:187

Gets the length of the wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

number

Length of the wave.


isOmniWave() ​

isOmniWave(waveIndex): boolean

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:195

Query if the wave is an omni-directional wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

boolean

true if the wave is an omni-directional wave, false otherwise.


setOmniWave() ​

setOmniWave(waveIndex, isOmni): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:203

Sets whether the wave is an omni-directional wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

isOmni ​

boolean

true if the wave is an omni-directional wave, false otherwise.

Returns ​

void


getOriginX() ​

getOriginX(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:234

Gets the X coordinate of the wave origin if it is an omni-directional wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

number

X coordinate of the wave origin if it is an omni-directional wave, 0 otherwise.


getOriginZ() ​

getOriginZ(waveIndex): number

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:242

Gets the Z coordinate of the wave origin if it is an omni-directional wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

Returns ​

number

Z coordinate of the wave origin if it is an omni-directional wave, 0 otherwise.


setOrigin() ​

setOrigin(waveIndex, x, z): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:251

Sets the X and Z coordinates of the wave origin if it is an omni-directional wave.

Parameters ​

waveIndex ​

number

index of the wave to set.

x ​

number

X coordinate of the wave origin

z ​

number

Z coordinate of the wave origin

Returns ​

void


update() ​

update(): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:263

Update the wave generator.

Returns ​

void

Implementation of ​

WaveGenerator.update


needUpdate() ​

needUpdate(): boolean

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:265

Wether this wave generator's update() method should be called this frame

Returns ​

boolean

true if this wave generator's update() method should be called this frame

Implementation of ​

WaveGenerator.needUpdate


calcClipmapTileAABB() ​

calcClipmapTileAABB(minX, maxX, minZ, maxZ, y, outAABB): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:269

Parameters ​

minX ​

number

Minimum X position of the clipmap tile.

maxX ​

number

Maximum X position of the clipmap tile.

minZ ​

number

Minimum Z position of the clipmap tile.

maxZ ​

number

Maximum Z position of the clipmap tile.

y ​

number

Y position of the water surface.

outAABB ​

AABB

Output AABB.

Returns ​

void

Implementation of ​

WaveGenerator.calcClipmapTileAABB


calcFragmentNormal() ​

calcFragmentNormal(scope, xz, _vertexNormal): PBShaderExp

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:281

Parameters ​

scope ​

PBInsideFunctionScope

Global scope of the shader program.

xz ​

PBShaderExp

XZ position.

_vertexNormal ​

PBShaderExp

Vertex normal.

Returns ​

PBShaderExp

Implementation of ​

WaveGenerator.calcFragmentNormal


calcFragmentNormalAndFoam() ​

calcFragmentNormalAndFoam(scope, xz, _vertexNormal): PBShaderExp

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:294

Calculate fragment normal and foam.

Parameters ​

scope ​

PBInsideFunctionScope

Global scope of the shader program.

xz ​

PBShaderExp

XZ position.

_vertexNormal ​

PBShaderExp

Vertex normal.

Returns ​

PBShaderExp

Implementation of ​

WaveGenerator.calcFragmentNormalAndFoam


setupUniforms() ​

setupUniforms(scope, uniformGroup): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:351

Setup uniforms for the shader program.

Parameters ​

scope ​

PBGlobalScope

Global scope of the shader program.

uniformGroup ​

number

Bind group index for uniform values

Returns ​

void

Implementation of ​

WaveGenerator.setupUniforms


calcVertexPositionAndNormal() ​

calcVertexPositionAndNormal(scope, inPos, outPos, outNormal): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:482

Calculate vertex position and normal.

Parameters ​

scope ​

PBInsideFunctionScope

Global scope of the shader program.

inPos ​

PBShaderExp

Input position.

outPos ​

PBShaderExp

Output position.

outNormal ​

PBShaderExp

Output normal.

Returns ​

void

Implementation of ​

WaveGenerator.calcVertexPositionAndNormal


applyWaterBindGroup() ​

applyWaterBindGroup(bindGroup): void

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:491

Apply water bind group.

Parameters ​

bindGroup ​

BindGroup

Bind group to apply.

Returns ​

void

Implementation of ​

WaveGenerator.applyWaterBindGroup


isOk() ​

isOk(): boolean

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:497

Check if the wave generator is ok.

Returns ​

boolean

Implementation of ​

WaveGenerator.isOk


getHash() ​

getHash(): string

Defined in: libs/scene/src/render/gerstner_wavegenerator.ts:501

Get the shader hash of the wave generator.

Returns ​

string

Implementation of ​

WaveGenerator.getHash

Released under the MIT License.