Any property of the material (including any property inherited from Material and MeshStandardMaterial) can be passed in here. The exception is the property color, which can be passed in as a hexadecimal string and is 0xffffff (white) by default. Color.set( color ) is called internally.
an object with one or more properties defining the material's appearance.
an object with one or more properties defining the material's appearance.
This creates a generic material.
Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object.
The alpha map is a grayscale texture that controls the opacity across the surface (black: fully transparent; white: fully opaque). Default is null. Only the color of the texture is used, ignoring the alpha channel if one exists. For RGB and RGBA textures, the WebGL renderer will use the green channel when sampling this texture due to the extra bit of precision provided for green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and luminance/alpha textures will also still work as expected.
Sets the alpha value to be used when running an alpha test. The material will not be rendered if the opacity is lower than this value. Default is 0.
Enables alpha to coverage. Can only be used with MSAA-enabled contexts (meaning when the renderer was created with antialias parameter set to true). Default is false.
The red channel of this texture is used as the ambient occlusion map. Default is null. The aoMap requires a second set of UVs.
Intensity of the ambient occlusion effect. Default is 1. Zero is no occlusion effect.
Blending destination. Default is OneMinusSrcAlphaFactor. See the destination factors constants for all possible values. The material's blending must be set to CustomBlending for this to have any effect.
The transparency of the .blendDst. Uses .blendDst value if null. Default is null.
Blending equation to use when applying blending. Default is AddEquation. See the blending equation constants for all possible values. The material's blending must be set to CustomBlending for this to have any effect.
The transparency of the .blendEquation. Uses .blendEquation value if null. Default is null.
Blending source. Default is SrcAlphaFactor. See the source factors constants for all possible values. The material's blending must be set to CustomBlending for this to have any effect.
The transparency of the .blendSrc. Uses .blendSrc value if null. Default is null.
Which blending to use when displaying objects with this material. This must be set to CustomBlending to use custom blendSrc, blendDst or blendEquation. See the blending mode constants for all possible values. Default is NormalBlending.
The texture to create a bump map. The black and white values map to the perceived depth in relation to the lights. Bump doesn't actually affect the geometry of the object, only the lighting. If a normal map is defined this will be ignored.
How much the bump map affects the material. Typical ranges are 0-1. Default is 1.
Represents the intensity of the clear coat layer, from 0.0 to 1.0. Use clear coat related properties to enable multilayer materials that have a thin translucent layer over the base layer. Default is 0.0.
The red channel of this texture is multiplied against .clearcoat, for per-pixel control over a coating's intensity. Default is null.
Can be used to enable independent normals for the clear coat layer. Default is null.
How much .clearcoatNormalMap affects the clear coat layer, from (0,0) to (1,1). Default is (1,1).
Roughness of the clear coat layer, from 0.0 to 1.0. Default is 0.0.
The green channel of this texture is multiplied against .clearcoatRoughness, for per-pixel control over a coating's roughness. Default is null.
Changes the behavior of clipping planes so that only their intersection is clipped, rather than their union. Default is false.
Defines whether to clip shadows according to the clipping planes specified on this material. Default is false.
User-defined clipping planes specified as THREE.Plane objects in world space. These planes apply to the objects this material is attached to. Points in space whose signed distance to the plane is negative are clipped (not rendered). This requires WebGLRenderer.localClippingEnabled to be true. See the WebGL / clipping /intersection example. Default is null.
Color of the material, by default set to white (0xffffff).
Whether to render the material's color. This can be used in conjunction with a mesh's renderOrder property to create invisible objects that occlude other objects. Default is true.
Defines custom constants using #define directives within the GLSL code for both the vertex shader and the fragment shader; each key/value pair yields another directive:
Which depth function to use. Default is LessEqualDepth. See the depth mode constants for all possible values.
Whether to have depth test enabled when rendering this material. Default is true.
Whether rendering this material has any effect on the depth buffer. Default is true. When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts.
The offset of the displacement map's values on the mesh's vertices. Without a displacement map set, this value is not applied. Default is 0.
The displacement map affects the position of the mesh's vertices. Unlike other maps which only affect the light and shade of the material the displaced vertices can cast shadows,s block other objects, and otherwise act as real geometry. The displacement texture is an image where the value of each pixel (white being the highest) is mapped against, and repositions, the vertices of the mesh.
How much the displacement map affects the mesh (where black is no displacement, and white is maximum displacement). Without a displacement map set, this value is not applied.
Whether to apply dithering to the color to remove the appearance of banding. Default is false.
Emissive (light) color of the material, essentially a solid color unaffected by other lighting. Default is black.
Intensity of the emissive light. Modulates the emissive color. Default is 1.
Set emissive (glow) map. Default is null. The emissive map color is modulated by the emissive color and the emissive intensity. If you have an emissive map, be sure to set the emissive color to something other than black.
The environment map. Default is null.
Scales the effect of the environment map by multiplying its color.
Define whether the material is rendered with flat shading. Default is false.
Whether the material is affected by fog. Default is true.
When this property is set to THREE.RGBFormat, the material is considered to be opaque and alpha values are ignored. Default is THREE.RGBAFormat.
Unique number for this material instance.
Index-of-refraction for non-metallic materials, from 1.0 to 2.333. Default is 1.5.
Used to check whether this or derived classes are materials. Default is true. You should not change this, as it used internally for optimisation.
The light map. Default is null. The lightMap requires a second set of UVs.
Intensity of the baked light. Default is 1.
The color map. Default is null.
How much the material is like a metal. Non-metallic materials such as wood or stone use 0.0, metallic use 1.0, with nothing (usually) in between. Default is 0.0. A value between 0.0 and 1.0 could be used for a rusty metal look. If metalnessMap is also provided, both values are multiplied.
The blue channel of this texture is used to alter the metalness of the material.
Optional name of the object (doesn't need to be unique). Default is an empty string.
Specifies that the material needs to be recompiled.
The texture to create a normal map. The RGB values affect the surface normal for each pixel fragment and change the way the color is lit. Normal maps do not change the actual shape of the surface, only the lighting.e In case the material has a normal map authored using the left handed convention, the y component of normalScale should be negated to compensate for the different handedness.
The type of normal map. Options are THREE.TangentSpaceNormalMap (default), and THREE.ObjectSpaceNormalMap.
How much the normal map affects the material. Typical ranges are 0-1. Default is a Vector2 set to (1,1).
Float in the range of 0.0 - 1.0 indicating how transparent the material is. A value of 0.0 indicates fully transparent, 1.0 is fully opaque. If the material's transparent property is not set to true, the material will remain fully opaque and this value will only affect its color. Default is 1.0.
Whether to use polygon offset. Default is false. This corresponds to the GL_POLYGON_OFFSET_FILL WebGL feature.
Sets the polygon offset factor. Default is 0.
Sets the polygon offset units. Default is 0.
Override the renderer's default precision for this material. Can be "highp", "mediump" or "lowp". Default is null.
Whether to premultiply the alpha (transparency) value. See [Example:webgl_materials_physical_transmission WebGL / Materials / Physical / Transmission] for an example of the difference. Default is false.
How much the environment map affects the surface; also see .combine. The default value is 1 and the valid range is between 0 (no reflections) and 1 (full reflections).
The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material. It is used with environment mapping modes THREE.CubeRefractionMapping and THREE.EquirectangularRefractionMapping. The refraction ratio should not exceed 1. Default is 0.98.
How rough the material appears. 0.0 means a smooth mirror reflection, 1.0 means fully diffuse. Default is 1.0. If roughnessMap is also provided, both values are multiplied.
The green channel of this texture is used to alter the roughness of the material.
Defines which side of faces cast shadows. When set, can be THREE.FrontSide, THREE.BackSide, or THREE.DoubleSide. Default is null. If null, the side casting shadows is determined as follows:
The sheen tint. Default is 0xffffff, white.
The RGB channels of this texture are multiplied against .sheenColor, for per-pixel control over sheen tint. Default is null.
Roughness of the sheen layer, from 0.0 to 1.0. Default is 1.0.
Defines which side of faces will be rendered - front, back or both. Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide.
Which stencil operation to perform when the comparison function returns false. Default is KeepStencilOp. See the stencil operations constants for all possible values.
The stencil comparison function to use. Default is AlwaysStencilFunc. See stencil function constants for all possible values.
The bit mask to use when comparing against the stencil buffer. Default is 0xFF.
The value to use when performing stencil comparisons or stencil operations. Default is 0.
Whether stencil operations are performed against the stencil buffer. In order to perform writes or comparisons against the stencil buffer this value must be true. Default is false.
The bit mask to use when writing to the stencil buffer. Default is 0xFF.
Which stencil operation to perform when the comparison function returns true but the depth test fails. Default is KeepStencilOp. See the stencil operations constants for all possible values.
Which stencil operation to perform when the comparison function returns true and the depth test passes. Default is KeepStencilOp. See the stencil operations constants for all possible values.
Defines whether this material is tone mapped according to the renderer's toneMapping setting. Default is true.
Degree of transmission (or optical transparency), from 0.0 to 1.0. Default is 0.0. Thin, transparent or semitransparent, plastic or glass materials remain largely reflective even if they are fully transmissive. The transmission property can be used to model these materials. When transmission is non-zero, opacity should be set to 1.
The red channel of this texture is multiplied against .transmission, for per-pixel control over optical transparency. Default is null.
Defines whether this material is transparent. This has an effect on rendering as transparent objects need special treatment and are rendered after non-transparent objects. g When set to true, the extent to which the material is transparent is controlled by setting its opacity property. Default is false.
An object that can be used to store custom data about the Material. It should not hold references to functions as these will not be cloned.
UUID of this material instance. This gets automatically assigned, so this shouldn't be edited.
This starts at 0 and counts how many times [property:Boolean needsUpdate] is set to true.
Defines whether vertex coloring is used. Default is false.
Defines whether this material is visible. Default is true.
Render geometry as wireframe. Default is false (i.e. render as flat polygons).
Define appearance of line ends. Possible values are "butt", "round" and "square". Default is 'round'. This corresponds to the 2D Canvas lineCap property and it is ignored by the WebGL renderer.
Define appearance of line joints. Possible values are "round", "bevel" and "miter". Default is 'round'. This corresponds to the 2D Canvas lineJoin property and it is ignored by the WebGL renderer.
Controls wireframe thickness. Default is 1. Due to limitations of the OpenGL Core Profile with the WebGL renderer on most platforms linewidth will always be 1 regardless of the set value.
Adds a listener to an event type.
The type of event to listen to.
The that gets called when the event is fired.
Return a new material with the same parameters as this material.
Copy the parameters from the passed material into this material.
In case onBeforeCompile is used, this callback can be used to identify values of settings used in onBeforeCompile, so three.js can reuse a cached shader or recompile the shader for this material as needed. For example, if onBeforeCompile contains a conditional statement like:
if ( black ) {
shader.fragmentShader = shader.fragmentShader.replace('gl_FragColor = vec4(1)', 'gl_FragColor = vec4(0)')
}
// then customProgramCacheKey should be set like this:
material.customProgramCacheKey = function() {
return black ? '1' : '0';
}
Unlike properties, the callback is not supported by .clone(), .copy() and .toJSON().
Fire an event type.
This disposes the material. Textures of a material don't get disposed. These needs to be disposed by Texture.
Checks if listener is added to an event type.
The type of event to listen to.
The that gets called when the event is fired.
Source code of the shader
WebGLRenderer Context that is initializing the material
Removes a listener from an event type.
The type of the listener that gets removed.
The listener that gets removed.
Sets the properties based on the parameters.
A container with parameters.
Convert the material to three.js JSON Object/Scene format.
Generated using TypeDoc
An extension of the MeshStandardMaterial, providing more advanced physically-based rendering properties: Clearcoat: Some materials - like car paints, carbon fiber, and wet surfaces - require a clear, reflective layer on top of another layer that may be irregular or rough. Clearcoat approximates this effect, without the need for a separate transparent surface. Physically-based transparency: One limitation of .opacity is that highly transparent materials are less reflective. Physically-based .transmission provides a more realistic option for thin, transparent surfaces like glass. Advanced reflectivity: More flexible reflectivity for non-metallic materials. As a result of these complex shading features, MeshPhysicalMaterial has a higher performance cost, per pixel, than other three.js materials. Most effects are disabled by default, and add cost as they are enabled. For best results, always specify an .envMap when using this material.
See the ngx3js docs page for details. See the ngx material page for a live demo.
Examples
materials / variations / physical | materials / physical / clearcoat | materials / physical / reflectivity | materials / physical / transmission