EllipsoidSurfaceAppearance

new EllipsoidSurfaceAppearance(options)

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.
Name Type Description
options Object optional Object with the following properties:
Name Type Default Description
flat Boolean false optional When true, flat shading is used in the fragment shader, which means lighting is not taking into account.
faceForward Boolean options.aboveGround 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.
translucent Boolean true optional When true, the geometry is expected to appear translucent so EllipsoidSurfaceAppearance#renderState has alpha blending enabled.
aboveGround Boolean false optional 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.
material Material Material.ColorType optional The material used to determine the fragment color.
vertexShaderSource String optional Optional GLSL vertex shader source to override the default vertex shader.
fragmentShaderSource String optional Optional GLSL fragment shader source to override the default fragment shader.
renderState RenderState optional Optional render state to override the default render state.
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')
  })
});
Demo:
See:

Members

staticconstantEllipsoidSurfaceAppearance.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.

readonlyaboveGround :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.
Default Value: false

readonlyclosed :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.
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 like WallGeometry.
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. 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.

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.
Default Value: Material.ColorType
See:

readonlyrenderState :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.

translucent :Boolean

When true, the geometry is expected to appear translucent.
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.
Default Value: EllipsoidSurfaceAppearance.VERTEX_FORMAT

readonlyvertexShaderSource :String

The GLSL source code for the vertex shader.

Methods

getFragmentShaderSource()

Procedurally creates the full GLSL fragment shader source. For EllipsoidSurfaceAppearance, this is derived from EllipsoidSurfaceAppearance#fragmentShaderSource, EllipsoidSurfaceAppearance#flat, and EllipsoidSurfaceAppearance#faceForward.
Returns:
String The full GLSL fragment shader source.

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.

isTranslucent()Boolean

Determines if the geometry is translucent based on EllipsoidSurfaceAppearance#translucent and Material#isTranslucent.
Returns:
true if the appearance is translucent.