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.
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> |
false | 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 Primitive({ geometryInstances : new GeometryInstance({ geometry : new SimplePolylineGeometry({ positions : ellipsoid.cartographicArrayToCartesianArray([ Cartographic.fromDegrees(0.0, 0.0), Cartographic.fromDegrees(5.0, 0.0) ]) }), color : new Color(1.0, 1.0, 1.0, 1.0) }), appearance : new PerInstanceColorAppearance({ flat : true, translucent : false }) })); // Two extents in a primitive, each with a different color var instance = new GeometryInstance({ geometry : new ExtentGeometry({ extent : Extent.fromDegrees(0.0, 20.0, 10.0, 30.0) }), color : new Color(1.0, 0.0, 0.0, 0.5) }); var anotherInstance = new GeometryInstance({ geometry : new ExtentGeometry({ extent : Extent.fromDegrees(0.0, 40.0, 10.0, 50.0) }), color : new Color(0.0, 0.0, 1.0, 0.5) }); var extentPrimitive = new Primitive({ geometryInstances : [instance, anotherInstance], appearance : new PerInstanceColorAppearance() });
Members
-
<readonly> closed
-
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> faceForward
-
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> flat
-
When
true
, flat shading is used in the fragment shader, which means lighting is not taking into account.- Default Value:
- false
-
<readonly> fragmentShaderSource :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.
-
getFragmentShaderSource
-
Procedurally creates the full GLSL fragment shader source. For PerInstanceColorAppearance, this is derived from PerInstanceColorAppearance#fragmentShaderSource, PerInstanceColorAppearance#flat, and PerInstanceColorAppearance#faceForward.
-
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
-
<readonly> renderState :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> translucent
-
When
true
, the geometry is expected to appear translucent so PerInstanceColorAppearance#renderState has alpha blending enabled.- Default Value:
- true
-
<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.
-
<readonly> vertexShaderSource :String
-
The GLSL source code for the vertex shader.
-
<static, constant> FLAT_VERTEX_FORMAT :VertexFormat
-
The VertexFormat that all PerInstanceColorAppearance instances are compatible with when PerInstanceColorAppearance#flat is
false
. This requires only aposition
attribute. -
<static, constant> VERTEX_FORMAT :VertexFormat
-
The VertexFormat that all PerInstanceColorAppearance instances are compatible with. This requires only
position
andst
attributes.