材质的抽象基类。
材质描述了对象objects的外观。它们的定义方式与渲染器无关,
因此,如果您决定使用不同的渲染器,不必重写材质。
所有其他材质类型都继承了以下属性和方法(尽管它们可能具有不同的默认值)。
该方法创建一个通用材质。
设置运行alphaTest时要使用的alpha值。如果不透明度低于此值,则不会渲染材质。默认值为0。
混合目标。默认值为OneMinusSrcAlphaFactor。
目标因子所有可能的取值请参阅constants。
必须将材质的blending设置为CustomBlending才能生效。
.blendDst的透明度。 默认值为 null.
使用混合时所采用的混合方程式。默认值为AddEquation。
混合方程式所有可能的取值请参阅constants。
必须将材质的blending设置为CustomBlending才能生效。
.blendEquation 的透明度. 默认值为 null.
在使用此材质显示对象时要使用何种混合。
必须将其设置为CustomBlending才能使用自定义blendSrc, blendDst 或者 [page:Constant
blendEquation]。
混合模式所有可能的取值请参阅constants。默认值为NormalBlending。
混合源。默认值为SrcAlphaFactor。
源因子所有可能的取值请参阅constants。
必须将材质的blending设置为CustomBlending才能生效。
.blendSrc的透明度。 默认值为 null.
更改剪裁平面的行为,以便仅剪切其交叉点,而不是它们的并集。默认值为 false。
用户定义的剪裁平面,在世界空间中指定为v3d.Plane对象。这些平面适用于所有使用此材质的对象。空间中与平面的有符号距离为负的点被剪裁(未渲染)。 这需要WebGLRenderer.localClippingEnabled为true。 示例请参阅WebGL / clipping /intersection。默认值为 null。
定义是否根据此材质上指定的剪裁平面剪切阴影。默认值为 false。
是否渲染材质的颜色。 这可以与网格的renderOrder属性结合使用,以创建遮挡其他对象的不可见对象。默认值为true。
注入shader的自定义对象。 以键值对形式的对象传递,{ MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }。 这些键值对在顶点和片元着色器中定义。默认值为undefined。
使用何种深度函数。默认为LessEqualDepth。 深度模式所有可能的取值请查阅constants。
是否在渲染此材质时启用深度测试。默认为 true。
渲染此材质是否对深度缓冲区有任何影响。默认为true。
在绘制2D叠加时,将多个事物分层在一起而不创建z-index时,禁用深度写入会很有用。
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.
The stencil comparison function to use. Default is AlwaysStencilFunc. See stencil function constants for all possible values.
The value to use when performing stencil comparisons or stencil operations. Default is 0.
The bit mask to use when comparing against the stencil buffer. Default is 0xFF.
Which stencil operation to perform when the comparison function returns false. Default is KeepStencilOp. See the stencil operations constants for all possible values.
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.
定义材质是否使用平面着色进行渲染。默认值为false。
材质是否受雾影响。默认为true。
此材质实例的唯一编号。
对象的可选名称(不必是唯一的)。默认值为空字符串。
指定需要重新编译材质。
在0.0 - 1.0的范围内的浮点数,表明材质的透明度。值0.0表示完全透明,1.0表示完全不透明。
如果材质的transparent属性未设置为true,则材质将保持完全不透明,此值仅影响其颜色。
默认值为1.0。
是否使用多边形偏移。默认值为false。这对应于WebGL的GL_POLYGON_OFFSET_FILL功能。
设置多边形偏移系数。默认值为0。
设置多边形偏移单位。默认值为0。
重写此材质渲染器的默认精度。可以是"highp", "mediump" 或 "lowp"。默认值为null。
是否预乘alpha(透明度)值。有关差异的示例,请参阅WebGL / Materials / Physical / Transmission。 默认值为false。
是否对颜色应用抖动以消除条带的外观。默认值为 false。
定义投影的面。设置时,可以是v3d.FrontSide, v3d.BackSide, 或Materials。默认值为 null。
如果为null, 则面投射阴影确定如下:
Material.side | Side casting shadows |
---|---|
v3d.FrontSide | 背面 |
v3d.BackSide | 前面 |
v3d.DoubleSide | 双面 |
定义将要渲染哪一面 - 正面,背面或两者。 默认为v3d.FrontSide。其他选项有v3d.BackSide和v3d.DoubleSide。
Defines whether this material is tone mapped according to the renderer's toneMapping setting. Default is true.
定义此材质是否透明。这对渲染有影响,因为透明对象需要特殊处理,并在非透明对象之后渲染。
设置为true时,通过设置材质的opacity属性来控制材质透明的程度。
默认值为false。
值是字符串'Material'。不应该被更改,并且可以用于在场景中查找此类型的所有对象。
此材质实例的UUID,会自动分配,不应该被更改。
This starts at 0 and counts how many times # .needsUpdate : Booleanis set to true.
Defines whether vertex coloring is used. Default is false.
此材质是否可见。默认为true。
一个对象,可用于存储有关Material的自定义数据。它不应该包含对函数的引用,因为这些函数不会被克隆。
返回与此材质具有相同参数的新材质。
将被传入材质中的参数复制到此材质中。
处理材质。材质的纹理不会被处理。需要通过Texture处理。
在编译shader程序之前立即执行的可选回调。此函数使用shader源码作为参数。用于修改内置材质。
Unlike properties, the callback is not supported by .clone(), .copy() and .toJSON().
In case onBeforeCompile is used, this callback can be used to identify values of settings used in onBeforeCompile, so Verge3D 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().
values -- 具有参数的容器。
根据values设置属性。
meta -- 包含有元数据的对象,例如该对象的纹理或图片。 将material对象转换为 Verge3D JSON Object/Scene format(Verge3D JSON 物体/场景格式)。