MaterialAppearance

external class MaterialAppearance(options: MaterialAppearance.ConstructorOptions? = definedExternally)(source)

An appearance for arbitrary geometry (as opposed to EllipsoidSurfaceAppearance, for example) that supports shading with materials.

const primitive = new Primitive({
geometryInstances : new GeometryInstance({
geometry : new WallGeometry({
materialSupport : MaterialAppearance.MaterialSupport.BASIC.vertexFormat,
// ...
})
}),
appearance : new MaterialAppearance({
material : Material.fromType('Color'),
faceForward : true
})

});

See also

Constructors

Link copied to clipboard
constructor(options: MaterialAppearance.ConstructorOptions? = definedExternally)

Types

Link copied to clipboard
sealed interface ConstructorOptions
Link copied to clipboard

Determines the type of Material that is supported by a MaterialAppearance instance. This is a trade-off between flexibility (a wide array of materials) and memory/performance (required vertex format and GLSL shader complexity.

Link copied to clipboard
sealed interface MaterialSupportType

Properties

Link copied to clipboard

When true, the geometry is expected to be closed so MaterialAppearance.renderState has backface culling enabled. If the viewer enters the geometry, it will not be visible.

Link copied to clipboard

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.

Link copied to clipboard

When true, flat shading is used in the fragment shader, which means lighting is not taking into account.

Link copied to clipboard

The GLSL source code for the fragment shader. The full fragment shader source is built procedurally taking into account MaterialAppearance.material, MaterialAppearance.flat, and MaterialAppearance.faceForward. Use MaterialAppearance.getFragmentShaderSource to get the full source.

Link copied to clipboard

The material used to determine the fragment color. Unlike other MaterialAppearance properties, this is not read-only, so an appearance's material can change on the fly.

Link copied to clipboard

The type of materials supported by this instance. This impacts the required VertexFormat and the complexity of the vertex and fragment shaders.

Link copied to clipboard

The WebGL fixed-function state to use when rendering the geometry.

Link copied to clipboard

When true, the geometry is expected to appear translucent.

Link copied to clipboard

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.

Link copied to clipboard

The GLSL source code for the vertex shader.

Functions

Link copied to clipboard
Link copied to clipboard

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.

Link copied to clipboard

Determines if the geometry is translucent based on MaterialAppearance.translucent and Material.isTranslucent.