Class: Material

pc.Material

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.

Constructor

new Material()

Create a new Material instance
Properties:
Name Type Description
alphaTest Number 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 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.
alphaWrite Boolean If true, the alpha 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.
blendType Number Controls how primitives are blended when being written to the currently active render target. Can be one of the following values:
  • pc.BLEND_SUBTRACTIVE: Subtract the color of the source fragment from the destination fragment and write the result to the frame buffer.
  • pc.BLEND_ADDITIVE: Add the color of the source fragment to the destination fragment and write the result to the frame buffer.
  • pc.BLEND_NORMAL: Enable simple translucency for materials such as glass. This is equivalent to enabling a source blend mode of pc.BLENDMODE_SRC_ALPHA and a destination blend mode of pc.BLENDMODE_ONE_MINUS_SRC_ALPHA.
  • pc.BLEND_NONE: Disable blending.
  • pc.BLEND_PREMULTIPLIED: Similar to pc.BLEND_NORMAL expect the source fragment is assumed to have already been multiplied by the source alpha value.
  • pc.BLEND_MULTIPLICATIVE: Multiply the color of the source fragment by the color of the destination fragment and write the result to the frame buffer.
  • pc.BLEND_ADDITIVEALPHA: Same as pc.BLEND_ADDITIVE except the source RGB is multiplied by the source alpha.
Defaults to pc.BLEND_NONE.
blueWrite Boolean If true, the blue 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.
cull Number Controls how triangles are culled based on their face direction with respect to the viewpoint. Can be one of the following values:
  • pc.CULLFACE_NONE: Do not cull triangles based on face direction.
  • pc.CULLFACE_BACK: Cull the back faces of triangles (do not render triangles facing away from the view point).
  • pc.CULLFACE_FRONT: Cull the front faces of triangles (do not render triangles facing towards the view point).
  • pc.CULLFACE_FRONTANDBACK: Cull both front and back faces (triangles will not be rendered).
Defaults to pc.CULLFACE_BACK.
depthTest Boolean 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.
depthWrite Boolean 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.
greenWrite Boolean If true, the green 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.
name String The name of the material.
redWrite Boolean 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.
shader pc.Shader The shader used by this material to render mesh instances.
stencilFront pc.StencilParameters Stencil parameters for front faces (default is null).
stencilBack pc.StencilParameters Stencil parameters for back faces (default is null).
depthBias Number Offsets the output depth buffer value. Useful for decals to prevent z-fighting.
slopeDepthBias Number Same as pc.Material#depthBias, but also depends on the slope of the triangle relative to the camera.
Source:

Methods

deleteParameter(name)

Deletes a shader parameter on a material.
Parameters:
Name Type Description
name String The name of the parameter to delete.
Source:

destroy()

Removes this material from the scene and possibly frees up memory from its shaders (if there are no other materials using it).
Source:

getParameter(name) → {Object}

Retrieves the specified shader parameter from a material.
Parameters:
Name Type Description
name String The name of the parameter to query.
Source:
Returns:
The named parameter.
Type
Object

setParameter(name, data, passFlagsopt)

Sets a shader parameter on a material.
Parameters:
Name Type Attributes Description
name String The name of the parameter to set.
data Number | Array | pc.Texture The value for the specified parameter.
passFlags Number <optional>
Mask describing which passes the material should be included in.
Source:

setParameters()

Pushes all material parameters into scope.
Source:

update()

Applies any changes made to the material's properties.
Source: