new MaterialAppearance()
任意几何体的外观(与EllipsoidSurfaceAppearance相对),支持材质着色。
| Name | Type | Default | Description |
|---|---|---|---|
options.flat |
Boolean | false |
可选
为true时,片段着色器中使用平面着色,这意味着不考虑光照。 |
options.faceForward |
Boolean | !options.closed |
可选
为true时,片段着色器会根据需要翻转表面法线,以确保法线朝向观察者,避免出现暗部。当需要对几何体的两侧(如 |
options.translucent |
Boolean | true |
可选
为 true 时,几何体将呈现半透明效果,因此 |
options.closed |
Boolean | false |
可选
为 true 时,几何体将被封闭,因此 |
options.materialSupport |
MaterialAppearance.MaterialSupport | MaterialAppearance.MaterialSupport.TEXTURED |
可选
支持的材质类型。 |
options.material |
Material | Material.ColorType |
可选
用来确定碎片颜色的材质。 |
options.vertexShaderSource |
String |
可选
可选的GLSL顶点着色源,覆盖默认顶点着色。 |
|
options.fragmentShaderSource |
String |
可选
可选的GLSL片段着色源,覆盖默认的片段着色。 |
|
options.renderState |
RenderState |
可选
可选的呈现状态,覆盖默认呈现状态。 |
Example
var primitive = new SuperMap3D.Primitive({
geometryInstances : new SuperMap3D.GeometryInstance({
geometry : new SuperMap3D.WallGeometry({
materialSupport : SuperMap3D.MaterialAppearance.MaterialSupport.BASIC.vertexFormat,
// ...
})
}),
appearance : new SuperMap3D.MaterialAppearance({
material : SuperMap3D.Material.fromType('Color'),
faceForward : true
})
});
Members
-
static MaterialSupport
-
确定
MaterialAppearance实例所支持的Material类型。 这是在灵活性(多种材质)和内存/性能(所需顶点格式和 GLSL 着色器复杂度)之间的权衡。 -
readonly closedBoolean
-
为 true 时,几何体将处于关闭状态,因此
MaterialAppearance#renderState启用了后表面剔除功能。如果查看器进入几何体,它将不可见。- Default Value: false
readonly faceForwardBoolean
为true时,片段着色器会根据需要翻转表面法线,以确保法线面向观察者,避免出现暗点。当需要对几何体的两侧(如WallGeometry)进行着色时,这一点非常有用。
- Default Value: true
readonly flatBoolean
为true时,片段着色器中使用平面着色,这意味着不考虑光照。
- Default Value: false
readonly fragmentShaderSourceString
片段着色器的 GLSL 源代码。完整的片段着色器源代码是在考虑到MaterialAppearance#material, MaterialAppearance#flat 和 MaterialAppearance#faceForward 的情况下,以程序化的方式创建的。
使用 MaterialAppearance#getFragmentShaderSource 获取完整的源代码。
materialMaterial
用于确定片段颜色的材质。与其他 MaterialAppearance 属性不同,它不是只读属性,因此外观的材质可以随时更改。
- Default Value:
Material.ColorTypereadonly materialSupportMaterialAppearance.MaterialSupport
此实例支持的材质类型。这将影响所需的 VertexFormat 以及顶点和片段着色器的复杂程度。
- Default Value:
MaterialAppearance.MaterialSupport.TEXTUREDreadonly renderStateObject
渲染几何体时使用的 WebGL 固定函数状态。
呈现状态可以在构建 MaterialAppearance 实例时显式定义,也可以通过 MaterialAppearance#translucent 和 MaterialAppearance#closed 隐式设置。
translucentBoolean
为true时,几何体将呈现半透明效果。
- Default Value: true
readonly vertexFormatVertexFormat
该外观实例兼容的 VertexFormat 顶点属性。一个几何体可以有更多的顶点属性,并且仍然兼容,但可能要付出性能代价,但不能少。
- Default Value:
MaterialAppearance.MaterialSupport.TEXTURED.vertexFormatreadonly vertexShaderSourceString
顶点着色器的 GLSL 源代码。
Methods
-
getFragmentShaderSource(){String}
-
程序化创建完整的 GLSL 片段着色器源。 对于
MaterialAppearance来说,这源于MaterialAppearance#fragmentShaderSource、MaterialAppearance#material、MaterialAppearance#flat和MaterialAppearance#faceForward。Returns:
Type Description String 完整的 GLSL 片段着色器源。 -
getRenderState(){Object}
-
创建一个呈现状态。这不是最终的呈现状态实例;相反,它可以包含与上下文中创建的呈现状态相同的呈现状态属性子集。
Returns:
Type Description Object 渲染状态。 -
isTranslucent(){Boolean}
-
根据
MaterialAppearance#translucent和Material#isTranslucent确定几何体是否半透明。Returns:
Type Description Boolean 如果外观是半透明的,则为 true。