Renderer · type
ParticleBlend
One draw call for a live particle pool: one camera-facing quad per particle, or a
crossed pair of world-fixed ones when facing asks for them.
Explained in Hello world.
type ParticleBlend = 'additive' | 'alpha'import type { ParticleBlend } from '@driftengine/core';In depth
Instanced: the cross is uploaded once as eight vertices, and each frame only the
per-particle stream is re-sent. That is the difference between this and the
scatter path it replaces — InstancedMesh is built for data that never changes
after placement, and a particle system's data changes entirely every frame.
Blending and depth are the batch's own decision because they are a property of the material: smoke occludes what is behind it and sparks add to it, and a caller that had to remember which would eventually forget. Neither writes depth — a soft particle that did would punch a hole in everything drawn after it.