Skip to content

epic: GPU Particle System #57

@Hekbas

Description

@Hekbas

Goal

Fully GPU-driven particle system — emit, simulate, and render particles entirely on the GPU via compute shaders and indirect draw. No CPU per-particle work.

Checklist

Compute Passes

  • Emit pass (compute) — spawn particles from emitter configs, initialize position/velocity/lifetime in particle SSBO
  • Simulate pass (compute) — integrate positions, apply forces/gravity, decay lifetime, kill dead particles
  • Compact pass (compute) — stream compaction to remove dead particles (atomic append or parallel prefix sum)
  • Dead particle recycling via free-list in SSBO

Rendering

  • Render as point sprites or camera-facing billboards
  • vkCmdDrawIndirect with GPU-computed draw count (from compact pass)
  • Alpha blending + soft particle depth fade
  • Optional: lit particles via Forward+ light clusters (Phase 18)

Emitter System

  • Component::ParticleEmitter — shape (point/sphere/cone/box), rate, lifetime, speed range, color gradient, size over life
  • Burst mode + continuous emission
  • World-space vs local-space simulation toggle

Editor

  • Inspector for emitter properties with live preview
  • Particle count stats in profiler
  • Serialization in scene format

Verification

  • 100K+ particles at stable 60fps
  • Particles correctly die and respawn
  • No GPU memory growth over time (free-list recycles correctly)
  • Correct draw count from GPU (no CPU readback)

Dependencies

  • Phase 12 (compute + indirect draw infrastructure)
  • Phase 18 (Forward+ for lit particles, optional)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions