Map an incoming blending mode onto one a mesh can actually draw.
Driven by MESH_SUPPORTED_BLENDING_MODES rather than by an
=== 'volumetric' test, so the list above is load-bearing: anything not on it
falls back to opaque. Today that is only volumetric, but the fragment shader
implements exactly three emissions, and a future mode reaching it unmapped would
silently take whichever branch its shaderOutputMode happened to land on.
Callers decide whether to warn: createMeshNode warns once per node (naming it),
while the material wrappers apply the same mapping silently, because by then the
warning has been issued and a runtime mode switch from the layers panel would
otherwise re-warn on every click.
A warning rather than a load failure, deliberately — the mode may be inherited
from an ancestor, so refusing would make an unrelated group setting break an
otherwise valid mesh.
Map an incoming blending mode onto one a mesh can actually draw.
Driven by MESH_SUPPORTED_BLENDING_MODES rather than by an
=== 'volumetric'test, so the list above is load-bearing: anything not on it falls back toopaque. Today that is onlyvolumetric, but the fragment shader implements exactly three emissions, and a future mode reaching it unmapped would silently take whichever branch itsshaderOutputModehappened to land on.Callers decide whether to warn:
createMeshNodewarns once per node (naming it), while the material wrappers apply the same mapping silently, because by then the warning has been issued and a runtime mode switch from the layers panel would otherwise re-warn on every click.A warning rather than a load failure, deliberately — the mode may be inherited from an ancestor, so refusing would make an unrelated group setting break an otherwise valid mesh.