PerInstanceColorAppearance

PerInstanceColorAppearance

new

An appearance for GeometryInstance instances with color attributes. This allows several geometry instances, each with a different color, to be drawn with the same Primitive as shown in the second example below.

Parameters:
Name Type Argument Default Description
options.flat Boolean <optional>
false When true, flat shading is used in the fragment shader, which means lighting is not taking into account.
options.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.
options.translucent Boolean <optional>
true When true, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled.
options.closed Boolean <optional>
false When true, the geometry is expected to be closed so PerInstanceColorAppearance#renderState has backface culling enabled.
options.vertexShaderSource String <optional>
undefined Optional GLSL vertex shader source to override the default vertex shader.
options.fragmentShaderSource String <optional>
undefined Optional GLSL fragment shader source to override the default fragment shader.
options.renderState RenderState <optional>
undefined Optional render state to override the default render state.
Example
// A solid white line segment
var primitive = new Cesium.Primitive({
  geometryInstances : new Cesium.GeometryInstance({
    geometry : new Cesium.SimplePolylineGeometry({
      positions : ellipsoid.cartographicArrayToCartesianArray([
        Cesium.Cartographic.fromDegrees(0.0, 0.0),
        Cesium.Cartographic.fromDegrees(5.0, 0.0)
      ])
    }),
    attributes : {
      color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 1.0, 1.0, 1.0))
    }
  }),
  appearance : new Cesium.PerInstanceColorAppearance({
    flat : true,
    translucent : false
  })
}));

// Two extents in a primitive, each with a different color
var instance = new Cesium.GeometryInstance({
  geometry : new Cesium.ExtentGeometry({
    extent : Cesium.Extent.fromDegrees(0.0, 20.0, 10.0, 30.0)
  }),
  color : new Cesium.Color(1.0, 0.0, 0.0, 0.5)
});

var anotherInstance = new Cesium.GeometryInstance({
  geometry : new Cesium.ExtentGeometry({
    extent : Cesium.Extent.fromDegrees(0.0, 40.0, 10.0, 50.0)
  }),
  color : new Cesium.Color(0.0, 0.0, 1.0, 0.5)
});

var extentPrimitive = new Cesium.Primitive({
  geometryInstances : [instance, anotherInstance],
  appearance : new Cesium.PerInstanceColorAppearance()
});
Source:

Members

<readonly>

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

<readonly>

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.
Default Value:
  • false

<readonly>

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

<readonly> :String

The GLSL source code for the fragment shader. The full fragment shader source is built procedurally taking into account PerInstanceColorAppearance#flat, and PerInstanceColorAppearance#faceForward. Use PerInstanceColorAppearance#getFragmentShaderSource to get the full source.

Procedurally creates the full GLSL fragment shader source. For PerInstanceColorAppearance, this is derived from PerInstanceColorAppearance#fragmentShaderSource, PerInstanceColorAppearance#flat, and PerInstanceColorAppearance#faceForward.

Creates a render state. This is not the final RenderState instance; instead, it can contain a subset of render state properties identical to renderState passed to Context#createRenderState.

Determines if the geometry is translucent based on PerInstanceColorAppearance#translucent.

:Material

This property is part of the Appearance interface, but is not used by PerInstanceColorAppearance since a fully custom fragment shader is used.
Default Value:
  • undefined

<readonly> :Object

The render state. This is not the final RenderState instance; instead, it can contain a subset of render state properties identical to renderState passed to Context#createRenderState.

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

<readonly>

When true, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled.
Default Value:
  • true

<readonly> :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.

<readonly> :String

The GLSL source code for the vertex shader.

<static, constant> :VertexFormat

The VertexFormat that all PerInstanceColorAppearance instances are compatible with when PerInstanceColorAppearance#flat is false. This requires only a position attribute.

<static, constant> :VertexFormat

The VertexFormat that all PerInstanceColorAppearance instances are compatible with. This requires only position and st attributes.