NodeMaterial

Class used to create a node based material built by assembling shader blocks

Hierarchy

  • PushMaterial
    • NodeMaterial

Implements

Index

Constructors

Properties

Accessors

Methods

Constructors

constructor

Find examples in Playground
  • Create a new node based material

    Parameters

    • name: string

      defines the material name

    • Optional scene: Scene

      defines the hosting scene

    • Optional options: Partial<INodeMaterialOptions>

      defines creation option

    Returns NodeMaterial

Properties

_fragmentOutputNodes

Find examples in Playground
_fragmentOutputNodes: NodeMaterialBlock[]

Gets or sets the root nodes of the material fragment (pixel) shader

_vertexOutputNodes

Find examples in Playground
_vertexOutputNodes: NodeMaterialBlock[]

Gets or sets the root nodes of the material vertex shader

allowShaderHotSwapping

Find examples in Playground
allowShaderHotSwapping: boolean

Gets or sets a boolean indicating that the material is allowed (if supported) to do shader hot swapping. This means that the material can keep using a previous shader while a new one is being compiled. This is mostly used when shader parallel compilation is supported (true by default)

animations

Find examples in Playground
animations: Nullable<Array<Animation>>

Stores the animations for the material

attachedBlocks

Find examples in Playground
attachedBlocks: NodeMaterialBlock[]

Gets an array of blocks that needs to be serialized even if they are not yet connected

checkReadyOnEveryCall

Find examples in Playground
checkReadyOnEveryCall: boolean

Specifies if the ready state should be checked on each call

checkReadyOnlyOnce

Find examples in Playground
checkReadyOnlyOnce: boolean

Specifies if the ready state should be checked once

customShaderNameResolve

Find examples in Playground
customShaderNameResolve: function

Custom callback helping to override the default shader used in the material.

Type declaration

depthFunction

Find examples in Playground
depthFunction: number

Specifies the depth function that should be used. 0 means the default engine function

disableColorWrite

Find examples in Playground
disableColorWrite: boolean

Specifies if color writing should be disabled

disableDepthWrite

Find examples in Playground
disableDepthWrite: boolean

Specifies if depth writing should be disabled

doNotSerialize

Find examples in Playground
doNotSerialize: boolean

Specifies if the material should be serialized

editorData

Find examples in Playground
editorData: any

Gets or sets data used by visual editor

see

https://nme.babylonjs.com

forceDepthWrite

Find examples in Playground
forceDepthWrite: boolean

Specifies if depth writing should be forced

getRenderTargetTextures

Find examples in Playground
getRenderTargetTextures: Nullable<function>

Callback triggered to get the render target textures

id

Find examples in Playground
id: string

The ID of the material

ignoreAlpha

Find examples in Playground
ignoreAlpha: boolean

Gets or sets a boolean indicating that alpha value must be ignored (This will turn alpha blending off even if an alpha value is produced by the material)

inspectableCustomProperties

Find examples in Playground
inspectableCustomProperties: IInspectable[]

List of inspectable custom properties (used by the Inspector)

see

https://doc.babylonjs.com/how_to/debug_layer#extensibility

maxSimultaneousLights

Find examples in Playground
maxSimultaneousLights: number

Defines the maximum number of lights that can be used in the material

metadata

Find examples in Playground
metadata: any

Gets or sets user defined metadata

name

Find examples in Playground
name: string

The name of the material

onBuildObservable

Find examples in Playground
onBuildObservable: Observable<NodeMaterial>

Observable raised when the material is built

onCompiled

Find examples in Playground
onCompiled: Nullable<function>

Callback triggered when the material is compiled

onDisposeObservable

Find examples in Playground
onDisposeObservable: Observable<Material>

An event triggered when the material is disposed

onError

Find examples in Playground
onError: Nullable<function>

Callback triggered when an error occurs

pointSize

Find examples in Playground
pointSize: number

Stores the size of points

reservedDataStore

Find examples in Playground
reservedDataStore: any

For internal use only. Please do not use.

separateCullingPass

Find examples in Playground
separateCullingPass: boolean

Specifies if there should be a separate pass for culling

shadowDepthWrapper

Find examples in Playground
shadowDepthWrapper: Nullable<ShadowDepthWrapper>

Custom shadow depth material to use for shadow rendering instead of the in-built one

sideOrientation

Find examples in Playground
sideOrientation: number

Stores the value for side orientation

snippetId

Find examples in Playground
snippetId: string

Snippet ID if the material was created from the snippet server

state

Find examples in Playground
state: string

The state of the material

uniqueId

Find examples in Playground
uniqueId: number

Gets or sets the unique id of the material

zOffset

Find examples in Playground
zOffset: number

Stores the z offset value

Static Readonly AllDirtyFlag

Find examples in Playground
AllDirtyFlag: number

The all dirty flag value

Static Readonly AttributesDirtyFlag

Find examples in Playground
AttributesDirtyFlag: number

The dirty attribute flag value

Static Readonly ClockWiseSideOrientation

Find examples in Playground
ClockWiseSideOrientation: number

Stores the clock-wise side orientation

Static Readonly CounterClockWiseSideOrientation

Find examples in Playground
CounterClockWiseSideOrientation: number

Stores the counter clock-wise side orientation

Static EditorURL

Find examples in Playground
EditorURL: string

Define the Url to load node editor script

Static Readonly FresnelDirtyFlag

Find examples in Playground
FresnelDirtyFlag: number

The dirty fresnel flag value

Static IgnoreTexturesAtLoadTime

Find examples in Playground
IgnoreTexturesAtLoadTime: boolean

Gets or sets a boolean indicating that node materials should not deserialize textures from json / snippet content

Static Readonly LightDirtyFlag

Find examples in Playground
LightDirtyFlag: number

The dirty light flag value

Static Readonly LineListDrawMode

Find examples in Playground
LineListDrawMode: number

Returns the line list draw mode

Static Readonly LineLoopDrawMode

Find examples in Playground
LineLoopDrawMode: number

Returns the line loop draw mode

Static Readonly LineStripDrawMode

Find examples in Playground
LineStripDrawMode: number

Returns the line strip draw mode

Static Readonly MATERIAL_ALPHABLEND

Find examples in Playground
MATERIAL_ALPHABLEND: number

MaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.

Static Readonly MATERIAL_ALPHATEST

Find examples in Playground
MATERIAL_ALPHATEST: number

MaterialTransparencyMode: Alpha Test mode, pixel are discarded below a certain threshold defined by the alpha cutoff value.

Static Readonly MATERIAL_ALPHATESTANDBLEND

Find examples in Playground
MATERIAL_ALPHATESTANDBLEND: number

MaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer. They are also discarded below the alpha cutoff threshold to improve performances.

Static Readonly MATERIAL_NORMALBLENDMETHOD_RNM

Find examples in Playground
MATERIAL_NORMALBLENDMETHOD_RNM: number

The Reoriented Normal Mapping method is used to blend normals. Details of the algorithm can be found here: https://blog.selfshadow.com/publications/blending-in-detail/

Static Readonly MATERIAL_NORMALBLENDMETHOD_WHITEOUT

Find examples in Playground
MATERIAL_NORMALBLENDMETHOD_WHITEOUT: number

The Whiteout method is used to blend normals. Details of the algorithm can be found here: https://blog.selfshadow.com/publications/blending-in-detail/

Static Readonly MATERIAL_OPAQUE

Find examples in Playground
MATERIAL_OPAQUE: number

MaterialTransparencyMode: No transparency mode, Alpha channel is not use.

Static Readonly MiscDirtyFlag

Find examples in Playground
MiscDirtyFlag: number

The dirty misc flag value

Static Readonly PointFillMode

Find examples in Playground
PointFillMode: number

Returns the point fill mode

Static Readonly PointListDrawMode

Find examples in Playground
PointListDrawMode: number

Returns the point list draw mode

Static Readonly PrePassDirtyFlag

Find examples in Playground
PrePassDirtyFlag: number

The dirty prepass flag value

Static SnippetUrl

Find examples in Playground
SnippetUrl: string

Define the Url to load snippets

Static Readonly TextureDirtyFlag

Find examples in Playground
TextureDirtyFlag: number

The dirty texture flag value

Static Readonly TriangleFanDrawMode

Find examples in Playground
TriangleFanDrawMode: number

Returns the triangle fan draw mode

Static Readonly TriangleFillMode

Find examples in Playground
TriangleFillMode: number

Returns the triangle fill mode

Static Readonly TriangleStripDrawMode

Find examples in Playground
TriangleStripDrawMode: number

Returns the triangle strip draw mode

Static Readonly WireFrameFillMode

Find examples in Playground
WireFrameFillMode: number

Returns the wireframe mode

Accessors

alpha

Find examples in Playground
  • get alpha(): number
  • set alpha(value: number): any
  • Gets the alpha value of the material

    Returns number

  • Sets the alpha value of the material

    Parameters

    • value: number

    Returns any

alphaMode

Find examples in Playground
  • get alphaMode(): number
  • set alphaMode(value: number): any
  • Gets the value of the alpha mode

    Value Type Description
    0 ALPHA_DISABLE
    1 ALPHA_ADD
    2 ALPHA_COMBINE
    3 ALPHA_SUBTRACT
    4 ALPHA_MULTIPLY
    5 ALPHA_MAXIMIZED
    6 ALPHA_ONEONE
    7 ALPHA_PREMULTIPLIED
    8 ALPHA_PREMULTIPLIED_PORTERDUFF
    9 ALPHA_INTERPOLATE
    10 ALPHA_SCREENMODE

    Returns number

  • Sets the value of the alpha mode.

    Value Type Description
    0 ALPHA_DISABLE
    1 ALPHA_ADD
    2 ALPHA_COMBINE
    3 ALPHA_SUBTRACT
    4 ALPHA_MULTIPLY
    5 ALPHA_MAXIMIZED
    6 ALPHA_ONEONE
    7 ALPHA_PREMULTIPLIED
    8 ALPHA_PREMULTIPLIED_PORTERDUFF
    9 ALPHA_INTERPOLATE
    10 ALPHA_SCREENMODE

    Parameters

    • value: number

    Returns any

backFaceCulling

Find examples in Playground
  • get backFaceCulling(): boolean
  • set backFaceCulling(value: boolean): any

canRenderToMRT

Find examples in Playground
  • get canRenderToMRT(): boolean

compiledShaders

Find examples in Playground
  • get compiledShaders(): string
  • Get a string representing the shaders built by the current node graph

    Returns string

fillMode

Find examples in Playground
  • get fillMode(): number
  • set fillMode(value: number): any

fogEnabled

Find examples in Playground
  • get fogEnabled(): boolean
  • set fogEnabled(value: boolean): any

hasRenderTargetTextures

Find examples in Playground
  • get hasRenderTargetTextures(): boolean

imageProcessingConfiguration

Find examples in Playground
  • Gets the image processing configuration used either in this material.

    If sets to null, the scene one is in use.

    Returns ImageProcessingConfiguration

  • Sets the Default image processing configuration used either in the this material.

    If sets to null, the scene one is in use.

    Parameters

    Returns any

isFrozen

Find examples in Playground
  • get isFrozen(): boolean

mode

Find examples in Playground

needDepthPrePass

Find examples in Playground
  • get needDepthPrePass(): boolean
  • set needDepthPrePass(value: boolean): any

onBind

Find examples in Playground
  • set onBind(callback: function): any

onBindObservable

Find examples in Playground

onDispose

Find examples in Playground
  • set onDispose(callback: function): any
  • Called during a dispose event

    Parameters

    • callback: function
        • (): void
        • Returns void

    Returns any

onEffectCreatedObservable

Find examples in Playground
  • get onEffectCreatedObservable(): Observable<object>

onUnBindObservable

Find examples in Playground

options

Find examples in Playground
  • Gets or sets options to control the node material overall behavior

    Returns INodeMaterialOptions

  • Gets or sets options to control the node material overall behavior

    Parameters

    Returns any

pointsCloud

Find examples in Playground
  • get pointsCloud(): boolean
  • set pointsCloud(value: boolean): any

transparencyMode

Find examples in Playground
  • get transparencyMode(): Nullable<number>
  • set transparencyMode(value: Nullable<number>): any
  • Gets the current transparency mode.

    Value Type Description
    0 OPAQUE
    1 ALPHATEST
    2 ALPHABLEND
    3 ALPHATESTANDBLEND

    Returns Nullable<number>

  • Sets the transparency mode of the material.

    Value Type Description
    0 OPAQUE
    1 ALPHATEST
    2 ALPHABLEND
    3 ALPHATESTANDBLEND

    Parameters

    Returns any

wireframe

Find examples in Playground
  • get wireframe(): boolean
  • set wireframe(value: boolean): any

Methods

addOutputNode

Find examples in Playground
  • Add a new block to the list of output nodes

    Parameters

    Returns this

    the current material

bind

Find examples in Playground
  • Parameters

    Returns void

bindForSubMesh

Find examples in Playground
  • Binds the submesh to this material by preparing the effect and shader to draw

    Parameters

    • world: Matrix

      defines the world transformation matrix

    • mesh: Mesh

      defines the mesh containing the submesh

    • subMesh: SubMesh

      defines the submesh to bind the material to

    Returns void

bindOnlyNormalMatrix

Find examples in Playground
  • bindOnlyNormalMatrix(normalMatrix: Matrix): void
  • Binds the given normal matrix to the active effect

    Parameters

    • normalMatrix: Matrix

      the matrix to bind

    Returns void

bindOnlyWorldMatrix

Find examples in Playground
  • bindOnlyWorldMatrix(world: Matrix): void
  • Binds the world matrix to the material

    Parameters

    • world: Matrix

      defines the world transformation matrix

    Returns void

bindSceneUniformBuffer

Find examples in Playground

bindView

Find examples in Playground
  • bindView(effect: Effect): void
  • Binds the view matrix to the effect

    Parameters

    • effect: Effect

      defines the effect to bind the view matrix to

    Returns void

bindViewProjection

Find examples in Playground
  • bindViewProjection(effect: Effect): void
  • Binds the view projection matrix to the effect

    Parameters

    • effect: Effect

      defines the effect to bind the view projection matrix to

    Returns void

build

Find examples in Playground
  • build(verbose?: boolean): void
  • Build the material and generates the inner effect

    Parameters

    • Optional verbose: boolean

      defines if the build should log activity

    Returns void

clear

Find examples in Playground
  • clear(): void
  • Clear the current material

    Returns void

clone

Find examples in Playground
  • Makes a duplicate of the current material.

    Parameters

    • name: string

      name to use for the new material.

    Returns NodeMaterial

createEffectForParticles

Find examples in Playground
  • createEffectForParticles(particleSystem: IParticleSystem, onCompiled?: function, onError?: function): void
  • Create the effect to be used as the custom effect for a particle system

    Parameters

    • particleSystem: IParticleSystem

      Particle system to create the effect for

    • Optional onCompiled: function

      defines a function to call when the effect creation is successful

        • Parameters

          Returns void

    • Optional onError: function

      defines a function to call when the effect creation has failed

        • (effect: Effect, errors: string): void
        • Parameters

          • effect: Effect
          • errors: string

          Returns void

    Returns void

createEffectForPostProcess

Find examples in Playground
  • createEffectForPostProcess(postProcess: PostProcess): void
  • Create the post process effect from the material

    Parameters

    • postProcess: PostProcess

      The post process to create the effect for

    Returns void

createPostProcess

Find examples in Playground
  • Create a post process from the material

    Parameters

    • camera: Nullable<Camera>

      The camera to apply the render pass to.

    • Optional options: number | PostProcessOptions

      The required width/height ratio to downsize to before computing the render pass. (Use 1.0 for full size)

    • Optional samplingMode: number

      The sampling mode to be used when computing the pass. (default: 0)

    • Optional engine: Engine

      The engine which the post process will be applied. (default: current engine)

    • Optional reusable: boolean

      If the post process can be reused on the same frame. (default: false)

    • Optional textureType: number

      Type of textures used when performing the post process. (default: 0)

    • Optional textureFormat: number

      Format of textures used when performing the post process. (default: TEXTUREFORMAT_RGBA)

    Returns Nullable<PostProcess>

    the post process created

createProceduralTexture

Find examples in Playground
  • Create a new procedural texture based on this node material

    Parameters

    • size: number | object

      defines the size of the texture

    • scene: Scene

      defines the hosting scene

    Returns Nullable<ProceduralTexture>

    the new procedural texture attached to this node material

dispose

Find examples in Playground
  • dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean, notBoundToMesh?: boolean): void
  • Disposes the material

    Parameters

    • Optional forceDisposeEffect: boolean

      specifies if effects should be forcefully disposed

    • Optional forceDisposeTextures: boolean

      specifies if textures should be forcefully disposed

    • Optional notBoundToMesh: boolean

      specifies if the material that is being disposed is known to be not bound to any mesh

    Returns void

edit

Find examples in Playground
  • Launch the node material editor

    Parameters

    Returns Promise<void>

    a promise fulfilled when the node editor is visible

forceCompilation

Find examples in Playground
  • Force shader compilation

    Parameters

    • mesh: AbstractMesh

      defines the mesh associated with this material

    • Optional onCompiled: function

      defines a function to execute once the material is compiled

    • Optional options: Partial<IMaterialCompilationOptions>

      defines the options to configure the compilation

    • Optional onError: function

      defines a function to execute if the material fails compiling

        • (reason: string): void
        • Parameters

          • reason: string

          Returns void

    Returns void

forceCompilationAsync

Find examples in Playground

freeze

Find examples in Playground
  • freeze(): void

generateCode

Find examples in Playground
  • generateCode(): string
  • Generate a string containing the code declaration required to create an equivalent of this material

    Returns string

    a string

getActiveTextures

Find examples in Playground
  • Gets the active textures from the material

    Returns BaseTexture[]

    an array of textures

getAlphaTestTexture

Find examples in Playground

getBindedMeshes

Find examples in Playground

getBlockByName

Find examples in Playground
  • Get a block by its name

    Parameters

    • name: string

      defines the name of the block to retrieve

    Returns Nullable<NodeMaterialBlock>

    the required block or null if not found

getBlockByPredicate

Find examples in Playground

getClassName

Find examples in Playground
  • getClassName(): string
  • Gets the current class name of the material e.g. "NodeMaterial"

    Returns string

    the class name

getEffect

Find examples in Playground

getInputBlockByPredicate

Find examples in Playground
  • Get an input block by its name

    Parameters

    • predicate: function

      defines the predicate used to find the good candidate

    Returns Nullable<InputBlock>

    the required input block or null if not found

getInputBlocks

Find examples in Playground
  • Gets the list of input blocks attached to this material

    Returns InputBlock[]

    an array of InputBlocks

getScene

Find examples in Playground

getTextureBlocks

Find examples in Playground

hasTexture

Find examples in Playground
  • Specifies if the material uses a texture

    Parameters

    • texture: BaseTexture

      defines the texture to check against the material

    Returns boolean

    a boolean specifying if the material uses the texture

isReady

Find examples in Playground
  • isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean
  • Parameters

    • Optional mesh: AbstractMesh
    • Optional useInstances: boolean

    Returns boolean

isReadyForSubMesh

Find examples in Playground
  • Get if the submesh is ready to be used and all its information available. Child classes can use it to update shaders

    Parameters

    • mesh: AbstractMesh

      defines the mesh to check

    • subMesh: SubMesh

      defines which submesh to check

    • Optional useInstances: boolean

      specifies that instances should be used

    Returns boolean

    a boolean indicating that the submesh is ready or not

loadAsync

Find examples in Playground
  • loadAsync(url: string): Promise<void>
  • Loads the current Node Material from a url pointing to a file save by the Node Material Editor

    Parameters

    • url: string

      defines the url to load from

    Returns Promise<void>

    a promise that will fullfil when the material is fully loaded

loadFromSerialization

Find examples in Playground
  • loadFromSerialization(source: any, rootUrl?: string, merge?: boolean): void
  • Clear the current graph and load a new one from a serialization object

    Parameters

    • source: any

      defines the JSON representation of the material

    • Optional rootUrl: string

      defines the root URL to use to load textures and relative dependencies

    • Optional merge: boolean

      defines whether or not the source must be merged or replace the current content

    Returns void

markAsDirty

Find examples in Playground
  • markAsDirty(flag: number): void
  • Marks a define in the material to indicate that it needs to be re-computed

    Parameters

    • flag: number

      defines a flag used to determine which parts of the material have to be marked as dirty

    Returns void

markDirty

Find examples in Playground
  • markDirty(): void
  • Marks the material to indicate that it needs to be re-calculated

    Returns void

needAlphaBlending

Find examples in Playground
  • needAlphaBlending(): boolean
  • Specifies if the material will require alpha blending

    Returns boolean

    a boolean specifying if alpha blending is needed

needAlphaBlendingForMesh

Find examples in Playground

needAlphaTesting

Find examples in Playground
  • needAlphaTesting(): boolean
  • Specifies if this material should be rendered in alpha test mode

    Returns boolean

    a boolean specifying if an alpha test is needed.

optimize

Find examples in Playground
  • optimize(): void
  • Runs an otpimization phase to try to improve the shader code

    Returns void

registerOptimizer

Find examples in Playground
  • Adds a new optimizer to the list of optimizers

    Parameters

    Returns this | undefined

    the current material

removeBlock

Find examples in Playground
  • Remove a block from the current node material

    Parameters

    Returns void

removeOutputNode

Find examples in Playground
  • Remove a block from the list of root nodes

    Parameters

    Returns this

    the current material

serialize

Find examples in Playground
  • Serializes this material in a JSON representation

    Parameters

    Returns any

    the serialized material object

setPrePassRenderer

Find examples in Playground

setToDefault

Find examples in Playground
  • setToDefault(): void
  • Clear the current material and set it to a default state

    Returns void

setToDefaultParticle

Find examples in Playground
  • setToDefaultParticle(): void
  • Clear the current material and set it to a default state for particle

    Returns void

setToDefaultPostProcess

Find examples in Playground
  • setToDefaultPostProcess(): void
  • Clear the current material and set it to a default state for post process

    Returns void

setToDefaultProceduralTexture

Find examples in Playground
  • setToDefaultProceduralTexture(): void
  • Clear the current material and set it to a default state for procedural texture

    Returns void

toString

Find examples in Playground
  • toString(fullDetails?: boolean): string
  • Returns a string representation of the current material

    Parameters

    • Optional fullDetails: boolean

      defines a boolean indicating which levels of logging is desired

    Returns string

    a string with material information

unbind

Find examples in Playground
  • unbind(): void

unfreeze

Find examples in Playground
  • unfreeze(): void

unregisterOptimizer

Find examples in Playground
  • Remove an optimizer from the list of optimizers

    Parameters

    Returns this | undefined

    the current material

Static CreateDefault

Find examples in Playground
  • Creates a new node material set to default basic configuration

    Parameters

    • name: string

      defines the name of the material

    • Optional scene: Scene

      defines the hosting scene

    Returns NodeMaterial

    a new NodeMaterial

Static Parse

Find examples in Playground
  • Creates a node material from parsed material data

    Parameters

    • source: any

      defines the JSON representation of the material

    • scene: Scene

      defines the hosting scene

    • Optional rootUrl: string

      defines the root URL to use to load textures and relative dependencies

    Returns NodeMaterial

    a new node material

Static ParseFromFileAsync

Find examples in Playground
  • Creates a node material from a snippet saved in a remote file

    Parameters

    • name: string

      defines the name of the material to create

    • url: string

      defines the url to load from

    • scene: Scene

      defines the hosting scene

    Returns Promise<NodeMaterial>

    a promise that will resolve to the new node material

Static ParseFromSnippetAsync

Find examples in Playground
  • Creates a node material from a snippet saved by the node material editor

    Parameters

    • snippetId: string

      defines the snippet to load

    • scene: Scene

      defines the hosting scene

    • Optional rootUrl: string

      defines the root URL to use to load textures and relative dependencies

    • Optional nodeMaterial: NodeMaterial

      defines a node material to update (instead of creating a new one)

    Returns Promise<NodeMaterial>

    a promise that will resolve to the new node material

Generated using TypeDoc