Material class abstract

Base class for shading a MeshPrimitive.

A material owns the fragment shader plus any per-material parameters (colors, factors, textures) bound when the primitive is drawn. The built-in subclasses are UnlitMaterial (constant color / texture) and PhysicallyBasedMaterial (PBR metallic-roughness with image-based lighting). Custom subclasses can be implemented by overriding bind and supplying their own fragment shader.

The default bind enables back-face culling with counter-clockwise winding, matching the glTF coordinate convention.

Implementers

Constructors

Material()

Properties

doubleSided bool
Whether to render both faces of triangles drawn with this material (glTF's material.doubleSided). When true, bind disables back-face culling so the geometry is visible from both sides; otherwise back faces are culled. Defaults to false. The runtime importer sets it from the glTF material.
getter/setter pair
fragmentShader Shader
The fragment shader used when rendering geometry with this material.
no setter
hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

bind(RenderPass pass, HostBuffer transientsBuffer, Lighting lighting) → void
Binds this material's render-pass state, uniforms, and textures.
isOpaque() bool
Whether geometry rendered with this material is fully opaque.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
setFragmentShader(Shader shader) → void
Assigns the fragment shader used when this material is drawn.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

fromFlatbuffer(Material fbMaterial, List<Texture> textures) Material
Constructs the appropriate concrete Material subclass for the supplied flatbuffer material description, resolving texture indices against textures.
getBlackPlaceholderTexture() Texture
Returns a 1×1 opaque-black texture, lazily created on first use.
getBrdfLutTexture() Texture
Returns the precomputed BRDF lookup texture used by the PBR fragment shader for environment-map specular sampling.
getDefaultEnvironmentMap() EnvironmentMap
Returns the package's built-in procedural "studio" image-based lighting environment (see EnvironmentMap.studio), built once and memoized.
getNormalPlaceholderTexture() Texture
Returns a 1×1 "flat" tangent-space normal texture ((0.5, 0.5, 1)), lazily created on first use.
getWhitePlaceholderTexture() Texture
Returns a 1×1 opaque-white texture, lazily created on first use.
initializeStaticResources() Future<void>
Loads the bundled BRDF lookup texture used by the PBR fragment shader's split-sum specular IBL.
normalPlaceholder(Texture? texture) Texture
Returns texture if non-null, otherwise getNormalPlaceholderTexture.
whitePlaceholder(Texture? texture) Texture
Returns texture if non-null, otherwise getWhitePlaceholderTexture.