new EllipsoidSurfaceAppearance
An appearance for geometry on the surface of the ellipsoid like PolygonGeometry
and ExtentGeometry, 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 | 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 EllipsoidSurfaceAppearance#renderState has alpha blending enabled. |
options.aboveGround |
Boolean |
<optional> |
false | 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. |
options.material |
Material |
<optional> |
Material.ColorType | The material used to determine the fragment color. |
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
var primitive = new Primitive({ geometryInstances : new GeometryInstance({ geometry : new PolygonGeometry({ vertexFormat : EllipsoidSurfaceAppearance.VERTEX_FORMAT, // ... }) }), appearance : new EllipsoidSurfaceAppearance({ material : Material.fromType(scene.getContext(), 'Stripe') }) });
See:
Source:
Members
-
<readonly> aboveGround
-
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
-
<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 EllipsoidSurfaceAppearance#material, EllipsoidSurfaceAppearance#flat, and EllipsoidSurfaceAppearance#faceForward. Use EllipsoidSurfaceAppearance#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
-
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:
-
<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 EllipsoidSurfaceAppearance instance, or it is set implicitly via EllipsoidSurfaceAppearance#translucent and EllipsoidSurfaceAppearance#aboveGround.
-
<readonly> translucent
-
When
true
, the geometry is expected to appear translucent so EllipsoidSurfaceAppearance#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> VERTEX_FORMAT :VertexFormat
-
The VertexFormat that all EllipsoidSurfaceAppearance instances are compatible with, which requires only
position
andst
attributes. Other attributes are procedurally computed in the fragment shader.