Interface IShadowLight
animations: Animation[];
customProjectionMatrixBuilder: (
viewMatrix: Matrix,
renderList: AbstractMesh[],
result: Matrix,
) => void;
diffuse: Color3;
direction: Vector3;
falloffType: number;
id: string;
inspectableCustomProperties: IInspectable[];
intensity: number;
metadata: any;
name: string;
onAccessibilityTagChangedObservable: Observable<
Nullable<IAccessibilityTag>,
>;
onDisposeObservable: Observable<Node>;
onReady: Nullable<(node: Node) => void>;
position: Vector3;
reservedDataStore: any;
shadowMaxZ: number;
shadowMinZ: number;
specular: Color3;
state: string;
transformedDirection: Vector3;
transformedPosition: Vector3;
uniqueId: number;
get accessibilityTag(): Nullable<IAccessibilityTag>;
set accessibilityTag(value: Nullable<IAccessibilityTag>): void;
get animationPropertiesOverride(): Nullable<AnimationPropertiesOverride>;
set animationPropertiesOverride(
value: Nullable<AnimationPropertiesOverride>,
): void;
get behaviors(): Behavior<Node>[];
get doNotSerialize(): boolean;
set doNotSerialize(value: boolean): void;
get excludedMeshes(): AbstractMesh[];
set excludedMeshes(value: AbstractMesh[]): void;
get excludeWithLayerMask(): number;
set excludeWithLayerMask(value: number): void;
get includedOnlyMeshes(): AbstractMesh[];
set includedOnlyMeshes(value: AbstractMesh[]): void;
get includeOnlyWithLayerMask(): number;
set includeOnlyWithLayerMask(value: number): void;
get inheritVisibility(): boolean;
set inheritVisibility(value: boolean): void;
get intensityMode(): number;
set intensityMode(value: number): void;
get isVisible(): boolean;
set isVisible(value: boolean): void;
get lightmapMode(): number;
set lightmapMode(value: number): void;
get onClonedObservable(): Observable<Node>;
set onDispose(callback: () => void): void;
get onEffectiveEnabledStateChangedObservable(): Observable<boolean>;
get onEnabledStateChangedObservable(): Observable<boolean>;
get parent(): Nullable<Node>;
set parent(parent: Nullable<Node>): void;
get radius(): number;
set radius(value: number): void;
get range(): number;
set range(value: number): void;
renderPriority: number;
get shadowEnabled(): boolean;
set shadowEnabled(value: boolean): void;
get worldMatrixFromCache(): Matrix;
_bindLight(
lightIndex: number,
scene: Scene,
effect: Effect,
useSpecular: boolean,
receiveShadows?: boolean,
): void;
addBehavior(behavior: Behavior<Node>, attachImmediately?: boolean): Node;
areLightTexturesReady(): boolean;
beginAnimation(
name: string,
loop?: boolean,
speedRatio?: number,
onAnimationEnd?: () => void,
): Nullable<Animatable>;
canAffectMesh(mesh: AbstractMesh): boolean;
clone(name: string, newParent?: Nullable<Node>): Nullable<Light>;
computeTransformedInformation(): boolean;
computeWorldMatrix(_force?: boolean): Matrix;
createAnimationRange(name: string, from: number, to: number): void;
deleteAnimationRange(name: string, deleteFrames?: boolean): void;
dispose(doNotRecurse?: boolean, disposeMaterialAndTextures?: boolean): void;
forceProjectionMatrixCompute(): void;
getAbsolutePosition(): Vector3;
getAnimationByName(name: string): Nullable<Animation>;
getAnimationRange(name: string): Nullable<AnimationRange>;
getAnimationRanges(): Nullable<AnimationRange>[];
getBehaviorByName(name: string): Nullable<Behavior<Node>>;
getChildMeshes<T extends AbstractMesh>(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => node is T,
): T[];
getChildMeshes(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => boolean,
): AbstractMesh[];
getChildren<T extends Node>(
predicate?: (node: Node) => node is T,
directDescendantsOnly?: boolean,
): T[];
getChildren(
predicate?: (node: Node) => boolean,
directDescendantsOnly?: boolean,
): Node[];
getClassName(): string;
getDepthMaxZ(activeCamera: Nullable<Camera>): number;
getDepthMinZ(activeCamera: Nullable<Camera>): number;
getDepthScale(): number;
getDescendants<T extends Node>(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => node is T,
): T[];
getDescendants(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => boolean,
): Node[];
getEngine(): AbstractEngine;
getHierarchyBoundingVectors(
includeDescendants?: boolean,
predicate?: Nullable<(abstractMesh: AbstractMesh) => boolean>,
): { max: Vector3; min: Vector3 };
getProjectionMatrix(
_viewMatrix?: Matrix,
_renderList?: AbstractMesh[],
): Nullable<Matrix>;
getScaledIntensity(): number;
getScene(): Scene;
getShadowDirection(faceIndex?: number): Vector3;
getShadowGenerator(camera?: Nullable<Camera>): Nullable<IShadowGenerator>;
getShadowGenerators(): Nullable<Map<Nullable<Camera>, IShadowGenerator>>;
getTypeID(): number;
getViewMatrix(_faceIndex?: number): Nullable<Matrix>;
getWorldMatrix(): Matrix;
isDescendantOf(ancestor: Node): boolean;
isDisposed(): boolean;
isEnabled(checkAncestors?: boolean): boolean;
isReady(_completeCheck?: boolean): boolean;
markAsDirty(_property?: string): Node;
needCube(): boolean;
needProjectionMatrixCompute(): boolean;
prepareLightSpecificDefines(defines: any, lightIndex: number): void;
removeBehavior(behavior: Behavior<Node>): Node;
serialize(): any;
serializeAnimationRanges(): any;
setEnabled(value: boolean): void;
setShadowProjectionMatrix(
matrix: Matrix,
viewMatrix: Matrix,
renderList: AbstractMesh[],
): IShadowLight;
toString(fullDetails?: boolean): string;
transferTexturesToEffect(effect: Effect, lightIndex: string): Light;
transferToEffect(effect: Effect, lightIndex: string): Light;
transferToNodeMaterialEffect(
effect: Effect,
lightDataUniformName: string,
): Light;
}
Hierarchy (View Summary)
- Light
- IShadowLight
Implemented by
Index
Properties
Accessors
Methods
Properties
animations
Gets a list of Animations associated with the node
custom Projection Matrix Builder
viewMatrix: Matrix,
renderList: AbstractMesh[],
result: Matrix,
) => void
Callback defining a custom Projection Matrix Builder. This can be used to override the default projection matrix computation.
diffuse
Diffuse gives the basic color to an object.
direction
In 2d mode (needCube being false), the direction used to cast the shadow.
falloff Type
Defines the falloff type for this light. This lets overriding how punctual light are falling off base on range or angle. This can be set to any values in Light.FALLOFF_x.
Note: This is only useful for PBR Materials at the moment. This could be extended if required to other types of materials.
id
The light id in the scene (used in scene.getLightById for instance)
inspectable Custom Properties
List of inspectable custom properties (used by the Inspector)
intensity
Strength of the light. Note: By default it is define in the framework own unit. Note: In PBR materials the intensityMode can be use to chose what unit the intensity is defined in.
metadata
Gets or sets an object used to store user defined information for the node
name
The friendly name of the light in the scene.
on Accessibility Tag Changed Observable
Observable fired when an accessibility tag is changed
on Dispose Observable
An event triggered when the mesh is disposed
on Ready
Callback raised when the node is ready to be used
position
The position the shadow will be casted from.
reserved Data Store
For internal use only. Please do not use.
shadow Max Z
Defines the shadow projection clipping maximum z value.
shadow Min Z
Defines the shadow projection clipping minimum z value.
specular
Specular produces a highlight color on an object. Note: This is not affecting PBR materials.
state
Gets or sets a string used to store user defined state for the node
transformed Direction
The transformed direction. Direction of the light in world space taking parenting in account.
transformed Position
The transformed position. Position of the light in world space taking parenting in account.
unique Id
Gets or sets the unique id of the node
Accessors
accessibility Tag
animation Properties Override
-
Gets or sets the animation properties override
Returns Nullable<AnimationPropertiesOverride>
-
Parameters
- value: Nullable<AnimationPropertiesOverride>
Returns void
behaviors
do Not Serialize
-
get doNotSerialize(): boolean
Gets or sets a boolean used to define if the node must be serialized
Returns boolean
-
set doNotSerialize(value: boolean): void
Parameters
- value: boolean
Returns void
excluded Meshes
-
Gets the meshes not impacted by this light.
Returns AbstractMesh[]
exclude With Layer Mask
-
get excludeWithLayerMask(): number
Gets the layer id use to find what meshes are not impacted by the light. Inactive if 0
Returns number
-
set excludeWithLayerMask(value: number): void
Sets the layer id use to find what meshes are not impacted by the light. Inactive if 0
Parameters
- value: number
Returns void
included Only Meshes
-
Gets the only meshes impacted by this light.
Returns AbstractMesh[]
include Only With Layer Mask
-
get includeOnlyWithLayerMask(): number
Gets the layer id use to find what meshes are impacted by the light. Inactive if 0
Returns number
-
set includeOnlyWithLayerMask(value: number): void
Sets the layer id use to find what meshes are impacted by the light. Inactive if 0
Parameters
- value: number
Returns void
inherit Visibility
-
get inheritVisibility(): boolean
-
set inheritVisibility(value: boolean): void
Parameters
- value: boolean
Returns void
intensity Mode
-
get intensityMode(): number
Gets the photometric scale used to interpret the intensity. This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
Returns number
-
set intensityMode(value: number): void
Sets the photometric scale used to interpret the intensity. This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
Parameters
- value: number
Returns void
is Visible
-
get isVisible(): boolean
-
set isVisible(value: boolean): void
Parameters
- value: boolean
Returns void
lightmap Mode
-
get lightmapMode(): number
Gets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
Returns number
-
set lightmapMode(value: number): void
Sets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
Parameters
- value: number
Returns void
on Cloned Observable
-
An event triggered when the node is cloned
Returns Observable<Node>
on Dispose
-
set onDispose(callback: () => void): void
Sets a callback that will be raised when the node will be disposed
Parameters
- callback: () => void
Returns void
on Effective Enabled State Changed Observable
-
An event triggered when the effective enabled state of the node changes, i.e. whenever the value returned by isEnabled changes. Unlike onEnabledStateChangedObservable, this fires for changes caused by an ancestor's enabled state as well as this node's own state. The observable is created on first access, so no cost is incurred for nodes that never observe it.
Returns Observable<boolean>
on Enabled State Changed Observable
-
An event triggered when the enabled state of the node changes. This only reflects changes to the node's own enabled flag (as set via setEnabled), not changes inherited from an ancestor. Use onEffectiveEnabledStateChangedObservable to also be notified when an ancestor's enabled state changes the effective enabled state.
Returns Observable<boolean>
parent
-
Gets or sets the parent of the node (without keeping the current position in the scene)
Returns void
radius
-
get radius(): number
Gets the light radius used by PBR Materials to simulate soft area lights.
Returns number
-
set radius(value: number): void
sets the light radius used by PBR Materials to simulate soft area lights.
Parameters
- value: number
Returns void
range
-
get range(): number
Defines how far from the source the light is impacting in scene units. Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
Returns number
-
set range(value: number): void
Defines how far from the source the light is impacting in scene units. Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
Parameters
- value: number
Returns void
render Priority
Defines the rendering priority of the lights. It can help in case of fallback or number of lights exceeding the number allowed of the materials.
shadow Enabled
-
get shadowEnabled(): boolean
Gets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching the current shadow generator.
Returns boolean
-
set shadowEnabled(value: boolean): void
Sets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching the current shadow generator.
Parameters
- value: boolean
Returns void
world Matrix From Cache
-
Returns directly the latest state of the mesh World matrix. A Matrix is returned.
Returns Matrix
Methods
_ bind Light
add Behavior
are Light Textures Ready
-
Returns true when all texture resources used by this light are ready (e.g. projection textures). Override in subclasses that use texture resources.
Returns boolean
true if all light textures are ready
begin Animation
-
beginAnimation(
name: string,
loop?: boolean,
speedRatio?: number,
onAnimationEnd?: () => void,
): Nullable<Animatable>Will start the animation sequence
Parameters
- name: string
defines the range frames for animation sequence
Optionalloop: booleandefines if the animation should loop (false by default)
OptionalspeedRatio: numberdefines the speed factor in which to run the animation (1 by default)
OptionalonAnimationEnd: () => voiddefines a function to be executed when the animation ended (undefined by default)
Returns Nullable<Animatable>
the object created for this animation. If range does not exist, it will return null
- name: string
can Affect Mesh
-
Specifies if the light will affect the passed mesh.
Parameters
- mesh: AbstractMesh
The mesh to test against the light
Returns boolean
true the mesh is affected otherwise, false.
- mesh: AbstractMesh
clone
compute Transformed Information
-
Computes the transformed information (transformedPosition and transformedDirection in World space) of the current light
Returns boolean
true if the information has been computed, false if it does not need to (no parenting)
compute World Matrix
-
Computes the world matrix of the node
Parameters
Optional_force: booleandefines if the cache version should be invalidated forcing the world matrix to be created from scratch
Returns Matrix
the world matrix
create Animation Range
-
Creates an animation range for this node
Parameters
- name: string
defines the name of the range
- from: number
defines the starting key
- to: number
defines the end key
Returns void
- name: string
delete Animation Range
-
Delete a specific animation range
Parameters
- name: string
defines the name of the range to delete
- deleteFrames: boolean = true
defines if animation frames from the range must be deleted as well
Returns void
- name: string
dispose
-
Releases resources associated with this node.
Parameters
OptionaldoNotRecurse: booleanSet to true to not recurse into each children (recurse into each children by default)
- disposeMaterialAndTextures: boolean = false
Set to true to also dispose referenced materials and textures (false by default)
Returns void
force Projection Matrix Compute
-
Forces the shadow generator to recompute the projection matrix even if position and direction did not changed.
Returns void
get Absolute Position
-
Returns a Vector3, the absolute light position in the World.
Returns Vector3
the world space position of the light
get Animation By Name
get Animation Range
-
Get an animation range by name
Parameters
- name: string
defines the name of the animation range to look for
Returns Nullable<AnimationRange>
null if not found else the requested animation range
- name: string
get Animation Ranges
-
Gets the list of all animation ranges defined on this node
Returns Nullable<AnimationRange>[]
an array
get Behavior By Name
get Child Meshes
-
getChildMeshes<T extends AbstractMesh>(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => node is T,
): T[]Get all child-meshes of this node
Type Parameters
- T extends AbstractMesh
Parameters
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: false)
Optionalpredicate: (node: Node) => node is Tdefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
Returns T[]
an array of AbstractMesh
-
getChildMeshes(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => boolean,
): AbstractMesh[]Get all child-meshes of this node
Parameters
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: false)
Optionalpredicate: (node: Node) => booleandefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
Returns AbstractMesh[]
an array of AbstractMesh
get Children
-
getChildren<T extends Node>(
predicate?: (node: Node) => node is T,
directDescendantsOnly?: boolean,
): T[]Get all direct children of this node
Type Parameters
- T extends Node
Parameters
Optionalpredicate: (node: Node) => node is Tdefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: true)
Returns T[]
an array of Node
-
Get all direct children of this node
Parameters
Optionalpredicate: (node: Node) => booleandefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: true)
Returns Node[]
an array of Node
get Class Name
-
Returns the string "Light".
Returns string
the class name
get Depth Max Z
-
Gets the maxZ used for shadow according to both the scene and the light.
Parameters
- activeCamera: Nullable<Camera>
The camera we are returning the max for
Returns number
the depth max z
- activeCamera: Nullable<Camera>
get Depth Min Z
-
Gets the minZ used for shadow according to both the scene and the light.
Parameters
- activeCamera: Nullable<Camera>
The camera we are returning the min for
Returns number
the depth min z
- activeCamera: Nullable<Camera>
get Depth Scale
-
Gets the current depth scale used in ESM.
Returns number
The scale
get Descendants
-
getDescendants<T extends Node>(
directDescendantsOnly?: boolean,
predicate?: (node: Node) => node is T,
): T[]Will return all nodes that have this node as ascendant
Type Parameters
- T extends Node
Parameters
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
Optionalpredicate: (node: Node) => node is Tdefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
Returns T[]
all children nodes of all types
-
Will return all nodes that have this node as ascendant
Parameters
OptionaldirectDescendantsOnly: booleandefines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
Optionalpredicate: (node: Node) => booleandefines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
Returns Node[]
all children nodes of all types
get Engine
get Hierarchy Bounding Vectors
-
getHierarchyBoundingVectors(
includeDescendants?: boolean,
predicate?: Nullable<(abstractMesh: AbstractMesh) => boolean>,
): { max: Vector3; min: Vector3 }Return the minimum and maximum world vectors of the entire hierarchy under current node
Parameters
- includeDescendants: boolean = true
Include bounding info from descendants as well (true by default)
- predicate: Nullable<(abstractMesh: AbstractMesh) => boolean> = null
defines a callback function that can be customize to filter what meshes should be included in the list used to compute the bounding vectors
Returns { max: Vector3; min: Vector3 }
the new bounding vectors
- includeDescendants: boolean = true
get Projection Matrix
-
Returns the projection matrix. Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).
Parameters
Optional_viewMatrix: MatrixThe view transform matrix of the light (optional).
Optional_renderList: AbstractMesh[]The list of meshes to take into account when calculating the projection matrix (optional).
Returns Nullable<Matrix>
The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
get Scaled Intensity
-
Returns the intensity scaled by the Photometric Scale according to the light type and intensity mode.
Returns number
the scaled intensity in intensity mode unit
get Scene
get Shadow Direction
-
Get the direction to use to render the shadow map. In case of cube texture, the face index can be passed.
Parameters
OptionalfaceIndex: numberThe index of the face we are computed the direction to generate shadow
Returns Vector3
The set direction in 2d mode otherwise the direction to the cubemap face if needCube() is true
get Shadow Generator
-
Returns the Light associated shadow generator if any.
Parameters
Returns Nullable<IShadowGenerator>
the associated shadow generator.
get Shadow Generators
-
Returns all the shadow generators associated to this light
Returns Nullable<Map<Nullable<Camera>, IShadowGenerator>>
get Type ID
-
Returns the light type ID (integer).
Returns number
The light Type id as a constant defines in Light.LIGHTTYPEID_x
get View Matrix
-
Returns the view matrix.
Parameters
Optional_faceIndex: numberThe index of the face for which we want to extract the view matrix. Only used for point light types.
Returns Nullable<Matrix>
The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
get World Matrix
is Descendant Of
-
Is this node a descendant of the given node? The function will iterate up the hierarchy until the ancestor was found or no more parents defined
Parameters
- ancestor: Node
defines the parent node to inspect
Returns boolean
a boolean indicating if this node is a descendant of the given node
- ancestor: Node
is Disposed
-
Gets a boolean indicating if the node has been disposed
Returns boolean
true if the node was disposed
is Enabled
-
Is this node enabled? If the node has a parent, all ancestors will be checked and false will be returned if any are false (not enabled), otherwise will return true
Parameters
- checkAncestors: boolean = true
indicates if this method should check the ancestors. The default is to check the ancestors. If set to false, the method will return the value of this node without checking ancestors
Returns boolean
whether this node (and its parent) is enabled
Remarks
To observe changes to the value returned when calling this with
checkAncestorsset to true (the default, i.e. the effective enabled state), subscribe to onEffectiveEnabledStateChangedObservable. To observe changes to the value returned when calling this withcheckAncestorsset to false (i.e. this node's own enabled state only), subscribe to onEnabledStateChangedObservable. - checkAncestors: boolean = true
is Ready
-
Is this node ready to be used/rendered
Parameters
- _completeCheck: boolean = false
defines if a complete check (including materials and lights) has to be done (false by default)
Returns boolean
true if the node is ready
- _completeCheck: boolean = false
mark As Dirty
-
Flag the node as dirty (Forcing it to update everything)
Parameters
Optional_property: stringhelps children apply precise "dirtyfication"
Returns Node
this node
need Cube
-
Returns whether or not the shadow generation require a cube texture or a 2d texture.
Returns boolean
true if a cube texture needs to be use
need Projection Matrix Compute
-
Detects if the projection matrix requires to be recomputed this frame.
Returns boolean
true if it requires to be recomputed otherwise, false.
Abstractprepare Light Specific Defines
-
Prepares the list of defines specific to the light type.
Parameters
- defines: any
the list of defines
- lightIndex: number
defines the index of the light for the effect
Returns void
- defines: any
remove Behavior
serialize
-
Serializes the current light into a Serialization object.
Returns any
the serialized object.
serialize Animation Ranges
-
Serialize animation ranges into a JSON compatible object
Returns any
serialization object
set Enabled
-
Set the enabled state of this node.
Parameters
- value: boolean
the new enabled state
Returns void
- value: boolean
set Shadow Projection Matrix
-
setShadowProjectionMatrix(
matrix: Matrix,
viewMatrix: Matrix,
renderList: AbstractMesh[],
): IShadowLightSets the shadow projection matrix in parameter to the generated projection matrix.
Parameters
- matrix: Matrix
The matrix to update with the projection information
- viewMatrix: Matrix
The transform matrix of the light
- renderList: AbstractMesh[]
The list of mesh to render in the map
Returns IShadowLight
The current light
- matrix: Matrix
to String
-
Converts the light information to a readable string for debug purpose.
Parameters
OptionalfullDetails: booleanSupports for multiple levels of logging within scene loading
Returns string
the human readable light info
Interface describing all the common properties and methods a shadow light needs to implement. This helps both the shadow generator and materials to generate the corresponding shadow maps as well as binding the different shadow properties to the effects.