Class: MaterialAppearance

MaterialAppearance

new MaterialAppearance(optionsopt)

An appearance for arbitrary geometry (as opposed to EllipsoidSurfaceAppearance, for example) that supports shading with materials.
Parameters:
Name Type Attributes Description
options Object <optional>
Object with the following properties:
Properties
Name Type Attributes Default Description
flat Boolean <optional>
false When true, flat shading is used in the fragment shader, which means lighting is not taking into account.
faceForward Boolean <optional>
!options.closed When true, the fragment shader flips the surface normal as needed to ensure that the normal faces the viewer to avoid dark spots. This is useful when both sides of a geometry should be shaded like WallGeometry.
translucent Boolean <optional>
true When true, the geometry is expected to appear translucent so MaterialAppearance#renderState has alpha blending enabled.
closed Boolean <optional>
false When true, the geometry is expected to be closed so MaterialAppearance#renderState has backface culling enabled.
materialSupport MaterialAppearance.MaterialSupport <optional>
MaterialAppearance.MaterialSupport.TEXTURED The type of materials that will be supported.
material Material <optional>
Material.ColorType The material used to determine the fragment color.
vertexShaderSource String <optional>
Optional GLSL vertex shader source to override the default vertex shader.
fragmentShaderSource String <optional>
Optional GLSL fragment shader source to override the default fragment shader.
renderState RenderState <optional>
Optional render state to override the default render state.
Source:
See:
Example
var primitive = new Cesium.Primitive({
  geometryInstances : new Cesium.GeometryInstance({
    geometry : new Cesium.WallGeometry({
            materialSupport :  Cesium.MaterialAppearance.MaterialSupport.BASIC.vertexFormat,
      // ...
    })
  }),
  appearance : new Cesium.MaterialAppearance({
    material : Cesium.Material.fromType('Color'),
    faceForward : true
  })

});

Members

(static) MaterialSupport

Determines the type of Material that is supported by a MaterialAppearance instance. This is a trade-off between flexibility (a wide array of materials) and memory/performance (required vertex format and GLSL shader complexity.
Source:

(readonly) closed :Boolean

When true, the geometry is expected to be closed so MaterialAppearance#renderState has backface culling enabled. If the viewer enters the geometry, it will not be visible.
Type:
  • Boolean
Default Value:
  • false
Source:

(readonly) faceForward :Boolean

When true, the fragment shader flips the surface normal as needed to ensure that the normal faces the viewer to avoid dark spots. This is useful when both sides of a geometry should be shaded like WallGeometry.
Type:
  • Boolean
Default Value:
  • true
Source:

(readonly) flat :Boolean

When true, flat shading is used in the fragment shader, which means lighting is not taking into account.
Type:
  • Boolean
Default Value:
  • false
Source:

(readonly) fragmentShaderSource :String

The GLSL source code for the fragment shader. The full fragment shader source is built procedurally taking into account MaterialAppearance#material, MaterialAppearance#flat, and MaterialAppearance#faceForward. Use MaterialAppearance#getFragmentShaderSource to get the full source.
Type:
  • String
Source:

material :Material

The material used to determine the fragment color. Unlike other MaterialAppearance properties, this is not read-only, so an appearance's material can change on the fly.
Type:
Default Value:
Source:
See:

(readonly) materialSupport :MaterialAppearance.MaterialSupport

The type of materials supported by this instance. This impacts the required VertexFormat and the complexity of the vertex and fragment shaders.
Type:
Default Value:
Source:

(readonly) renderState :Object

The WebGL fixed-function state to use when rendering the geometry.

The render state can be explicitly defined when constructing a MaterialAppearance instance, or it is set implicitly via MaterialAppearance#translucent and MaterialAppearance#closed.

Type:
  • Object
Source:

translucent :Boolean

When true, the geometry is expected to appear translucent.
Type:
  • Boolean
Default Value:
  • true
Source:

(readonly) vertexFormat :VertexFormat

The VertexFormat that this appearance instance is compatible with. A geometry can have more vertex attributes and still be compatible - at a potential performance cost - but it can't have less.
Type:
Default Value:
  • MaterialAppearance.MaterialSupport.TEXTURED.vertexFormat
Source:

(readonly) vertexShaderSource :String

The GLSL source code for the vertex shader.
Type:
  • String
Source:

Methods

getFragmentShaderSource() → {String}

Procedurally creates the full GLSL fragment shader source. For MaterialAppearance, this is derived from MaterialAppearance#fragmentShaderSource, MaterialAppearance#material, MaterialAppearance#flat, and MaterialAppearance#faceForward.
Source:
Returns:
The full GLSL fragment shader source.
Type
String

getRenderState() → {Object}

Creates a render state. This is not the final render state instance; instead, it can contain a subset of render state properties identical to the render state created in the context.
Source:
Returns:
The render state.
Type
Object

isTranslucent() → {Boolean}

Determines if the geometry is translucent based on MaterialAppearance#translucent and Material#isTranslucent.
Source:
Returns:
true if the appearance is translucent.
Type
Boolean