new PerInstanceColorAppearance(optionsopt)
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 | Attributes | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
<optional> |
Object with the following properties:
Properties
|
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)
}),
attributes : {
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)
}),
attributes : {
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
(static, constant) FLAT_VERTEX_FORMAT :VertexFormat
The
VertexFormat
that all PerInstanceColorAppearance
instances
are compatible with when PerInstanceColorAppearance#flat
is false
.
This requires only a position
attribute.
Type:
(static, constant) VERTEX_FORMAT :VertexFormat
The
VertexFormat
that all PerInstanceColorAppearance
instances
are compatible with. This requires only position
and st
attributes.
Type:
(readonly) closed :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.
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.
Type:
- String
material :Material
This property is part of the
Appearance
interface, but is not
used by PerInstanceColorAppearance
since a fully custom fragment shader is used.
Type:
- Default Value:
- undefined
- 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 PerInstanceColorAppearance
instance, or it is set implicitly via PerInstanceColorAppearance#translucent
and PerInstanceColorAppearance#closed
.
Type:
- Object
translucent :Boolean
When
true
, the geometry is expected to appear translucent so
PerInstanceColorAppearance#renderState
has alpha blending enabled.
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:
(readonly) vertexShaderSource :String
The GLSL source code for the vertex shader.
Type:
- String
Methods
getFragmentShaderSource() → {String}
Procedurally creates the full GLSL fragment shader source. For
PerInstanceColorAppearance
,
this is derived from PerInstanceColorAppearance#fragmentShaderSource
, PerInstanceColorAppearance#flat
,
and PerInstanceColorAppearance#faceForward
.
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.
Returns:
The render state.
- Type
- Object
isTranslucent() → {Boolean}
Determines if the geometry is translucent based on
PerInstanceColorAppearance#translucent
.
Returns:
true
if the appearance is translucent.
- Type
- Boolean