EllipsoidSurfaceAppearance
An appearance for geometry on the surface of the ellipsoid like PolygonGeometry and RectangleGeometry, which supports all materials like MaterialAppearance with {@link MaterialAppearance.MaterialSupport.ALL}. However, this appearance requires fewer vertex attributes since the fragment shader can procedurally compute normal
, tangent
, and bitangent
.
const primitive = new Primitive({
geometryInstances : new GeometryInstance({
geometry : new PolygonGeometry({
vertexFormat : EllipsoidSurfaceAppearance.VERTEX_FORMAT,
// ...
})
}),
appearance : new EllipsoidSurfaceAppearance({
material : Material.fromType('Stripe')
})
});
See also
Types
Properties
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.
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.
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.
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.
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.
The WebGL fixed-function state to use when rendering the geometry.
When true
, the geometry is expected to appear translucent.
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.
The GLSL source code for the vertex shader.
Functions
Procedurally creates the full GLSL fragment shader source. For EllipsoidSurfaceAppearance, this is derived from EllipsoidSurfaceAppearance.fragmentShaderSource, EllipsoidSurfaceAppearance.flat, and EllipsoidSurfaceAppearance.faceForward.
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.
Determines if the geometry is translucent based on EllipsoidSurfaceAppearance.translucent and Material.isTranslucent.