Blend Modes
Seven modes, selectable per emitter from the sidebar dropdown — with the same intent everywhere your effect renders.
At object level in GDevelop, BlendingMode: 'JSON' uses each emitter's own mode;
any explicit value forces all emitters.
| Mode | 2D (PixiJS) | 3D (Three.js) | Desktop GL preview | Browser preview |
|---|---|---|---|---|
| Normal | normal | normal |
SRC_ALPHA, ONE_MINUS_SRC_ALPHA | normal |
| Additive | add | additive |
SRC_ALPHA, ONE | add |
| Subtractive | erase 1 | subtractive |
reverse-subtract | erase 1 |
| Multiply | multiply | multiply |
DST_COLOR, ONE_MINUS_SRC_ALPHA | multiply |
| Screen | screen |
custom (add + ONE, ONE_MINUS_SRC_COLOR) |
ONE, ONE_MINUS_SRC_COLOR | screen |
| Lighten | → Normal 2 | custom max-equation | max | → Normal 2 |
| Overlay | overlay | → Normal 3 | → Normal 3 | overlay |
¹ Pixi core has no subtract · ² Pixi core has no lighten · ³ No fixed-function overlay
Fallback policy. Unsupported combinations fall back to
Normal with a single
console.warn — never per frame, never
throwing. Extension versions before 0.1.2 don't know Screen / Lighten / Overlay and render
them as Normal.Recipes
| Look | Mode |
|---|---|
| Fire, sparks, magic glow | Additive |
| Solid opaque debris, smoke over sky | Normal |
| Darkening/shadow motes, ink | Subtractive / Multiply |
| Hazy light through fog | Screen |
| Contrasty highlights | Overlay / Lighten |
Blend modes are covered end-to-end by tests: pixel-level GL formulas
(
tests/test_gl_blend.py), round-trip + sanitize (tests/test_blend_modes.py)
and extension mappings with stubbed runtimes (preview/test_blend.mjs).
See Testing.