PerInstanceColorAppearance - Cesium Documentation

# PerInstanceColorAppearance

#### new PerInstanceColorAppearance(options)

  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.

  Name | Type | Description
  --- | --- | ---

  `options`

  Object

  optional Object with the following properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `flat` | Boolean | `false` | optional When `true`, flat shading is used in the fragment shader, which means lighting is not taking into account.
  `faceForward` | Boolean | `!options.closed` | optional 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 | `true` | optional When `true`, the geometry is expected to appear translucent so `PerInstanceColorAppearance#renderState` has alpha blending enabled.
  `closed` | Boolean | `false` | optional When `true`, the geometry is expected to be closed so `PerInstanceColorAppearance#renderState` has backface culling enabled.
  `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.

  ##### Example:

      // A solid white line segment
      var primitive = new Cesium.Primitive({
        geometryInstances : new Cesium.GeometryInstance({
          geometry : new Cesium.SimplePolylineGeometry({
            positions : Cesium.Cartesian3.fromDegreesArray([
              0.0, 0.0,
              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 rectangles in a primitive, each with a different color
      var instance = new Cesium.GeometryInstance({
        geometry : new Cesium.RectangleGeometry({
          rectangle : Cesium.Rectangle.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.RectangleGeometry({
          rectangle : Cesium.Rectangle.fromDegrees(0.0, 40.0, 10.0, 50.0)
        }),
        color : new Cesium.Color(0.0, 0.0, 1.0, 0.5)
      });

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

  ##### Demo:

  - Cesium Sandcastle Per Instance Color Appearance Demo
  Source: Scene/PerInstanceColorAppearance.js, line 81

### Members

#### staticconstantPerInstanceColorAppearance.FLAT_VERTEX_FORMAT :VertexFormat

  The `VertexFormat` that all `PerInstanceColorAppearance` instances are compatible with when `PerInstanceColorAppearance#flat` is `false`. This requires only a `position` attribute.
  Source: Scene/PerInstanceColorAppearance.js, line 262

#### staticconstantPerInstanceColorAppearance.VERTEX_FORMAT :VertexFormat

  The `VertexFormat` that all `PerInstanceColorAppearance` instances are compatible with. This requires only `position` and `st` attributes.
  Source: Scene/PerInstanceColorAppearance.js, line 251

#### readonlyclosed :Boolean

  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`
  Source: Scene/PerInstanceColorAppearance.js, line 183

#### readonlyfaceForward :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`.
  Default Value: `true`
  Source: Scene/PerInstanceColorAppearance.js, line 235

#### readonlyflat :Boolean

  When `true`, flat shading is used in the fragment shader, which means lighting is not taking into account.
  Default Value: `false`
  Source: Scene/PerInstanceColorAppearance.js, line 216

#### readonlyfragmentShaderSource :String

  The GLSL source code for the fragment shader.
  Source: Scene/PerInstanceColorAppearance.js, line 146

#### material :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`
  Source: Scene/PerInstanceColorAppearance.js, line 99

#### readonlyrenderState :Object

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

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

  Source: Scene/PerInstanceColorAppearance.js, line 165

#### translucent :Boolean

  When `true`, the geometry is expected to appear translucent so `PerInstanceColorAppearance#renderState` has alpha blending enabled.
  Default Value: `true`
  Source: Scene/PerInstanceColorAppearance.js, line 109

#### readonlyvertexFormat :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.
  Source: Scene/PerInstanceColorAppearance.js, line 199

#### readonlyvertexShaderSource :String

  The GLSL source code for the vertex shader.
  Source: Scene/PerInstanceColorAppearance.js, line 132

### Methods

#### getFragmentShaderSource()

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

  ##### Returns:

  String The full GLSL fragment shader source.
  Source: Scene/PerInstanceColorAppearance.js, line 273

#### 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.

  ##### Returns:

  The render state.
  Source: Scene/PerInstanceColorAppearance.js, line 293

#### isTranslucent() → Boolean

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

  ##### Returns:

  `true` if the appearance is translucent.
  Source: Scene/PerInstanceColorAppearance.js, line 282