new PerInstanceColorAppearance()
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 | Default | Description |
|---|---|---|---|
options.flat |
Boolean |
false
|
optional
When true, flat shading is used in the fragment shader, which means lighting is not taking into account. |
options.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. |
options.translucent |
Boolean |
true
|
optional
When true, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled. |
options.closed |
Boolean |
false
|
optional
When true, the geometry is expected to be closed so PerInstanceColorAppearance#renderState has backface culling enabled. |
options.vertexShaderSource |
String | optional Optional GLSL vertex shader source to override the default vertex shader. | |
options.fragmentShaderSource |
String | optional Optional GLSL fragment shader source to override the default fragment shader. | |
options.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()
});
Members
-
staticconstantPerInstanceColorAppearance.FLAT_VERTEX_FORMAT :VertexFormat
-
The
VertexFormatthat allPerInstanceColorAppearanceinstances are compatible with whenPerInstanceColorAppearance#flatisfalse. This requires only apositionattribute. -
staticconstantPerInstanceColorAppearance.VERTEX_FORMAT :VertexFormat
-
The
VertexFormatthat allPerInstanceColorAppearanceinstances are compatible with. This requires onlypositionandstattributes. -
readonlyclosed :Boolean
-
When
true, the geometry is expected to be closed soPerInstanceColorAppearance#renderStatehas backface culling enabled. If the viewer enters the geometry, it will not be visible.-
Default Value:
false -
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 likeWallGeometry.-
Default Value:
true -
readonlyflat :Boolean
-
When
true, flat shading is used in the fragment shader, which means lighting is not taking into account.-
Default Value:
false -
readonlyfragmentShaderSource :String
-
The GLSL source code for the fragment shader.
-
getFragmentShaderSource
-
Procedurally creates the full GLSL fragment shader source. For
PerInstanceColorAppearance, this is derived fromPerInstanceColorAppearance#fragmentShaderSource,PerInstanceColorAppearance#flat, andPerInstanceColorAppearance#faceForward. -
getRenderState
-
Creates a render state. This is not the final
RenderStateinstance; instead, it can contain a subset of render state properties identical torenderStatepassed toContext#createRenderState. -
isTranslucent
-
Determines if the geometry is translucent based on
PerInstanceColorAppearance#translucent. -
material :Material
-
This property is part of the
Appearanceinterface, but is not used byPerInstanceColorAppearancesince a fully custom fragment shader is used.-
Default Value:
undefined -
readonlyrenderState :Object
-
The WebGL fixed-function state to use when rendering the geometry.
The render state can be explicitly defined when constructing a
PerInstanceColorAppearanceinstance, or it is set implicitly viaPerInstanceColorAppearance#translucentandPerInstanceColorAppearance#closed. -
translucent :Boolean
-
When
true, the geometry is expected to appear translucent soPerInstanceColorAppearance#renderStatehas alpha blending enabled.-
Default Value:
true -
readonlyvertexFormat :VertexFormat
-
The
VertexFormatthat 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. -
readonlyvertexShaderSource :String
-
The GLSL source code for the vertex shader.
