OptionaleventsOptionalsplitsSub-emitters triggered by parent particles. Each becomes its own
ParticlePass instance fed by a GPU spawn-request queue.
OptionalsdfBaked SDF bound to the particle pass. Required when the graph uses
sdf_attractor, sdf_collision, or an sdf_surface spawn shape; ignored
otherwise. Exactly one SDF per system (multiple SDF modifiers share it).
OptionalpatchesPatch (grid) layer for the agent-modeling use case. When set, the update
compute binds a diffusing/evaporating grid that patchSample /
patchDeposit nodes read and write. See PatchConfig.
OptionalspatialSpatial hash enabling neighbor queries (the boids modifier). Built each
frame from live particle positions before the update runs. See
SpatialHashConfig.
OptionallinksPer-agent link slots for the link_springs modifier. Host uploads the
topology via ParticlePass.setLinks. See LinksConfig.
OptionalscratchPer-agent f32 scratch array — the scratchGet/scratchSet/loop IR nodes.
Lets an agent hold a small working array (a tour, a history); enables
parallel local search. Host seeds/reads via ParticlePass.setScratch /
ParticlePass.readScratch. See ScratchConfig.
OptionalreproductionEnables the GPU reproduction free-list (a stack of dead slots) so modifiers
can spawn/kill agents within the same population at runtime — repro_spawn
/ repro_kill, used by lotka_volterra. Seed the initial population with
ParticlePass.seedAgents (the emitter is typically disabled, spawnRate 0).
OptionalintegrateWhen false, the update skips the position += velocity * dt integration
step. Position-movement agent models (which move via forward/setxy, not
velocity) can set this to repurpose the velocity field as a free per-agent
vec3 the step writes and the renderer reads — e.g. a terrain surface normal
for renderer.tiltToSurface. Default true (normal particle integration).
Full description of a particle system, consumed by the particle pass and shader builders.