Options
All
  • Public
  • Public/Protected
  • All
Menu

Class PBRSubSurfaceConfiguration

Define the code related to the sub surface parameters of the pbr material.

Hierarchy

  • PBRSubSurfaceConfiguration

Index

Constructors

constructor

  • Instantiate a new instance of sub surface configuration.

    Parameters

    • markAllSubMeshesAsTexturesDirty: () => void

      Callback to flag the material to dirty

        • (): void
        • Returns void

    • markScenePrePassDirty: () => void

      Callback to flag the scene as prepass dirty

        • (): void
        • Returns void

    • scene: Scene

      The scene

    Returns PBRSubSurfaceConfiguration

Properties

diffusionDistanceSearch playground for diffusionDistance

diffusionDistance: Color3

Defines how far each channel transmit through the media. It is defined as a color to simplify it selection.

indexOfRefractionSearch playground for indexOfRefraction

indexOfRefraction: number

Index of refraction of the material base layer. https://en.wikipedia.org/wiki/List_of_refractive_indices

This does not only impact refraction but also the Base F0 of Dielectric Materials.

From dielectric fresnel rules: F0 = square((iorT - iorI) / (iorT + iorI))

invertRefractionYSearch playground for invertRefractionY

invertRefractionY: boolean

Controls if refraction needs to be inverted on Y. This could be useful for procedural texture.

isRefractionEnabledSearch playground for isRefractionEnabled

isRefractionEnabled: boolean

Defines if the refraction is enabled in the material.

isScatteringEnabledSearch playground for isScatteringEnabled

isScatteringEnabled: boolean

Defines if the sub surface scattering is enabled in the material.

isTranslucencyEnabledSearch playground for isTranslucencyEnabled

isTranslucencyEnabled: boolean

Defines if the translucency is enabled in the material.

linkRefractionWithTransparencySearch playground for linkRefractionWithTransparency

linkRefractionWithTransparency: boolean

This parameters will make the material used its opacity to control how much it is refracting against not. Materials half opaque for instance using refraction could benefit from this control.

maximumThicknessSearch playground for maximumThickness

maximumThickness: number

Defines the maximum thickness stored in the thickness map.

minimumThicknessSearch playground for minimumThickness

minimumThickness: number

Defines the minimum thickness stored in the thickness map. If no thickness map is defined, this value will be used to simulate thickness.

refractionIntensitySearch playground for refractionIntensity

refractionIntensity: number

Defines the refraction intensity of the material. The refraction when enabled replaces the Diffuse part of the material. The intensity helps transitioning between diffuse and refraction.

refractionIntensityTextureSearch playground for refractionIntensityTexture

refractionIntensityTexture: Nullable<BaseTexture>

Stores the intensity of the refraction. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture

  • the green (red if useGltfStyleTextures = true) channel is the refraction intensity.

refractionTextureSearch playground for refractionTexture

refractionTexture: Nullable<BaseTexture>

Defines the texture to use for refraction.

thicknessTextureSearch playground for thicknessTexture

thicknessTexture: Nullable<BaseTexture>

Stores the average thickness of a mesh in a texture (The texture is holding the values linearly). The red (or green if useGltfStyleTextures=true) channel of the texture should contain the thickness remapped between 0 and 1. 0 would mean minimumThickness 1 would mean maximumThickness The other channels might be use as a mask to vary the different effects intensity.

tintColorSearch playground for tintColor

tintColor: Color3

Defines the volume tint of the material. This is used for both translucency and scattering.

tintColorAtDistanceSearch playground for tintColorAtDistance

tintColorAtDistance: number

Defines the distance at which the tint color should be found in the media. This is used for refraction only.

translucencyIntensitySearch playground for translucencyIntensity

translucencyIntensity: number

Defines the translucency intensity of the material. When translucency has been enabled, this defines how much of the "translucency" is added to the diffuse part of the material.

translucencyIntensityTextureSearch playground for translucencyIntensityTexture

translucencyIntensityTexture: Nullable<BaseTexture>

Stores the intensity of the translucency. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture

  • the blue channel is the translucency intensity.

useAlbedoToTintRefractionSearch playground for useAlbedoToTintRefraction

useAlbedoToTintRefraction: boolean

When enabled, transparent surfaces will be tinted with the albedo colour (independent of thickness)

useAlbedoToTintTranslucencySearch playground for useAlbedoToTintTranslucency

useAlbedoToTintTranslucency: boolean

When enabled, translucent surfaces will be tinted with the albedo colour (independent of thickness)

useGltfStyleTexturesSearch playground for useGltfStyleTextures

useGltfStyleTextures: boolean

Use channels layout used by glTF:

  • thicknessTexture: the green (instead of red) channel is the thickness
  • thicknessTexture/refractionIntensityTexture: the red (instead of green) channel is the refraction intensity
  • thicknessTexture/translucencyIntensityTexture: no change, use the blue channel for the translucency intensity

useMaskFromThicknessTextureSearch playground for useMaskFromThicknessTexture

useMaskFromThicknessTexture: boolean

Stores the intensity of the different subsurface effects in the thickness texture. Note that if refractionIntensityTexture and/or translucencyIntensityTexture is provided it takes precedence over thicknessTexture + useMaskFromThicknessTexture

  • the green (red if useGltfStyleTextures = true) channel is the refraction intensity.
  • the blue channel is the translucency intensity.

useThicknessAsDepthSearch playground for useThicknessAsDepth

useThicknessAsDepth: boolean

Defines that the thickness should be used as a measure of the depth volume.

Accessors

disableAlphaBlending

  • get disableAlphaBlending(): boolean
  • Returns true if alpha blending should be disabled.

    Returns boolean

scatteringDiffusionProfile

  • Diffusion profile for subsurface scattering. Useful for better scattering in the skins or foliages.

    Returns Nullable<Color3>

  • Diffusion profile for subsurface scattering. Useful for better scattering in the skins or foliages.

    Parameters

    Returns any

volumeIndexOfRefraction

  • get volumeIndexOfRefraction(): number
  • set volumeIndexOfRefraction(value: number): any
  • Index of refraction of the material's volume. https://en.wikipedia.org/wiki/List_of_refractive_indices

    This ONLY impacts refraction. If not provided or given a non-valid value, the volume will use the same IOR as the surface.

    Returns number

  • Index of refraction of the material's volume. https://en.wikipedia.org/wiki/List_of_refractive_indices

    This ONLY impacts refraction. If not provided or given a non-valid value, the volume will use the same IOR as the surface.

    Parameters

    • value: number

    Returns any

Methods

bindForSubMeshSearch playground for bindForSubMesh

  • bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, isFrozen: boolean, lodBasedMicrosurface: boolean, realTimeFiltering: boolean, subMesh: SubMesh): void
  • Binds the material data.

    Parameters

    • uniformBuffer: UniformBuffer

      defines the Uniform buffer to fill in.

    • scene: Scene

      defines the scene the material belongs to.

    • engine: Engine

      defines the engine the material belongs to.

    • isFrozen: boolean

      defines whether the material is frozen or not.

    • lodBasedMicrosurface: boolean

      defines whether the material relies on lod based microsurface or not.

    • realTimeFiltering: boolean

      defines whether the textures should be filtered on the fly.

    • subMesh: SubMesh

      the submesh to bind data for

    Returns void

copyToSearch playground for copyTo

  • Makes a duplicate of the current configuration into another one.

    Parameters

    Returns void

disposeSearch playground for dispose

  • dispose(forceDisposeTextures?: boolean): void
  • Disposes the resources of the material.

    Parameters

    • Optional forceDisposeTextures: boolean

      Forces the disposal of all textures.

    Returns void

fillRenderTargetTexturesSearch playground for fillRenderTargetTextures

  • Fills the list of render target textures.

    Parameters

    Returns void

getActiveTexturesSearch playground for getActiveTextures

  • getActiveTextures(activeTextures: BaseTexture[]): void
  • Returns an array of the actively used textures.

    Parameters

    Returns void

getAnimatablesSearch playground for getAnimatables

  • Returns the animatable textures.

    Parameters

    • animatables: IAnimatable[]

      Array of animatable textures.

    Returns void

getClassNameSearch playground for getClassName

  • getClassName(): string
  • Get the current class name of the texture useful for serialization or dynamic coding.

    Returns string

    "PBRSubSurfaceConfiguration"

hasRenderTargetTexturesSearch playground for hasRenderTargetTextures

  • hasRenderTargetTextures(): boolean
  • Gets a boolean indicating that current material needs to register RTT

    Returns boolean

    true if this uses a render target otherwise false.

hasTextureSearch playground for hasTexture

  • Checks to see if a texture is used in the material.

    Parameters

    Returns boolean

    • Boolean specifying if a texture is used in the material.

isReadyForSubMeshSearch playground for isReadyForSubMesh

  • isReadyForSubMesh(defines: IMaterialSubSurfaceDefines, scene: Scene): boolean
  • Gets whether the submesh is ready to be used or not.

    Parameters

    • defines: IMaterialSubSurfaceDefines

      the list of "defines" to update.

    • scene: Scene

      defines the scene the material belongs to.

    Returns boolean

    • boolean indicating that the submesh is ready or not.

parseSearch playground for parse

  • parse(source: any, scene: Scene, rootUrl: string): void
  • Parses a anisotropy Configuration from a serialized object.

    Parameters

    • source: any

      Serialized object.

    • scene: Scene

      Defines the scene we are parsing for

    • rootUrl: string

      Defines the rootUrl to load from

    Returns void

prepareDefinesSearch playground for prepareDefines

  • prepareDefines(defines: IMaterialSubSurfaceDefines, scene: Scene): void
  • Checks to see if a texture is used in the material.

    Parameters

    • defines: IMaterialSubSurfaceDefines

      the list of "defines" to update.

    • scene: Scene

      defines the scene to the material belongs to.

    Returns void

serializeSearch playground for serialize

  • serialize(): any
  • Serializes this Sub Surface configuration.

    Returns any

    • An object with the serialized config.

unbindSearch playground for unbind

  • unbind(activeEffect: Effect): boolean
  • Unbinds the material from the mesh.

    Parameters

    • activeEffect: Effect

      defines the effect that should be unbound from.

    Returns boolean

    true if unbound, otherwise false

Static AddFallbacksSearch playground for AddFallbacks

  • AddFallbacks(defines: IMaterialSubSurfaceDefines, fallbacks: EffectFallbacks, currentRank: number): number
  • Add fallbacks to the effect fallbacks list.

    Parameters

    • defines: IMaterialSubSurfaceDefines

      defines the Base texture to use.

    • fallbacks: EffectFallbacks

      defines the current fallback list.

    • currentRank: number

      defines the current fallback rank.

    Returns number

    the new fallback rank.

Static AddSamplersSearch playground for AddSamplers

  • AddSamplers(samplers: string[]): void
  • Add the required samplers to the current list.

    Parameters

    • samplers: string[]

      defines the current sampler list.

    Returns void

Static AddUniformsSearch playground for AddUniforms

  • AddUniforms(uniforms: string[]): void
  • Add the required uniforms to the current list.

    Parameters

    • uniforms: string[]

      defines the current uniform list.

    Returns void

Static PrepareUniformBufferSearch playground for PrepareUniformBuffer

  • Add the required uniforms to the current buffer.

    Parameters

    • uniformBuffer: UniformBuffer

      defines the current uniform buffer.

    Returns void

Legend

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