new EllipsoidSurfaceAppearance(optionsopt)
An appearance for geometry on the surface of the ellipsoid like
PolygonGeometry
and RectangleGeometry
, which supports all materials like MaterialAppearance
with MaterialAppearance.MaterialSupport.ALL
. However, this appearance requires
fewer vertex attributes since the fragment shader can procedurally compute normal
,
binormal
, and tangent
.
Parameters:
Name | Type | Attributes | Description | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
<optional> |
Object with the following properties:
Properties
|
- Source:
- See:
Example
var primitive = new Cesium.Primitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.PolygonGeometry({
vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
// ...
})
}),
appearance : new Cesium.EllipsoidSurfaceAppearance({
material : Cesium.Material.fromType('Stripe')
})
});
Members
(static, constant) VERTEX_FORMAT :VertexFormat
The
VertexFormat
that all EllipsoidSurfaceAppearance
instances
are compatible with, which requires only position
and st
attributes. Other attributes are procedurally computed in the fragment shader.
Type:
(readonly) aboveGround :Boolean
When
true
, the geometry is expected to be on the ellipsoid's
surface - not at a constant height above it - so EllipsoidSurfaceAppearance#renderState
has backface culling enabled.
Type:
- Boolean
- Default Value:
- false
- Source:
(readonly) closed :Boolean
When
true
, the geometry is expected to be closed so
EllipsoidSurfaceAppearance#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. The full fragment shader
source is built procedurally taking into account
EllipsoidSurfaceAppearance#material
,
EllipsoidSurfaceAppearance#flat
, and EllipsoidSurfaceAppearance#faceForward
.
Use EllipsoidSurfaceAppearance#getFragmentShaderSource
to get the full source.
Type:
- String
material :Material
The material used to determine the fragment color. Unlike other
EllipsoidSurfaceAppearance
properties, this is not read-only, so an appearance's material can change on the fly.
Type:
- Default Value:
- Source:
- See:
(readonly) renderState :Object
The WebGL fixed-function state to use when rendering the geometry.
The render state can be explicitly defined when constructing a EllipsoidSurfaceAppearance
instance, or it is set implicitly via EllipsoidSurfaceAppearance#translucent
and EllipsoidSurfaceAppearance#aboveGround
.
Type:
- Object
translucent :Boolean
When
true
, the geometry is expected to appear translucent.
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:
- Default Value:
- Source:
(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
EllipsoidSurfaceAppearance
,
this is derived from EllipsoidSurfaceAppearance#fragmentShaderSource
, EllipsoidSurfaceAppearance#flat
,
and EllipsoidSurfaceAppearance#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
EllipsoidSurfaceAppearance#translucent
and Material#isTranslucent
.
Returns:
true
if the appearance is translucent.
- Type
- Boolean