Options
All
  • Public
  • Public/Protected
  • All
Menu

Plugin that implements the sub surface component of the PBR material

Hierarchy

Index

Constructors

Properties

diffusionDistance: Color3

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

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))

invertRefractionY: boolean

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

isRefractionEnabled: boolean

Defines if the refraction is enabled in the material.

isScatteringEnabled: boolean

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

isTranslucencyEnabled: boolean

Defines if the translucency is enabled in the material.

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.

markAllDefinesAsDirty: (() => void)

Type declaration

    • (): void
    • Helper function to mark defines as being dirty.

      Returns void

maximumThickness: number

Defines the maximum thickness stored in the thickness map.

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.

name: string

Defines the name of the plugin

priority: number

Defines the priority of the plugin. Lower numbers run first.

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.

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.
refractionTexture: Nullable<BaseTexture>

Defines the texture to use for refraction.

registerForExtraEvents: boolean

Indicates that this plugin should be notified for the extra events (HasRenderTargetTextures / FillRenderTargetTextures / HardBindForSubMesh)

resolveIncludes: boolean

Indicates that any #include directive in the plugin code must be replaced by the corresponding code.

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.

tintColor: Color3

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

tintColorAtDistance: number

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

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.

translucencyIntensityTexture: Nullable<BaseTexture>

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

  • the blue channel is the translucency intensity.
useAlbedoToTintRefraction: boolean

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

useAlbedoToTintTranslucency: boolean

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

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
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.
useThicknessAsDepth: boolean

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

Accessors

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

    Returns boolean

  • 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 void

  • get volumeIndexOfRefraction(): number
  • set volumeIndexOfRefraction(value: number): void
  • 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 void

Methods

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

    Parameters

    • defines: MaterialSubSurfaceDefines
    • fallbacks: EffectFallbacks
    • currentRank: number

    Returns number

    the new fallback rank.

  • collectDefines(defines: {}): void
  • Collects all defines.

    Parameters

    • defines: {}

      The object to append to.

      • [name: string]: { default: any; type: string }
        • default: any
        • type: string

    Returns void

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

    Parameters

    Returns void

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

    Parameters

    • Optional forceDisposeTextures: boolean

    Returns void

  • Gets the attributes used by the plugin.

    Parameters

    • attributes: string[]

      list that the attribute names should be added to.

    • scene: Scene

      the scene that the material belongs to.

    • mesh: AbstractMesh

      the mesh being rendered.

    Returns void

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

    Returns string

    The class name.

  • getCustomCode(shaderType: string): Nullable<{}>
  • Returns a list of custom shader code fragments to customize the shader.

    Parameters

    • shaderType: string

      "vertex" or "fragment"

    Returns Nullable<{}>

    null if no code to be added, or a list of pointName => code. Note that pointName can also be a regular expression if it starts with a !. In that case, the string found by the regular expression (if any) will be replaced by the code provided.

  • getSamplers(samplers: string[]): void
  • Gets the samplers used by the plugin.

    Parameters

    • samplers: string[]

    Returns void

  • getUniformBuffersNames(ubos: string[]): void
  • Gets the uniform buffers names added by the plugin.

    Parameters

    • ubos: string[]

      list that the ubo names should be added to.

    Returns void

  • getUniforms(): { fragment?: string; ubo?: { name: string; size: number; type: string }[]; vertex?: string }
  • Gets the description of the uniforms to add to the ubo (if engine supports ubos) or to inject directly in the vertex/fragment shaders (if engine does not support ubos)

    Returns { fragment?: string; ubo?: { name: string; size: number; type: string }[]; vertex?: string }

    the description of the uniforms

    • Optional fragment?: string
    • Optional ubo?: { name: string; size: number; type: string }[]
    • Optional vertex?: string
  • Binds the material data (this function is called even if mustRebind() returns false)

    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.

    • subMesh: SubMesh

      the submesh to bind data for

    Returns void

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

    Returns boolean

    true if this uses a render target otherwise false.

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

    Parameters

    Returns boolean

    • Boolean specifying if a texture is used in the material.
  • isReadyForSubMesh(defines: MaterialSubSurfaceDefines, scene: Scene): boolean
  • Specifies that the submesh is ready to be used.

    Parameters

    • defines: MaterialSubSurfaceDefines
    • scene: Scene

    Returns boolean

    • boolean indicating that the submesh is ready or not.
  • parse(source: any, scene: Scene, rootUrl: string): void
  • Parses a plugin 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

  • prepareDefinesBeforeAttributes(defines: MaterialSubSurfaceDefines, scene: Scene): void
  • Sets the defines for the next rendering. Called before MaterialHelper.PrepareDefinesForAttributes is called.

    Parameters

    • defines: MaterialSubSurfaceDefines
    • scene: Scene

    Returns void

  • serialize(): any
  • Serializes this plugin configuration.

    Returns any

    • An object with the serialized config.

Legend

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

Settings

Theme