Class NodeMaterial
Hierarchy
- NodeMaterialBase
- NodeMaterial
Index
Constructors
Properties
Accessors
Methods
Constructors
constructor
-
new NodeMaterial(
name: string,
scene?: Scene,
options?: Partial<INodeMaterialOptions>,
): NodeMaterialCreate a new node based material
Parameters
- name: string
defines the material name
Optionalscene: Scenedefines the hosting scene
- options: Partial<INodeMaterialOptions> = {}
defines creation option
Returns NodeMaterial
- name: string
Properties
_ fragment Output Nodes
Gets or sets the root nodes of the material fragment (pixel) shader
_ image Processing Configuration
Default configuration related to image processing available in the standard Material.
_ image Processing Observer
Keep track of the image processing observer to allow dispose and replace.
_ vertex Output Nodes
Gets or sets the root nodes of the material vertex shader
allow Shader Hot Swapping
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
Stores the animations for the material
attached Blocks
Gets an array of blocks that needs to be serialized even if they are not yet connected
check Ready On Every Call
Specifies if the ready state should be checked on each call
check Ready Only Once
Specifies if the ready state should be checked once
clip Plane
Gets or sets the active clipplane 1
clip Plane2
Gets or sets the active clipplane 2
clip Plane3
Gets or sets the active clipplane 3
clip Plane4
Gets or sets the active clipplane 4
clip Plane5
Gets or sets the active clipplane 5
clip Plane6
Gets or sets the active clipplane 6
comment
A free comment about the material
custom Shader Name Resolve
shaderName: string,
uniforms: string[],
uniformBuffers: string[],
samplers: string[],
defines: string[] | MaterialDefines,
attributes?: string[],
options?: ICustomShaderNameResolveOptions,
) => string
Custom callback helping to override the default shader used in the material.
depth Function
Specifies the depth function that should be used. 0 means the default engine function
disable Color Write
Specifies if color writing should be disabled
disable Depth Write
Specifies if depth writing should be disabled
do Not Serialize
Specifies if the material should be serialized
editor Data
Gets or sets data used by visual editor
force Alpha Blending
Gets or sets a boolean indicating that alpha blending must be enabled no matter what alpha value or alpha channel of the FragmentBlock are
force Depth Write
Specifies if depth writing should be forced
get Render Target Textures
Callback triggered to get the render target textures
id
The ID of the material
ignore Alpha
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)
inspectable Custom Properties
List of inspectable custom properties (used by the Inspector)
max Simultaneous Lights
Defines the maximum number of lights that can be used in the material
metadata
Gets or sets user defined metadata
name
The name of the material
on Build Error Observable
Observable raised when an error is detected
on Build Observable
Observable raised when the material is built
on Compiled
Callback triggered when the material is compiled
on Dispose Observable
An event triggered when the material is disposed
on Error
Callback triggered when an error occurs
Optionalplugin Manager
Plugin manager for this material
point Size
Stores the size of points
reserved Data Store
For internal use only. Please do not use.
separate Culling Pass
Specifies if there should be a separate pass for culling
shadow Depth Wrapper
Custom shadow depth material to use for shadow rendering instead of the in-built one
side Orientation
Stores the value for side orientation
snippet Id
Snippet ID if the material was created from the snippet server
state
The state of the material
Readonlystencil
Gives access to the stencil properties of the material
texture Repetition Hex Tiling Params
Parameters for the hex tiling texture repetition mode (TEXTURE_REPETITION_HEX_TILING). x = rotation strength (0..1, default 1.0) — how much each hex tile is rotated. y = fall-off contrast (0..1, default 0.6) — how much luminance affects blending weight at tile borders. z = exponent (1..20, default 7.0) — controls the sharpness of weight falloff between tiles. w = contrast (0..1, default 0.5) — boost blending contrast via Gain3 (0.5 = neutral, >0.5 = higher contrast).
unique Id
Gets or sets the unique id of the material
z Offset
Stores the z offset Factor value
z Offset Units
Stores the z offset Units value
Static ReadonlyAll Dirty Flag
The all dirty flag value
StaticAllow Serialization Of Render Target Textures
Gets or sets a boolean indicating that render target textures can be serialized
Static ReadonlyAttributes Dirty Flag
The dirty attribute flag value
Static ReadonlyClock Wise Side Orientation
Stores the clock-wise side orientation
Static ReadonlyCounter Clock Wise Side Orientation
Stores the counter clock-wise side orientation
StaticDefault Shader Language
Defines default shader language when no option is defined
StaticEditor URL
Define the Url to load node editor script
StaticForce Vertex Output Invariant
If true, all materials will have their vertex output set to invariant (see the vertexOutputInvariant property).
Static ReadonlyFresnel Dirty Flag
The dirty fresnel flag value
StaticIgnore Textures At Load Time
Gets or sets a boolean indicating that node materials should not deserialize textures from json / snippet content
Static ReadonlyImage Processing Dirty Flag
The dirty image processing flag value
Static ReadonlyLight Dirty Flag
The dirty light flag value
Static ReadonlyLIGHTFALLOFF_ GLTF
PBRMaterialLightFalloff gltf: light is falling off as described in the gltf moving to PBR document to enhance interoperability with other engines.
Static ReadonlyLIGHTFALLOFF_ PHYSICAL
PBRMaterialLightFalloff Physical: light is falling off following the inverse squared distance law.
Static ReadonlyLIGHTFALLOFF_ STANDARD
PBRMaterialLightFalloff Standard: light is falling off like in the standard material to enhance interoperability with other materials.
Static ReadonlyLine List Draw Mode
Returns the line list draw mode
Static ReadonlyLine Loop Draw Mode
Returns the line loop draw mode
Static ReadonlyLine Strip Draw Mode
Returns the line strip draw mode
Static ReadonlyMATERIAL_ ALPHABLEND
MaterialTransparencyMode: Pixels are blended (according to the alpha mode) with the already drawn pixels in the current frame buffer.
Static ReadonlyMATERIAL_ ALPHATEST
MaterialTransparencyMode: Alpha Test mode, pixel are discarded below a certain threshold defined by the alpha cutoff value.
Static ReadonlyMATERIAL_ ALPHATESTANDBLEND
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 ReadonlyMATERIAL_ NORMALBLENDMETHOD_ RNM
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 ReadonlyMATERIAL_ NORMALBLENDMETHOD_ WHITEOUT
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 ReadonlyMATERIAL_ OPAQUE
MaterialTransparencyMode: No transparency mode, Alpha channel is not use.
Static ReadonlyMisc Dirty Flag
The dirty misc flag value
StaticOn Event Observable
Event observable which raises global events common to all materials (like MaterialPluginEvent.Created)
Static ReadonlyPoint Fill Mode
Returns the point fill mode
Static ReadonlyPoint List Draw Mode
Returns the point list draw mode
Static ReadonlyPre Pass Dirty Flag
The dirty prepass flag value
StaticSnippet Url
Define the Url to load snippets
Static ReadonlyTexture Dirty Flag
The dirty texture flag value
Static ReadonlyTriangle Fan Draw Mode
Returns the triangle fan draw mode
Static ReadonlyTriangle Fill Mode
Returns the triangle fill mode
Static ReadonlyTriangle Strip Draw Mode
Returns the triangle strip draw mode
StaticUse Native Shader Language Of Engine
If true, the node material will use GLSL if the engine is WebGL and WGSL if it's WebGPU. It takes priority over DefaultShaderLanguage if it's true
Static ReadonlyWire Frame Fill Mode
Returns the wireframe mode
Accessors
_ glow Mode Enabled
-
set _glowModeEnabled(value: boolean): void
Sets whether glow mode is enabled
Parameters
- value: boolean
the value to set
Returns void
- value: boolean
_ support Glow Layer
-
get _supportGlowLayer(): boolean
Gets whether the glow layer is supported
Returns boolean
true if the glow layer is supported
alpha
-
get alpha(): number
Gets the alpha value of the material
Returns number
-
set alpha(value: number): void
Sets the alpha value of the material
Parameters
- value: number
Returns void
alpha Mode
-
get alphaMode(): number
Gets the value of the alpha mode
Returns number
-
set alphaMode(value: number): void
Sets the value of the alpha mode.
Value Type Description 0 ALPHA_DISABLE 1 ALPHA_ADD Defines that alpha blending is COLOR=SRC_ALPHA * SRC + DEST, ALPHA=DEST_ALPHA 2 ALPHA_COMBINE Defines that alpha blending is COLOR=SRC_ALPHA * SRC + (1 - SRC_ALPHA) * DEST, ALPHA=SRC_ALPHA + DEST_ALPHA 3 ALPHA_SUBTRACT Defines that alpha blending is COLOR=(1 - SRC) * DEST, ALPHA=SRC_ALPHA + DEST_ALPHA 4 ALPHA_MULTIPLY Defines that alpha blending is COLOR=DEST * SRC, ALPHA=SRC_ALPHA + DEST_ALPHA 5 ALPHA_MAXIMIZED Defines that alpha blending is COLOR=SRC_ALPHA * SRC + (1 - SRC) * DEST, ALPHA=SRC_ALPHA + DEST_ALPHA 6 ALPHA_ONEONE Defines that alpha blending is COLOR=SRC + DEST, ALPHA=DEST_ALPHA 7 ALPHA_PREMULTIPLIED Defines that alpha blending is COLOR=SRC + (1 - SRC_ALPHA) * DEST, ALPHA=SRC_ALPHA + DEST_ALPHA 8 ALPHA_PREMULTIPLIED_PORTERDUFF Defines that alpha blending is COLOR=SRC + (1 - SRC_ALPHA) * DEST, ALPHA=SRC_ALPHA + (1 - SRC_ALPHA) * DEST_ALPHA 9 ALPHA_INTERPOLATE Defines that alpha blending is COLOR=CST * SRC + (1 - CST) * DEST, ALPHA=CST_ALPHA * SRC + (1 - CST_ALPHA) * DEST_ALPHA 10 ALPHA_SCREENMODE Defines that alpha blending is COLOR=SRC + (1 - SRC) * DEST, ALPHA=SRC_ALPHA + (1 - SRC_ALPHA) * DEST_ALPHA 11 ALPHA_ONEONE_ONEONE Defines that alpha blending is COLOR=SRC + DST, ALPHA=SRC_ALPHA + DEST_ALPHA 12 ALPHA_ALPHATOCOLOR Defines that alpha blending is COLOR=DEST_ALPHA * SRC + DST, ALPHA=0 13 ALPHA_REVERSEONEMINUS Defines that alpha blending is COLOR=(1 - DEST) * SRC + (1 - SRC) * DEST, ALPHA=(1 - DEST_ALPHA) * SRC_ALPHA + (1 - SRC_ALPHA) * DEST_ALPHA 14 ALPHA_SRC_DSTONEMINUSSRCALPHA Defines that alpha blending is ALPHA=SRC + (1 - SRC ALPHA) * DEST, ALPHA=SRC_ALPHA + (1 - SRC ALPHA) * DEST_ALPHA 15 ALPHA_ONEONE_ONEZERO Defines that alpha blending is COLOR=SRC + DST, ALPHA=SRC_ALPHA 16 ALPHA_EXCLUSION Defines that alpha blending is COLOR=(1 - DEST) * SRC + (1 - SRC) * DEST, ALPHA=DEST_ALPHA 17 ALPHA_LAYER_ACCUMULATE Defines that alpha blending is COLOR=SRC_ALPHA * SRC + (1 - SRC ALPHA) * DEST, ALPHA=SRC_ALPHA + (1 - SRC_ALPHA) * DEST_ALPHA 18 ALPHA_MIN Defines that alpha blending is COLOR=MIN(SRC, DEST), ALPHA=MIN(SRC_ALPHA, DEST_ALPHA) 19 ALPHA_MAX Defines that alpha blending is COLOR=MAX(SRC, DEST), ALPHA=MAX(SRC_ALPHA, DEST_ALPHA) 20 ALPHA_DUAL_SRC0_ADD_SRC1xDST Defines that alpha blending uses dual source blending and is COLOR=SRC + SRC1 * DEST, ALPHA=DST_ALPHA 21 ALPHA_REPLACE_COLOR Defines that alpha blending is COLOR=SRC, ALPHA=SRC_ALPHA + (1 - SRC_ALPHA) * DEST_ALPHA Parameters
- value: number
Returns void
alpha Modes
-
get alphaModes(): readonly number[]
Gets the list of alpha modes (length greater than 1 for multi-targets)
Returns readonly number[]
back Face Culling
-
get backFaceCulling(): boolean
Gets the culling state
Returns boolean
-
set backFaceCulling(value: boolean): void
Sets the culling state (true to enable culling, false to disable)
Parameters
- value: boolean
Returns void
block Dirty Mechanism
-
get blockDirtyMechanism(): boolean
Block the dirty-mechanism for this specific material When set to false after being true the material will be marked as dirty.
Returns boolean
-
set blockDirtyMechanism(value: boolean): void
Parameters
- value: boolean
Returns void
build Id
-
get buildId(): number
Gets or sets the unique identifier used to identified the effect associated with the material
Returns number
-
set buildId(value: number): void
Parameters
- value: number
Returns void
build Is In Progress
-
get buildIsInProgress(): boolean
Gets whether the node material is currently building
Returns boolean
camera Color Curves
-
The color grading curves provide additional color adjustmnent that is applied after any color grading transform (3D LUT). They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects. These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image; corresponding to low luminance, medium luminance, and high luminance areas respectively.
Returns Nullable<ColorCurves>
-
The color grading curves provide additional color adjustment that is applied after any color grading transform (3D LUT). They allow basic adjustment of saturation and small exposure adjustments, along with color filter tinting to provide white balance adjustment or more stylistic effects. These are similar to controls found in many professional imaging or colorist software. The global controls are applied to the entire image. For advanced tuning, extra controls are provided to adjust the shadow, midtone and highlight areas of the image; corresponding to low luminance, medium luminance, and high luminance areas respectively.
Parameters
- value: Nullable<ColorCurves>
Returns void
camera Color Curves Enabled
-
get cameraColorCurvesEnabled(): boolean
Gets whether the color curves effect is enabled.
Returns boolean
-
set cameraColorCurvesEnabled(value: boolean): void
Sets whether the color curves effect is enabled.
Parameters
- value: boolean
Returns void
camera Color Grading Enabled
-
get cameraColorGradingEnabled(): boolean
Gets whether the color grading effect is enabled.
Returns boolean
-
set cameraColorGradingEnabled(value: boolean): void
Gets whether the color grading effect is enabled.
Parameters
- value: boolean
Returns void
camera Color Grading Texture
-
Gets the Color Grading 2D Lookup Texture.
Returns Nullable<BaseTexture>
camera Contrast
-
get cameraContrast(): number
Gets The camera contrast used on this material.
Returns number
-
set cameraContrast(value: number): void
Sets The camera contrast used on this material.
Parameters
- value: number
Returns void
camera Exposure
-
get cameraExposure(): number
The camera exposure used on this material. This property is here and not in the camera to allow controlling exposure without full screen post process. This corresponds to a photographic exposure.
Returns number
-
set cameraExposure(value: number): void
The camera exposure used on this material. This property is here and not in the camera to allow controlling exposure without full screen post process. This corresponds to a photographic exposure.
Parameters
- value: number
Returns void
camera Tone Mapping Enabled
-
get cameraToneMappingEnabled(): boolean
Gets whether tonemapping is enabled or not.
Returns boolean
-
set cameraToneMappingEnabled(value: boolean): void
Sets whether tonemapping is enabled or not
Parameters
- value: boolean
Returns void
can Render To MRT
-
get canRenderToMRT(): boolean
If the material can be rendered to several textures with MRT extension
Returns boolean
compiled Shaders
-
get compiledShaders(): string
Get a string representing the shaders built by the current node graph
Returns string
cull Back Faces
-
get cullBackFaces(): boolean
Gets the type of faces that should be culled
Returns boolean
-
set cullBackFaces(value: boolean): void
Sets the type of faces that should be culled (true for back faces, false for front faces)
Parameters
- value: boolean
Returns void
fill Mode
-
get fillMode(): number
Gets the material fill mode
Returns number
-
set fillMode(value: number): void
Sets the material fill mode
Parameters
- value: number
Returns void
fog Enabled
-
get fogEnabled(): boolean
Gets the value of the fog enabled state
Returns boolean
-
set fogEnabled(value: boolean): void
Sets the state for enabling fog
Parameters
- value: boolean
Returns void
has Render Target Textures
-
get hasRenderTargetTextures(): boolean
Gets a boolean indicating that current material needs to register RTT
Returns boolean
image Processing Configuration
-
Gets the image processing configuration used either in this material.
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
- value: ImageProcessingConfiguration
Returns void
is Frozen
-
get isFrozen(): boolean
Specifies if updates for the material been locked
Returns boolean
is Pre Pass Capable
-
get isPrePassCapable(): boolean
Can this material render to prepass
Returns boolean
is Vertex Output Invariant
-
get isVertexOutputInvariant(): boolean
Gets or sets the vertex output invariant state Setting this property to true will force the shader compiler to disable some optimization to make sure the vertex output is always calculated the same way across different compilation units. You may need to enable this option if you are seeing some depth artifacts when using a depth pre-pass, for e.g. Note that this may have an impact on performance, so leave this option disabled if not needed.
Returns boolean
-
set isVertexOutputInvariant(value: boolean): void
Parameters
- value: boolean
Returns void
mode
-
Gets or sets the mode property
Returns NodeMaterialModes
-
Parameters
- value: NodeMaterialModes
Returns void
need Depth Pre Pass
-
get needDepthPrePass(): boolean
Gets the depth pre-pass value
Returns boolean
-
set needDepthPrePass(value: boolean): void
Sets the need depth pre-pass value
Parameters
- value: boolean
Returns void
on Bind
on Bind Observable
-
An event triggered when the material is bound
Returns Observable<AbstractMesh>
on Dispose
-
set onDispose(callback: () => void): void
Called during a dispose event
Parameters
- callback: () => void
Returns void
on Effect Created Observable
-
An event triggered when the effect is (re)created
Returns Observable<{ effect: Effect; subMesh: Nullable<SubMesh> }>
on Un Bind Observable
-
An event triggered when the material is unbound
Returns Observable<Material>
options
-
Gets or sets options to control the node material overall behavior
Returns INodeMaterialOptions
-
Parameters
- options: INodeMaterialOptions
Returns void
points Cloud
-
get pointsCloud(): boolean
Gets the value specifying if point clouds are enabled
Returns boolean
-
set pointsCloud(value: boolean): void
Sets the state of point cloud mode
Parameters
- value: boolean
Returns void
pre Pass Texture Inputs
-
get prePassTextureInputs(): number[]
Gets the list of prepass texture required
Returns number[]
pre Pass Texture Outputs
-
get prePassTextureOutputs(): number[]
Outputs written to the prepass
Returns number[]
shader Language
-
Gets or sets the active shader language
Returns ShaderLanguage
texture Repetition Mode
-
get textureRepetitionMode(): number
Gets the texture repetition breaking mode.
Returns number
-
set textureRepetitionMode(value: number): void
Sets the texture repetition breaking mode. Use one of the Constants.TEXTURE_REPETITION_* values to break visible texture tiling patterns. Ordered by cost: NONE (1 fetch), NOISE_BLEND (3), HEX_TILING (3), TILE_RANDOMIZATION (4), VORONOI_BOMBING (9). Not supported on WebGL1 — the mode will be forced to NONE.
Parameters
- value: number
Returns void
transparency Mode
use Logarithmic Depth
-
get useLogarithmicDepth(): boolean
In case the depth buffer does not allow enough depth precision for your scene (might be the case in large scenes) You can try switching to logarithmic depth.
Returns boolean
-
set useLogarithmicDepth(value: boolean): void
Parameters
- value: boolean
Returns void
use Vertex Pulling
-
get useVertexPulling(): boolean
Tells the engine to draw geometry using vertex pulling instead of index drawing. This will automatically set the vertex buffers as storage buffers and make them accessible to the vertex shader (WebGPU only).
Returns boolean
-
set useVertexPulling(value: boolean): void
Parameters
- value: boolean
Returns void
wireframe
-
get wireframe(): boolean
Returns boolean
-
set wireframe(value: boolean): void
Sets the state of wireframe mode
Parameters
- value: boolean
Returns void
Methods
_ attach Image Processing Configuration
-
Attaches a new image processing configuration to the Standard Material.
Parameters
- configuration: Nullable<ImageProcessingConfiguration>
Returns void
add Output Node
-
Add a new block to the list of output nodes
Parameters
- node: NodeMaterialBlock
defines the node to add
Returns NodeMaterial
the current material
- node: NodeMaterialBlock
atomic Materials Update
-
This allows you to modify the material without marking it as dirty after every change. This function should be used if you need to make more than one dirty-enabling change to the material - adding a texture, setting a new fill mode and so on. The callback will pass the material as an argument, so you can make your changes to it.
Parameters
- callback: (material: this) => void
the callback to be executed that will update the material
Returns void
- callback: (material: this) => void
bind
bind Eye Position
-
Binds the view matrix to the effect
Parameters
- effect: Effect
defines the effect to bind the view matrix to
OptionalvariableName: stringname of the shader variable that will hold the eye position
Returns void
- effect: Effect
bind For Sub Mesh
bind Only Normal Matrix
-
Binds the given normal matrix to the active effect
Parameters
- normalMatrix: Matrix
the matrix to bind
Returns void
- normalMatrix: Matrix
bind Only World Matrix
-
Binds the world matrix to the material
Parameters
- world: Matrix
defines the world transformation matrix
Returns void
- world: Matrix
bind View
-
Binds the view matrix to the effect
Parameters
- effect: Effect
defines the effect to bind the view matrix to
Returns void
- effect: Effect
bind View Projection
-
Binds the view projection and projection matrices to the effect
Parameters
- effect: Effect
defines the effect to bind the view projection and projection matrices to
Returns void
- effect: Effect
build
-
Build the material and generates the inner effect
Parameters
- verbose: boolean = false
defines if the build should log activity
- updateBuildId: boolean = true
defines if the internal build Id should be updated (default is true)
- autoConfigure: boolean = false
defines if the autoConfigure method should be called when initializing blocks (default is false)
Returns void
- verbose: boolean = false
build Uniform Layout
-
Initializes the uniform buffer layout for the shader.
Returns void
clear
-
Clear the current material
Returns void
clone
-
Makes a duplicate of the current material.
Parameters
- name: string
defines the name to use for the new material
- shareEffect: boolean = false
defines if the clone material should share the same effect (default is false)
Returns NodeMaterial
the cloned material
- name: string
create As Shadow Depth Wrapper
-
Use this material as the shadow depth wrapper of a target material
Parameters
- targetMaterial: Material
defines the target material
Returns void
- targetMaterial: Material
create Effect For Particles
-
createEffectForParticles(
particleSystem: IParticleSystem,
onCompiled?: (effect: Effect) => void,
onError?: (effect: Effect, errors: string) => void,
): voidCreate the effect to be used as the custom effect for a particle system. If the material has not been built successfully yet, the build is started when needed and the effect is only created once it completes, so the effect may not be set on the particle system when this method returns.
Parameters
- particleSystem: IParticleSystem
Particle system to create the effect for
OptionalonCompiled: (effect: Effect) => voiddefines a function to call when the effect creation is successful
OptionalonError: (effect: Effect, errors: string) => voiddefines a function to call when the effect creation has failed
Returns void
- particleSystem: IParticleSystem
create Effect For Post Process
-
Create the post process effect from the material
Parameters
- postProcess: PostProcess
The post process to create the effect for
Returns void
- postProcess: PostProcess
create Post Process
-
createPostProcess(
camera: Nullable<Camera>,
options?: number | PostProcessOptions,
samplingMode?: number,
engine?: AbstractEngine,
reusable?: boolean,
textureType?: number,
textureFormat?: number,
): Nullable<PostProcess>Create a post process from the material
Parameters
- camera: Nullable<Camera>
The camera to apply the render pass to.
- options: number | PostProcessOptions = 1
The required width/height ratio to downsize to before computing the render pass. (Use 1.0 for full size)
- samplingMode: number = Constants.TEXTURE_NEAREST_SAMPLINGMODE
The sampling mode to be used when computing the pass. (default: 0)
Optionalengine: AbstractEngineThe engine which the post process will be applied. (default: current engine)
Optionalreusable: booleanIf the post process can be reused on the same frame. (default: false)
- textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE
Type of textures used when performing the post process. (default: 0)
- textureFormat: number = Constants.TEXTUREFORMAT_RGBA
Format of textures used when performing the post process. (default: TEXTUREFORMAT_RGBA)
Returns Nullable<PostProcess>
the post process created
- camera: Nullable<Camera>
create Procedural Texture
-
createProceduralTexture(
size: number | { height: number; layers?: number; width: number },
scene: Scene,
): Nullable<ProceduralTexture>Create a new procedural texture based on this node material
Parameters
- size: number | { height: number; layers?: number; width: number }
defines the size of the texture
- scene: Scene
defines the hosting scene
Returns Nullable<ProceduralTexture>
the new procedural texture attached to this node material
- size: number | { height: number; layers?: number; width: number }
dispose
-
dispose(
forceDisposeEffect?: boolean,
forceDisposeTextures?: boolean,
notBoundToMesh?: boolean,
): voidDisposes the material
Parameters
OptionalforceDisposeEffect: booleanspecifies if effects should be forcefully disposed
OptionalforceDisposeTextures: booleanspecifies if textures should be forcefully disposed
OptionalnotBoundToMesh: booleanspecifies if the material that is being disposed is known to be not bound to any mesh
Returns void
edit
-
Launch the node material editor
Parameters
Optionalconfig: INodeMaterialEditorOptionsDefine the configuration of the editor
Returns Promise<void>
a promise fulfilled when the node editor is visible
force Compilation
-
forceCompilation(
mesh: AbstractMesh,
onCompiled?: (material: Material) => void,
options?: Partial<IMaterialCompilationOptions>,
onError?: (reason: string) => void,
): voidForce shader compilation
Parameters
- mesh: AbstractMesh
defines the mesh associated with this material
OptionalonCompiled: (material: Material) => voiddefines a function to execute once the material is compiled
Optionaloptions: Partial<IMaterialCompilationOptions>defines the options to configure the compilation
OptionalonError: (reason: string) => voiddefines a function to execute if the material fails compiling
Returns void
- mesh: AbstractMesh
force Compilation Async
-
forceCompilationAsync(
mesh: AbstractMesh,
options?: Partial<IMaterialCompilationOptions>,
): Promise<void>Force shader compilation
Parameters
- mesh: AbstractMesh
defines the mesh that will use this material
Optionaloptions: Partial<IMaterialCompilationOptions>defines additional options for compiling the shaders
Returns Promise<void>
a promise that resolves when the compilation completes
- mesh: AbstractMesh
freeze
-
Locks updates for the material.
Note: while a material is frozen, the scene can still rebind it at least once per camera render (and again whenever another material was bound in between). What can be skipped while the frozen material stays cached are per-mesh updates performed during a rebind.
This includes per-mesh morph target influences. If the same frozen material is shared across several meshes that each have different per-mesh morph influences, only the mesh that triggers the rebind updates those values. Other meshes rendered afterward with the same cached frozen material may reuse stale influences and render with the wrong values.
For that scenario either keep the material unfrozen, clone the material per mesh and freeze each clone, or
unfreeze()before changing influences andfreeze()again afterwards.Returns void
generate Code
-
Generate a string containing the code declaration required to create an equivalent of this material
Returns string
a string
get Active Textures
get All Texture Blocks
-
Gets the list of all texture blocks Note that this method will scan all attachedBlocks and return blocks that are texture blocks
Returns NodeMaterialTextureBlocks[]
get Alpha Test Texture
-
Gets the texture used for the alpha test
Returns Nullable<BaseTexture>
the texture to use for alpha testing
get Animatables
get Binded Meshes
-
Gets the meshes bound to the material
Returns AbstractMesh[]
an array of meshes bound to the material
get Block By Name
-
Get a block by its name
Parameters
- name: string
defines the name of the block to retrieve
Returns NodeMaterialBlock | null
the required block or null if not found
- name: string
get Block By Predicate
-
Get a block using a predicate
Parameters
- predicate: (block: NodeMaterialBlock) => boolean
defines the predicate used to find the good candidate
Returns NodeMaterialBlock | null
the required block or null if not found
- predicate: (block: NodeMaterialBlock) => boolean
get Class Name
-
Gets the current class name of the material e.g. "NodeMaterial"
Returns string
the class name
get Effect
get Input Block By Predicate
-
Get an input block using a predicate
Parameters
- predicate: (block: InputBlock) => boolean
defines the predicate used to find the good candidate
Returns Nullable<InputBlock>
the required input block or null if not found
- predicate: (block: InputBlock) => boolean
get Input Blocks
get Scene
get Texture Blocks
-
Gets the list of texture blocks Note that this method will only return blocks that are reachable from the final block(s) and only after the material has been built!
Returns NodeMaterialTextureBlocks[]
an array of texture blocks
has Texture
-
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
- texture: BaseTexture
is Ready
-
Specifies if the material is ready to be used
Parameters
Optionalmesh: AbstractMeshdefines the mesh to check
OptionaluseInstances: booleanspecifies if instances should be used
Returns boolean
a boolean indicating if the material is ready to be used
is Ready For Sub Mesh
-
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
- useInstances: boolean = false
specifies that instances should be used
Returns boolean
a boolean indicating that the submesh is ready or not
- mesh: AbstractMesh
load Async
-
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
- rootUrl: string = ""
defines the root URL for nested url in the node material
Returns Promise<NodeMaterial>
a promise that will fulfil when the material is fully loaded
- url: string
load From Serialization
-
Clear the current graph and load a new one from a serialization object
Parameters
- source: any
defines the JSON representation of the material
- rootUrl: string = ""
defines the root URL to use to load textures and relative dependencies
- merge: boolean = false
defines whether or not the source must be merged or replace the current content
Returns void
- source: any
mark As Dirty
-
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
- flag: number
mark Dirty
-
Marks the material to indicate that it needs to be re-calculated
Parameters
- forceMaterialDirty: boolean = false
Forces the material to be marked as dirty for all components (same as this.markAsDirty(Material.AllDirtyFlag)). You should use this flag if the material is frozen and you want to force a recompilation.
Returns void
- forceMaterialDirty: boolean = false
need Alpha Blending
-
Specifies if the material will require alpha blending
Returns boolean
a boolean specifying if alpha blending is needed
need Alpha Blending For Mesh
-
Specifies if the mesh will require alpha blending
Parameters
- mesh: AbstractMesh
defines the mesh to check
Returns boolean
a boolean specifying if alpha blending is needed for the mesh
- mesh: AbstractMesh
need Alpha Testing
-
Specifies if this material should be rendered in alpha test mode
Returns boolean
a boolean specifying if an alpha test is needed.
need Alpha Testing For Mesh
-
Specifies if material alpha testing should be turned on for the mesh
Parameters
- mesh: AbstractMesh
defines the mesh to check
Returns boolean
a boolean specifying if alpha testing should be turned on for the mesh
- mesh: AbstractMesh
optimize
-
Runs an optimization phase to try to improve the shader code
Returns void
parse Serialized Object
-
parseSerializedObject(
source: any,
rootUrl?: string,
merge?: boolean,
urlRewriter?: (url: string) => string,
): voidClear the current graph and load a new one from a serialization object
Parameters
- source: any
defines the JSON representation of the material
- rootUrl: string = ""
defines the root URL to use to load textures and relative dependencies
- merge: boolean = false
defines whether or not the source must be merged or replace the current content
OptionalurlRewriter: (url: string) => stringdefines a function used to rewrite urls
Returns void
- source: any
register Optimizer
-
Adds a new optimizer to the list of optimizers
Parameters
- optimizer: NodeMaterialOptimizer
defines the optimizers to add
Returns NodeMaterial | undefined
the current material
- optimizer: NodeMaterialOptimizer
remove Block
-
Remove a block from the current node material
Parameters
- block: NodeMaterialBlock
defines the block to remove
Returns void
- block: NodeMaterialBlock
remove Output Node
-
Remove a block from the list of root nodes
Parameters
- node: NodeMaterialBlock
defines the node to remove
Returns NodeMaterial
the current material
- node: NodeMaterialBlock
reset Draw Cache
-
Resets the draw wrappers cache for all submeshes that are using this material
Returns void
serialize
-
Serializes this material in a JSON representation
Parameters
OptionalselectedBlocks: NodeMaterialBlock[]defines an optional list of blocks to serialize
Returns any
the serialized material object
set Alpha Mode
-
Sets the value of the alpha mode for a specific target index.
Parameters
- value: number
The alpha mode value to set.
- targetIndex: number = 0
The index of the target to set the alpha mode for. Defaults to 0.
Returns void
- value: number
set Pre Pass Renderer
-
Sets the required values to the prepass renderer.
Parameters
- prePassRenderer: PrePassRenderer
defines the prepass renderer to set
Returns boolean
true if the pre pass is needed
- prePassRenderer: PrePassRenderer
set To Default
-
Clear the current material and set it to a default state
Returns void
set To Default Particle
-
Clear the current material and set it to a default state for particle
Returns void
set To Default Post Process
-
Clear the current material and set it to a default state for post process
Returns void
set To Default Procedural Texture
-
Clear the current material and set it to a default state for procedural texture
Returns void
to String
-
Returns a string representation of the current material
Parameters
OptionalfullDetails: booleandefines a boolean indicating which levels of logging is desired
Returns string
a string with material information
unbind
-
Unbinds the material from the mesh
Returns void
unfreeze
-
Unlocks updates for the material
Returns void
unregister Optimizer
-
Remove an optimizer from the list of optimizers
Parameters
- optimizer: NodeMaterialOptimizer
defines the optimizers to remove
Returns NodeMaterial | undefined
the current material
- optimizer: NodeMaterialOptimizer
when Textures Ready Async
-
Awaits for all the material textures to be ready before resolving the returned promise.
Returns Promise<void[]>
A promise that resolves when the textures are ready.
StaticParse Alpha Mode
-
Parses the alpha mode from the material data to parse
Parameters
- parsedMaterial: any
defines the material data to parse
- material: Material
defines the material to update
Returns void
- parsedMaterial: any
Class used to create a node based material built by assembling shader blocks