Quick answer: Sim Target = GPU for >10k particles. Reduce per-particle complexity. Raise Max Particles to avoid reallocation.

Crowd dust 50,000 particles. CPU pegged; framerate tanks. CPU sim doesn't scale.

The Fix

Emitter Properties:
  Sim Target:                  GPUCompute
  Max Particles:                100000     // avoid realloc
  Allocation Mode:              Manual
  Pre-Allocation:               100000

Particle Update modules:
  Remove unnecessary (Collision, Forces if not needed)
  Combine custom HLSL nodes

GPU sim moves work to compute shader. Pre-allocation avoids per-frame growth cost.

Verifying

50k particles at 60fps. Stat Niagara: GPU time low, CPU low. CPU sim baseline: 30fps.

“GPU sim. Pre-alloc. Smooth at scale.”

Related Issues

For Niagara CPU readback, see readback. For Stateless emitter, see stateless.

GPU sim. Pre-alloc.