A material determines how a particular mesh instance is rendered. It specifies the shader and render state that is set before the mesh instance is submitted to the graphics device.
alphaTest: number = 0
The alpha test reference value to control which fragments are written to the currently active render target based on alpha value. All fragments with an alpha value of less than the alphaTest reference value will be discarded. alphaTest defaults to 0 (all fragments pass).
alphaToCoverage: boolean = false
Enables or disables alpha to coverage (WebGL2 only). When enabled, and if hardware anti-aliasing is on, limited order-independent transparency can be achieved. Quality depends on the number of MSAA samples of the current render target. It can nicely soften edges of otherwise sharp alpha cutouts, but isn't recommended for large area semi-transparent surfaces. Note, that you don't need to enable blending to make alpha to coverage work. It will work without it, just like alphaTest.
cull: number = CULLFACE_BACK
Controls how triangles are culled based on their face direction with respect to the viewpoint. Can be:
Defaults to CULLFACE_BACK.
name: string = 'Untitled'
The name of the material.
stencilBack: null | StencilParameters = null;
Stencil parameters for back faces (default is null).
stencilFront: null | StencilParameters = null;
Stencil parameters for front faces (default is null).
userId: string = ''
A unique id the user can assign to the material. The engine internally does not use this for anything, and the user can assign a value to this id for any purpose they like. Defaults to an empty string.
get alphaWrite(): boolean
Gets whether the alpha channel is written to the color buffer.
boolean
set alphaWrite(value: boolean): void
Sets whether the alpha channel is written to the color buffer. If true, the red component of fragments generated by the shader of this material is written to the color buffer of the currently active render target. If false, the alpha component will not be written. Defaults to true.
boolean
void
get blendState(): BlendState
Gets the blend state for this material.
BlendState
set blendState(value: BlendState): void
Sets the blend state for this material. Controls how fragment shader outputs are blended when being written to the currently active render target. This overwrites blending type set using Material#blendType, and offers more control over blending.
BlendState
void
get blendType(): number
Gets the blend mode for this material.
number
set blendType(type: number): void
Sets the blend mode for this material. Controls how fragment shader outputs are blended when being written to the currently active render target. Can be:
Defaults to BLEND_NONE.
number
void
get blueWrite(): boolean
Gets whether the blue channel is written to the color buffer.
boolean
set blueWrite(value: boolean): void
Sets whether the blue channel is written to the color buffer. If true, the red component of fragments generated by the shader of this material is written to the color buffer of the currently active render target. If false, the blue component will not be written. Defaults to true.
boolean
void
get chunks(): {}
Gets the object containing custom shader chunks.
{
}
set chunks(value: {}): void
Sets the object containing custom shader chunks that will replace default ones.
void
get depthBias(): number
Gets the offset for the output depth buffer value.
number
set depthBias(value: number): void
Sets the offset for the output depth buffer value. Useful for decals to prevent z-fighting. Typically a small negative value (-0.1) is used to render the mesh slightly closer to the camera.
number
void
get depthFunc(): number
Gets the depth test function.
number
set depthFunc(value: number): void
Sets the depth test function. Controls how the depth of new fragments is compared against the current depth contained in the depth buffer. Can be:
Defaults to FUNC_LESSEQUAL.
number
void
get depthState(): DepthState
Gets the depth state.
DepthState
set depthState(value: DepthState): void
Sets the depth state. Note that this can also be done by using Material#depthTest, Material#depthFunc and Material#depthWrite.
DepthState
void
get depthTest(): boolean
Gets whether depth testing is enabled.
boolean
set depthTest(value: boolean): void
Sets whether depth testing is enabled. If true, fragments generated by the shader of this material are only written to the current render target if they pass the depth test. If false, fragments generated by the shader of this material are written to the current render target regardless of what is in the depth buffer. Defaults to true.
boolean
void
get depthWrite(): boolean
Gets whether depth writing is enabled.
boolean
set depthWrite(value: boolean): void
Sets whether depth writing is enabled. If true, fragments generated by the shader of this material write a depth value to the depth buffer of the currently active render target. If false, no depth value is written. Defaults to true.
boolean
void
get greenWrite(): boolean
Gets whether the green channel is written to the color buffer.
boolean
set greenWrite(value: boolean): void
Sets whether the green channel is written to the color buffer. If true, the red component of fragments generated by the shader of this material is written to the color buffer of the currently active render target. If false, the green component will not be written. Defaults to true.
boolean
void
get redWrite(): boolean
Gets whether the red channel is written to the color buffer.
boolean
set redWrite(value: boolean): void
Sets whether the red channel is written to the color buffer. If true, the red component of fragments generated by the shader of this material is written to the color buffer of the currently active render target. If false, the red component will not be written. Defaults to true.
boolean
void
get slopeDepthBias(): number
Gets the offset for the output depth buffer value based on the slope of the triangle relative to the camera.
number
set slopeDepthBias(value: number): void
Sets the offset for the output depth buffer value based on the slope of the triangle relative to the camera.
number
void
clone(): Material
Clone a material.
A newly cloned material.
copy(source: Material): Material
Copy a material.
The material to copy.
The destination material.
deleteParameter(name: string): void
Deletes a shader parameter on a material.
string
The name of the parameter to delete.
void
destroy(): void
Removes this material from the scene and possibly frees up memory from its shaders (if there are no other materials using it).
void
getDefine(name: string): boolean
Returns true if a define is enabled on the material, otherwise false.
string
The name of the define to check.
boolean
The value of the define.
getParameter(name: string): any
Retrieves the specified shader parameter from a material.
string
The name of the parameter to query.
any
The named parameter.
setDefine(name: string, value: undefined | string | false): void
Adds or removes a define on the material. Defines can be used to enable or disable various parts of the shader code.
string
The name of the define to set.
The value of the define. If undefined or false, the define is removed.
undefined | string | false
void
setParameter(name: string, data:
| number
| number[]
| Float32Array<ArrayBufferLike>
| Texture): void
Sets a shader parameter on a material.
string
The name of the parameter to set.
The value for the specified parameter.
number | number | Float32Array<ArrayBufferLike> | Texture
void
update(): void
Applies any changes made to the material's properties.
void