AbstractProtectedconstructorProtected_Cached render manifest to avoid frequent allocations.
The base color of the material.
The culling mode for this material. Defaults to BACK.
Whether the material performs depth testing. Defaults to true.
Whether the material writes to the depth buffer. Defaults to true.
Whether the material is transparent. Defaults to false.
ReadonlytypeThe type of the material.
The unique identifier of the material.
Static ReadonlyinspectorFields common to every material, merged with a concrete subclass's own inspector map
(e.g. StandardMaterial's metallic/roughness) via collectInspectorSchema().
Protected_Helper to create a fully-populated base RenderManifest layout.
Protected Abstract_Vertex/fragment source per backend -- the only part that differs between presets.
Protected_Helper to synchronize the base material state (color, culling, etc.) without allocating new objects.
Protected_Helper to synchronize texture offset and repeat from a given texture.
Returns an independent copy of this material (own uuid, own color/other value-type
fields) -- geometry-adjacent references like texture maps stay shared, since texture data is
immutable. Used by Object3D.clone() (Maker's Duplicate command) so a duplicated object's
material edits don't leak back onto the original.
Returns a manifest describing the requirements for rendering this material.
The render manifest.
Shared mechanism for wave-displaced, refractive liquid surfaces: Gerstner-wave vertex displacement, screen-space refraction, Beer-Lambert depth absorption, and Worley-noise shoreline/intersection foam.
OpenWaterMaterial(realistic PBR look) andStylizedWaterMaterial(toon look) are thin presets on top of this -- see docs/adr/0013-unified-liquid-surface-material.md.The uniform layout this packs into (
StandardWebGPULayout) has zero spare float slots left after wave1/2/3 + foam params, which is why the opaque/emissive liquid family (lava, slime) is built onFluidSurfaceMaterialinstead -- that layout still has headroom.