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.