Material class abstract Materials
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.
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
- name ↔ String
-
The name of this material, used for identification.
getter/setter pair
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
sceneInputs
→ Set<
RenderInput> -
Per-frame engine inputs this material samples, produced only when a
visible material asks for them: RenderInput.depth binds the linear
scene depth of the opaque geometry (forcing the depth prepass), and
RenderInput.opaqueSceneColor binds a snapshot of the scene color
taken after the opaque phase (splitting the scene pass in two).
Together they enable refraction, depth-fade absorption, shoreline
foam, and soft-particle style effects on translucent surfaces. The
base material requests nothing; a
.fmatmaterial declares these withengine_inputs:.no setter
Methods
-
bind(
RenderPass pass, TransientWriter 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
shaderused when this material is drawn. -
setFragmentShaderName(
String name) → void -
Assigns the fragment shader by
namefrom baseShaderLibrary. -
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
getBlackPlaceholderTexture(
) → Texture - Returns a 1×1 opaque-black texture, lazily created on first use.
-
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> -
Builds the BRDF lookup texture used by the PBR fragment shader's
split-sum specular IBL (see
buildBrdfLutTexture). -
normalPlaceholder(
Texture? texture) → Texture -
Returns
textureif non-null, otherwise getNormalPlaceholderTexture. -
whitePlaceholder(
Texture? texture) → Texture -
Returns
textureif non-null, otherwise getWhitePlaceholderTexture.