OptionalshadingHow normals are obtained: stored, screen-space derivatives, or none (unlit).
One enum rather than the earlier flatNormal boolean, because a second
boolean for the unlit arm would admit a meaningless flatNormal && noShading
combination.
OptionalbaseBase-colour texture, sampled per fragment. Excludes the other two sources.
OptionalbaseWhether baseColorTexture is single-channel (red replicated to RGB).
OptionalambientWrapped-diffuse shade floor, clamped to [0, 1] (1.0 = flat diffuse). Optional
because the writer never stamps it — it reaches here only when an author passed
it through add_mesh(**attrs).
OptionalshadeWrapped-diffuse exponent, clamped positive.
OptionalspecularAdditive specular strength, clamped to [0, 1].
OptionalshininessSpecular exponent, clamped positive.
Optionalalphaopaque-mode cutout threshold, clamped to [0, 1].
Mesh material properties driving the constructor config.
The compositing half matches its three siblings field for field. What differs is named rather than quietly omitted, because each omission is a §9 exclusion or a §2.2 structural difference rather than an oversight:
absorption— that uniform exists only forvolumetric, and a zero-thickness surface has no path length for it to attenuate over (§6.3). ThehasElementAlphaflag goes with it: it gates nothing but the volumetricw(a) = −ln(1−a)optical-depth map, and mesh's per-vertex alpha is a plain coverage term in every mode it supports, so there is nothing to gate;radiusScale/truncationRadius— both normalize a per-element extent, and a triangle's extent is its own vertices;LuxarMeshMaterial): a mesh's size IS its geometry, so there is no screen-space extent to recompute per camera change andupdateCameraParamsignores resolution/isOrtho — but it does consumenearCull, because the shared near fade applies to a surface too (#1431);blendingModedefaults to'opaque', not'additive'— the only mode unconditionally correct without per-triangle depth sorting (§6.3);flatNormalis new: mesh is the first shaded type, and the stored-normal vs derivative-normal choice is a compile-time shader variant the caller resolves once per node.