Options
All
  • Public
  • Public/Protected
  • All
Menu

Default implementation IShadowGenerator. This is the main object responsible of generating shadows in the framework. Documentation: https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows

Hierarchy

Implements

Index

Constructors

  • Creates a ShadowGenerator object. A ShadowGenerator is the required tool to use the shadows. Each light casting shadows needs to use its own ShadowGenerator. Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows

    Parameters

    • mapSize: number

      The size of the texture what stores the shadows. Example : 1024.

    • light: IShadowLight

      The light object generating the shadows.

    • Optional usefullFloatFirst: boolean

      By default the generator will try to use half float textures but if you need precision (for self shadowing for instance), you can use this option to enforce full float texture.

    • Optional camera: Nullable<Camera>

      Camera associated with this shadow generator (default: null). If null, takes the scene active camera at the time we need to access it

    • Optional useRedTextureType: boolean

      Forces the generator to use a Red instead of a RGBA type for the shadow map texture format (default: false)

    Returns ShadowGenerator

Properties

customAllowRendering: ((subMesh: SubMesh) => boolean)

Type declaration

    • Gets or sets a custom function to allow/disallow rendering a sub mesh in the shadow map

      Parameters

      Returns boolean

customShaderOptions: ICustomShaderOptions

Gets or sets the custom shader name to use

enableSoftTransparentShadow: boolean

Enables or disables shadows with varying strength based on the transparency When it is enabled, the strength of the shadow is taken equal to mesh.visibility If you enabled an alpha texture on your material, the alpha value red from the texture is also combined to compute the strength: mesh.visibility * alphaTexture.a The texture used is the diffuse by default, but it can be set to the opacity by setting useOpacityTextureForTransparentShadow Note that by definition transparencyShadow must be set to true for enableSoftTransparentShadow to work!

forceBackFacesOnly: boolean

If true the shadow map is generated by rendering the back face of the mesh instead of the front face. This can help with self-shadowing as the geometry making up the back of objects is slightly offset. It might on the other hand introduce peter panning.

frustumEdgeFalloff: number

Controls the extent to which the shadows fade out at the edge of the frustum

id: string

Gets or set the id of the shadow generator. It will be the one from the light if not defined

onAfterShadowMapRenderMeshObservable: Observable<Mesh>

Observable triggered after a mesh is rendered in the shadow map. Can be used to update internal effect state (that you can get from the onAfterShadowMapRenderObservable)

onAfterShadowMapRenderObservable: Observable<Effect>

Observable triggered after the shadow is rendered. Can be used to restore internal effect state

onBeforeShadowMapRenderMeshObservable: Observable<Mesh>

Observable triggered before a mesh is rendered in the shadow map. Can be used to update internal effect state (that you can get from the onBeforeShadowMapRenderObservable)

onBeforeShadowMapRenderObservable: Observable<Effect>

Observable triggered before the shadow is rendered. Can be used to update internal effect state

useOpacityTextureForTransparentShadow: boolean

If this is true, use the opacity texture's alpha channel for transparent shadows instead of the diffuse one

CLASSNAME: string

Name of the shadow generator class

DEFAULT_ALPHA_CUTOFF: number

Defines the default alpha cutoff value used for transparent alpha tested materials.

FILTER_BLURCLOSEEXPONENTIALSHADOWMAP: 5 = 5

Shadow generator mode ESM: Blurred Exponential Shadow Mapping using the inverse of the exponential preventing edge artifacts on steep falloff. (http://developer.download.nvidia.com/presentations/2008/GDC/GDC08_SoftShadowMapping.pdf)

FILTER_BLUREXPONENTIALSHADOWMAP: 3 = 3

Shadow generator mode ESM: Blurred Exponential Shadow Mapping. (http://developer.download.nvidia.com/presentations/2008/GDC/GDC08_SoftShadowMapping.pdf)

FILTER_CLOSEEXPONENTIALSHADOWMAP: 4 = 4

Shadow generator mode ESM: Exponential Shadow Mapping using the inverse of the exponential preventing edge artifacts on steep falloff. (http://developer.download.nvidia.com/presentations/2008/GDC/GDC08_SoftShadowMapping.pdf)

FILTER_EXPONENTIALSHADOWMAP: 1 = 1

Shadow generator mode ESM: Exponential Shadow Mapping. (http://developer.download.nvidia.com/presentations/2008/GDC/GDC08_SoftShadowMapping.pdf)

FILTER_NONE: 0 = 0

Shadow generator mode None: no filtering applied.

FILTER_PCF: 6 = 6

Shadow generator mode PCF: Percentage Closer Filtering benefits from Webgl 2 shadow samplers. Fallback to Poisson Sampling in Webgl 1 (https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch11.html)

FILTER_PCSS: 7 = 7

Shadow generator mode PCSS: Percentage Closering Soft Shadow. benefits from Webgl 2 shadow samplers. Fallback to Poisson Sampling in Webgl 1 Contact Hardening

FILTER_POISSONSAMPLING: 2 = 2

Shadow generator mode Poisson Sampling: Percentage Closer Filtering. (Multiple Tap around evenly distributed around the pixel are used to evaluate the shadow strength)

QUALITY_HIGH: 0 = 0

Reserved for PCF and PCSS Highest Quality.

Execute PCF on a 5*5 kernel improving a lot the shadow aliasing artifacts.

Execute PCSS with 32 taps blocker search and 64 taps PCF.

QUALITY_LOW: 2 = 2

Reserved for PCF and PCSS The lowest quality but the fastest.

Execute PCF on a 1*1 kernel.

Execute PCSS with 16 taps blocker search and 16 taps PCF.

QUALITY_MEDIUM: 1 = 1

Reserved for PCF and PCSS Good tradeoff for quality/perf cross devices

Execute PCF on a 3*3 kernel.

Execute PCSS with 16 taps blocker search and 32 taps PCF.

Accessors

  • get bias(): number
  • set bias(bias: number): void
  • Gets the bias: offset applied on the depth preventing acnea (in light direction).

    Returns number

  • Sets the bias: offset applied on the depth preventing acnea (in light direction).

    Parameters

    • bias: number

    Returns void

  • get blurBoxOffset(): number
  • set blurBoxOffset(value: number): void
  • Gets the blur box offset: offset applied during the blur pass. Only useful if useKernelBlur = false

    Returns number

  • Sets the blur box offset: offset applied during the blur pass. Only useful if useKernelBlur = false

    Parameters

    • value: number

    Returns void

  • get blurKernel(): number
  • set blurKernel(value: number): void
  • Gets the blur kernel: kernel size of the blur pass. Only useful if useKernelBlur = true

    Returns number

  • Sets the blur kernel: kernel size of the blur pass. Only useful if useKernelBlur = true

    Parameters

    • value: number

    Returns void

  • get blurScale(): number
  • set blurScale(value: number): void
  • Gets the blur scale: scale of the blurred texture compared to the main shadow map. 2 means half of the size.

    Returns number

  • Sets the blur scale: scale of the blurred texture compared to the main shadow map. 2 means half of the size.

    Parameters

    • value: number

    Returns void

  • get contactHardeningLightSizeUVRatio(): number
  • set contactHardeningLightSizeUVRatio(contactHardeningLightSizeUVRatio: number): void
  • Gets the Light Size (in shadow map uv unit) used in PCSS to determine the blocker search area and the penumbra size. Using a ratio helps keeping shape stability independently of the map size.

    It does not account for the light projection as it was having too much instability during the light setup or during light position changes.

    Only valid if useContactHardeningShadow is true.

    Returns number

  • Sets the Light Size (in shadow map uv unit) used in PCSS to determine the blocker search area and the penumbra size. Using a ratio helps keeping shape stability independently of the map size.

    It does not account for the light projection as it was having too much instability during the light setup or during light position changes.

    Only valid if useContactHardeningShadow is true.

    Parameters

    • contactHardeningLightSizeUVRatio: number

    Returns void

  • get darkness(): number
  • set darkness(value: number): void
  • Gets or sets the actual darkness of a shadow

    Returns number

  • Gets or sets the actual darkness of a shadow

    Parameters

    • value: number

    Returns void

  • get depthScale(): number
  • set depthScale(value: number): void
  • Gets the depth scale used in ESM mode.

    Returns number

  • Sets the depth scale used in ESM mode. This can override the scale stored on the light.

    Parameters

    • value: number

    Returns void

  • get filter(): number
  • set filter(value: number): void
  • Gets the current mode of the shadow generator (normal, PCF, ESM...). The returned value is a number equal to one of the available mode defined in ShadowMap.FILTER_x like _FILTER_NONE

    Returns number

  • Sets the current mode of the shadow generator (normal, PCF, ESM...). The returned value is a number equal to one of the available mode defined in ShadowMap.FILTER_x like _FILTER_NONE

    Parameters

    • value: number

    Returns void

  • get filteringQuality(): number
  • set filteringQuality(filteringQuality: number): void
  • Gets the PCF or PCSS Quality. Only valid if usePercentageCloserFiltering or usePercentageCloserFiltering is true.

    Returns number

  • Sets the PCF or PCSS Quality. Only valid if usePercentageCloserFiltering or usePercentageCloserFiltering is true.

    Parameters

    • filteringQuality: number

    Returns void

  • get mapSize(): number
  • set mapSize(size: number): void
  • Gets or sets the size of the texture what stores the shadows

    Returns number

  • Gets or sets the size of the texture what stores the shadows

    Parameters

    • size: number

    Returns void

  • get normalBias(): number
  • set normalBias(normalBias: number): void
  • Gets the normalBias: offset applied on the depth preventing acnea (along side the normal direction and proportional to the light/normal angle).

    Returns number

  • Sets the normalBias: offset applied on the depth preventing acnea (along side the normal direction and proportional to the light/normal angle).

    Parameters

    • normalBias: number

    Returns void

  • get transparencyShadow(): boolean
  • set transparencyShadow(value: boolean): void
  • Gets or sets the ability to have transparent shadow

    Returns boolean

  • Gets or sets the ability to have transparent shadow

    Parameters

    • value: boolean

    Returns void

  • get useBlurCloseExponentialShadowMap(): boolean
  • set useBlurCloseExponentialShadowMap(value: boolean): void
  • Gets if the current filter is set to filtered "close ESM" (using the inverse of the exponential to prevent steep falloff artifacts).

    Returns boolean

  • Sets the current filter to filtered "close ESM" (using the inverse of the exponential to prevent steep falloff artifacts).

    Parameters

    • value: boolean

    Returns void

  • get useBlurExponentialShadowMap(): boolean
  • set useBlurExponentialShadowMap(value: boolean): void
  • Gets if the current filter is set to filtered ESM.

    Returns boolean

  • Gets if the current filter is set to filtered ESM.

    Parameters

    • value: boolean

    Returns void

  • get useCloseExponentialShadowMap(): boolean
  • set useCloseExponentialShadowMap(value: boolean): void
  • Gets if the current filter is set to "close ESM" (using the inverse of the exponential to prevent steep falloff artifacts).

    Returns boolean

  • Sets the current filter to "close ESM" (using the inverse of the exponential to prevent steep falloff artifacts).

    Parameters

    • value: boolean

    Returns void

  • get useContactHardeningShadow(): boolean
  • set useContactHardeningShadow(value: boolean): void
  • Gets if the current filter is set to "PCSS" (contact hardening).

    Returns boolean

  • Sets the current filter to "PCSS" (contact hardening).

    Parameters

    • value: boolean

    Returns void

  • get useExponentialShadowMap(): boolean
  • set useExponentialShadowMap(value: boolean): void
  • Gets if the current filter is set to ESM.

    Returns boolean

  • Sets the current filter is to ESM.

    Parameters

    • value: boolean

    Returns void

  • get useKernelBlur(): boolean
  • set useKernelBlur(value: boolean): void
  • Gets whether the blur pass is a kernel blur (if true) or box blur. Only useful in filtered mode (useBlurExponentialShadowMap...)

    Returns boolean

  • Sets whether the blur pass is a kernel blur (if true) or box blur. Only useful in filtered mode (useBlurExponentialShadowMap...)

    Parameters

    • value: boolean

    Returns void

  • get usePercentageCloserFiltering(): boolean
  • set usePercentageCloserFiltering(value: boolean): void
  • Gets if the current filter is set to "PCF" (percentage closer filtering).

    Returns boolean

  • Sets the current filter to "PCF" (percentage closer filtering).

    Parameters

    • value: boolean

    Returns void

  • get usePoissonSampling(): boolean
  • set usePoissonSampling(value: boolean): void
  • Gets if the current filter is set to Poisson Sampling.

    Returns boolean

  • Sets the current filter to Poisson Sampling.

    Parameters

    • value: boolean

    Returns void

Methods

  • Helper function to add a mesh and its descendants to the list of shadow casters.

    Parameters

    • mesh: AbstractMesh

      Mesh to add

    • Optional includeDescendants: boolean

      boolean indicating if the descendants should be added. Default to true

    Returns ShadowGenerator

    the Shadow Generator itself

  • bindShadowLight(lightIndex: string, effect: Effect): void
  • Binds the shadow related information inside of an effect (information like near, far, darkness... defined in the generator but impacting the effect).

    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

  • dispose(): void
  • Disposes the ShadowGenerator. Returns nothing.

    Returns void

  • forceCompilation(onCompiled?: ((generator: IShadowGenerator) => void), options?: Partial<{ useInstances: boolean }>): void
  • Forces all the attached effect to compile to enable rendering only once ready vs. lazily compiling effects.

    Parameters

    • Optional onCompiled: ((generator: IShadowGenerator) => void)

      Callback triggered at the and of the effects compilation

    • Optional options: Partial<{ useInstances: boolean }>

      Sets of optional options forcing the compilation with different modes

    Returns void

  • forceCompilationAsync(options?: Partial<{ useInstances: boolean }>): Promise<void>
  • Forces all the attached effect to compile to enable rendering only once ready vs. lazily compiling effects.

    Parameters

    • Optional options: Partial<{ useInstances: boolean }>

      Sets of optional options forcing the compilation with different modes

    Returns Promise<void>

    A promise that resolves when the compilation completes

  • getClassName(): string
  • Gets the class name of that object

    Returns string

    "ShadowGenerator"

  • getDarkness(): number
  • Returns the darkness value (float). This can only decrease the actual darkness of a shadow. 0 means strongest and 1 would means no shadow.

    Returns number

    the darkness.

  • Returns the associated light object.

    Returns IShadowLight

    the light generating the shadow

  • 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

  • Gets the RTT used during rendering (can be a blurred version of the shadow map or the shadow map itself).

    Returns Nullable<RenderTargetTexture>

    The render target texture if the shadow map is present otherwise, null

  • 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

  • isReady(subMesh: SubMesh, useInstances: boolean, isTransparent: boolean): boolean
  • 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

  • prepareDefines(defines: any, lightIndex: number): void
  • Prepare all the defines in a material relying on a shadow map at the specified light index.

    Parameters

    • defines: any

      Defines of the material we want to update

    • lightIndex: number

      Index of the light in the enabled light list of the material

    Returns void

  • recreateShadowMap(): void
  • 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

  • Helper function to remove a mesh and its descendants from the list of shadow casters

    Parameters

    • mesh: AbstractMesh

      Mesh to remove

    • Optional includeDescendants: boolean

      boolean indicating if the descendants should be removed. Default to true

    Returns ShadowGenerator

    the Shadow Generator itself

  • serialize(): any
  • Serializes the shadow generator setup to a json object.

    Returns any

    The serialized JSON object

  • Sets the darkness value (float). This can only decrease the actual darkness of a shadow.

    Parameters

    • darkness: number

      The darkness value 0 means strongest and 1 would means no shadow.

    Returns ShadowGenerator

    the shadow generator allowing fluent coding.

  • Sets the ability to have transparent shadow (boolean).

    Parameters

    • transparent: boolean

      True if transparent else False

    Returns ShadowGenerator

    the shadow generator allowing fluent coding

Legend

  • Constructor
  • Property
  • Method
  • Accessor
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Property
  • Method
  • Static property
  • Static method

Settings

Theme