Overview
Defines the time and spatial domain that forms the foundation of particle FX
such as flames, smoke, and splashes. Always place it first in an FX lane and use it
to set the size, frame count, FPS, and seed. Add content downstream with
fx_emitter_2d and fx_force.
Usage tips
- The standard FX lane is
fx_domain_2d â fx_emitter_2d â fx_force â fx_rasterize â (finishing) â fx_bake_spritesheet. Build the complete lane first, then tune each stage. - Start with a small
total_frames, around 6â10. Pixel-art FX often look best with crisp movement across only a few frames. - Treat
seedas the reroll for the entire FX. If you do not like the shape, changing the seed is the quickest fix.
Related nodes
fx_emitter_2d/fx_forceâ add content to the statefx_rasterizeâ converts the state to an imagefx_bake_spritesheetâ performs the final bake
Read this first
- Fx Domain 2D does not output an image by itself.
- It creates the base FX state.
- Add content with Fx Emitter 2D and Fx Force, then convert it to an image with Fx Rasterize.
When to use it
- When starting a short-frame FX such as a flame, smoke plume, or splash
- When you plan to bake the result later with Fx Bake SpriteSheet
- When creating the base state before Palette Quantize or Pixel Cleanup
The most basic setup
- Add Fx Domain 2D.
- Set
width / height / total_frames / fps. - Connect
fxto Fx Emitter 2D.
The minimal lane is:
FxDomain2D -> FxEmitter2D -> FxRasterize -> Preview
Example
width = 32height = 32total_frames = 8fps = 12loop_enabled = trueseed = 1
At this point, the contents of fx have approximately this meaning:
{
"version": 1,
"domain": {
"width": 32,
"height": 32,
"total_frames": 8,
"fps": 12,
"loop_enabled": true,
"seed": 1
},
"emitters": [],
"forces": []
}
Notes
- Changing
seedchanges the result even with the same emitter and force settings. total_framesandfpsbecome the source of truth for Fx Bake SpriteSheet downstream.- P11 FX is a lightweight, bake-first FX lane, not a full fluid simulation.