Interface IShadowGenerator
doNotSerialize?: boolean;
id: string;
bindShadowLight(lightIndex: string, effect: Effect): void;
dispose(): void;
forceCompilation(
onCompiled?: (generator: IShadowGenerator) => void,
options?: Partial<{ useInstances: boolean }>,
): void;
forceCompilationAsync(
options?: Partial<{ useInstances: boolean }>,
): Promise<void>;
getShadowMap(): Nullable<RenderTargetTexture>;
getTransformMatrix(): Matrix;
isReady(
subMesh: SubMesh,
useInstances: boolean,
isTransparent: boolean,
): boolean;
prepareDefines(defines: MaterialDefines, lightIndex: number): void;
recreateShadowMap(): void;
serialize(): any;
}
Implemented by
Properties
Optionaldo Not Serialize
Specifies if the ShadowGenerator should be serialized, true to skip serialization.
Note a ShadowGenerator will not be serialized if its light has doNotSerialize=true
id
Gets or set the id of the shadow generator. It will be the one from the light if not defined
Methods
bind Shadow Light
-
Binds the shadow related information inside of an effect (information like near, far, darkness... defined in the generator but impacting the effect). It implies the uniforms available on the materials are the standard BJS ones.
Parameters
- lightIndex: string
Index of the light in the enabled light list of the material owning the effect
- effect: Effect
The effect we are binding the information for
Returns void
- lightIndex: string
dispose
-
Disposes the Shadow map and related Textures and effects.
Returns void
force Compilation
-
forceCompilation(
onCompiled?: (generator: IShadowGenerator) => void,
options?: Partial<{ useInstances: boolean }>,
): voidForces all the attached effect to compile to enable rendering only once ready vs. lazily compiling effects.
Parameters
OptionalonCompiled: (generator: IShadowGenerator) => voidCallback triggered at the and of the effects compilation
Optionaloptions: Partial<{ useInstances: boolean }>Sets of optional options forcing the compilation with different modes
Returns void
force Compilation Async
-
Forces all the attached effect to compile to enable rendering only once ready vs. lazily compiling effects.
Parameters
Optionaloptions: Partial<{ useInstances: boolean }>Sets of optional options forcing the compilation with different modes
Returns Promise<void>
A promise that resolves when the compilation completes
get Shadow Map
-
Gets the main RTT containing the shadow map (usually storing depth from the light point of view).
Returns Nullable<RenderTargetTexture>
The render target texture if present otherwise, null
get Transform Matrix
-
Gets the transformation matrix used to project the meshes into the map from the light point of view. (eq to shadow projection matrix * light transform matrix)
Returns Matrix
The transform matrix used to create the shadow map
is Ready
-
Determine whether the shadow generator is ready or not (mainly all effects and related post processes needs to be ready).
Parameters
- subMesh: SubMesh
The submesh we want to render in the shadow map
- useInstances: boolean
Defines whether will draw in the map using instances
- isTransparent: boolean
Indicates that isReady is called for a transparent subMesh
Returns boolean
true if ready otherwise, false
- subMesh: SubMesh
prepare Defines
-
Prepare all the defines in a material relying on a shadow map at the specified light index.
Parameters
- defines: MaterialDefines
Defines of the material we want to update
- lightIndex: number
Index of the light in the enabled light list of the material
Returns void
- defines: MaterialDefines
recreate Shadow Map
-
Recreates the shadow map dependencies like RTT and post processes. This can be used during the switch between Cube and 2D textures for instance.
Returns void
serialize
-
Serializes the shadow generator setup to a json object.
Returns any
The serialized JSON object
Interface to implement to create a shadow generator compatible with BJS.