• Public
  • Public/Protected
  • All

Plugin that implements the clear coat component of the PBR material





bumpTexture: Nullable<BaseTexture>

Define the clear coat specific bump texture.

indexOfRefraction: number

Defines the index of refraction of the clear coat. This defaults to 1.5 corresponding to a 0.04 f0 or a 4% reflectance at normal incidence The default fits with a polyurethane material. Changing the default value is more performance intensive.

intensity: number

Defines the clear coat layer strength (between 0 and 1) it defaults to 1.

isEnabled: boolean

Defines if the clear coat is enabled in the material.

isTintEnabled: boolean

Defines if the clear coat tint is enabled in the material.

markAllDefinesAsDirty: (() => void)

Type declaration

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

      Returns void

name: string

Defines the name of the plugin

priority: number

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

registerForExtraEvents: boolean

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

remapF0OnInterfaceChange: boolean

Defines if the F0 value should be remapped to account for the interface change in the material.

resolveIncludes: boolean

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

roughness: number

Defines the clear coat layer roughness.

Stores the clear coat values in a texture (red channel is intensity and green channel is roughness) If useRoughnessFromMainTexture is false, the green channel of texture is not used and the green channel of textureRoughness is used instead if textureRoughness is not empty, else no texture roughness is used

textureRoughness: Nullable<BaseTexture>

Stores the clear coat roughness in a texture (green channel) Not used if useRoughnessFromMainTexture is true

tintColor: Color3

Defines the clear coat tint of the material. This is only use if tint is enabled

tintColorAtDistance: number

Defines the distance at which the tint color should be found in the clear coat media. This is only use if tint is enabled

tintTexture: Nullable<BaseTexture>

Stores the clear tint values in a texture. rgb is tint a is a thickness factor

tintThickness: number

Defines the clear coat layer thickness. This is only use if tint is enabled

useRoughnessFromMainTexture: boolean

Indicates that the green channel of the texture property will be used for roughness (default: true) If false, the green channel from textureRoughness is used for roughness


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


    • defines: MaterialClearCoatDefines
    • fallbacks: EffectFallbacks
    • currentRank: number

    Returns number

    the new fallback rank.

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


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


    Returns void

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


    • Optional forceDisposeTextures: boolean

    Returns void

  • Gets the attributes used by the plugin.


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


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


    • samplers: string[]

    Returns void

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


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


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


    Returns boolean

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


    • defines: MaterialClearCoatDefines
    • scene: Scene
    • engine: Engine

    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.


    • 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: MaterialClearCoatDefines, scene: Scene): void
  • Sets the defines for the next rendering. Called before MaterialHelper.PrepareDefinesForAttributes is called.


    • defines: MaterialClearCoatDefines
    • scene: Scene

    Returns void

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

    Returns any

    • An object with the serialized config.


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