Renderer · type

PlumeMaterial

Which plume material a caller wants, by name rather than by source.

Explained in Hello world.

type PlumeMaterial = 'fire' | 'smoke' | 'arcane'
import type { PlumeMaterial } from '@driftengine/core';

In depth

PlumeOptions used to take GLSL strings, and that could not cross to a second backend. WebGPU has no runtime GLSL compiler and this package must never ship one — the toolchain is dev-only, for the licensing and size reasons the WGSL toolchain design records — so a caller-supplied vertexSource was a capability that existed on exactly one backend and could never exist on the other.

Naming the material instead makes it universal by construction: each backend resolves the name to the shader it can actually compile, and neither can be handed something it cannot use. The cost is real and was accepted deliberately: a caller can no longer supply its own plume shader at all. That capability was documented — uCameraRight is set unconditionally precisely so a caller's own vertex shader could billboard against it — and it is gone. A world that needs a plume this engine does not ship now needs the engine to ship it.