MaterialAppearance

new SuperMap3D.MaterialAppearance(options)

任意几何体的外观(与EllipsoidSurfaceAppearance相对),支持材质着色。
Name Type Description
options Object optional 具有以下属性的对象:
Name Type Default Description
flat Boolean false optional 为true时,片段着色器中使用平面着色,这意味着不考虑光照。
faceForward Boolean !options.closed optional 为true时,片段着色器会根据需要翻转表面法线,以确保法线朝向观察者,避免出现暗部。当需要对几何体的两侧(如WallGeometry)进行着色时,这一点非常有用。
translucent Boolean true optional 为 true 时,几何体将呈现半透明效果,因此MaterialAppearance#renderState 将启用 alpha 混合。
closed Boolean false optional 为 true 时,几何体将被封闭,因此MaterialAppearance#renderState 启用了后表面剔除。
materialSupport MaterialAppearance.MaterialSupport MaterialAppearance.MaterialSupport.TEXTURED optional 支持的材质类型。
material Material Material.ColorType optional 用来确定碎片颜色的材质。
vertexShaderSource String optional 可选的GLSL顶点着色源,覆盖默认顶点着色。
fragmentShaderSource String optional 可选的GLSL片段着色源,覆盖默认的片段着色。
renderState RenderState optional 可选的呈现状态,覆盖默认呈现状态。
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

staticSuperMap3D.MaterialAppearance.MaterialSupport

确定MaterialAppearance 实例所支持的Material 类型。 这是在灵活性(多种材质)和内存/性能(所需顶点格式和 GLSL 着色器复杂度)之间的权衡。

readonlyclosed : Boolean

为 true 时,几何体将处于关闭状态,因此MaterialAppearance#renderState 启用了后表面剔除功能。如果查看器进入几何体,它将不可见。
Default Value: false

readonlyfaceForward : Boolean

为true时,片段着色器会根据需要翻转表面法线,以确保法线面向观察者,避免出现暗点。当需要对几何体的两侧(如WallGeometry)进行着色时,这一点非常有用。
Default Value: true

readonlyflat : Boolean

为true时,片段着色器中使用平面着色,这意味着不考虑光照。
Default Value: false

readonlyfragmentShaderSource : String

片段着色器的 GLSL 源代码。完整的片段着色器源代码是在考虑到MaterialAppearance#material, MaterialAppearance#flatMaterialAppearance#faceForward 的情况下,以程序化的方式创建的。 使用 MaterialAppearance#getFragmentShaderSource 获取完整的源代码。

material : Material

用于确定片段颜色的材质。与其他 MaterialAppearance 属性不同,它不是只读属性,因此外观的材质可以随时更改。
Default Value: Material.ColorType

readonlymaterialSupport : MaterialAppearance.MaterialSupport

此实例支持的材质类型。这将影响所需的 VertexFormat 以及顶点和片段着色器的复杂程度。
Default Value: MaterialAppearance.MaterialSupport.TEXTURED

readonlyrenderState : Object

渲染几何体时使用的 WebGL 固定函数状态。

呈现状态可以在构建 MaterialAppearance 实例时显式定义,也可以通过 MaterialAppearance#translucentMaterialAppearance#closed 隐式设置。

translucent : Boolean

为true时,几何体将呈现半透明效果。
Default Value: true

readonlyvertexFormat : VertexFormat

该外观实例兼容的 VertexFormat 顶点属性。一个几何体可以有更多的顶点属性,并且仍然兼容,但可能要付出性能代价,但不能少。
Default Value: MaterialAppearance.MaterialSupport.TEXTURED.vertexFormat

readonlyvertexShaderSource : String

顶点着色器的 GLSL 源代码。

Methods

getFragmentShaderSource()String

Returns:
完整的 GLSL 片段着色器源。

getRenderState()Object

创建一个呈现状态。这不是最终的呈现状态实例;相反,它可以包含与上下文中创建的呈现状态相同的呈现状态属性子集。
Returns:
渲染状态。

isTranslucent()Boolean

根据 MaterialAppearance#translucentMaterial#isTranslucent 确定几何体是否半透明。
Returns:
如果外观是半透明的,则为 true。