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
VertexFormat
that allPerInstanceColorAppearance
instances are compatible with whenPerInstanceColorAppearance#flat
isfalse
. This requires only aposition
attribute. -
staticconstantPerInstanceColorAppearance.VERTEX_FORMAT :VertexFormat
-
The
VertexFormat
that allPerInstanceColorAppearance
instances are compatible with. This requires onlyposition
andst
attributes. -
readonlyclosed :Boolean
-
When
true
, the geometry is expected to be closed soPerInstanceColorAppearance#renderState
has 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
RenderState
instance; instead, it can contain a subset of render state properties identical torenderState
passed toContext#createRenderState
. -
isTranslucent
-
Determines if the geometry is translucent based on
PerInstanceColorAppearance#translucent
. -
material :Material
-
This property is part of the
Appearance
interface, but is not used byPerInstanceColorAppearance
since 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
PerInstanceColorAppearance
instance, or it is set implicitly viaPerInstanceColorAppearance#translucent
andPerInstanceColorAppearance#closed
. -
translucent :Boolean
-
When
true
, the geometry is expected to appear translucent soPerInstanceColorAppearance#renderState
has alpha blending enabled.-
Default Value:
true
-
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. -
readonlyvertexShaderSource :String
-
The GLSL source code for the vertex shader.