Particle System

Overview

CPU-based particle simulation with GPU point-sprite rendering. Each emitter manages a pool of particles with configurable emission rate, lifetime, color gradients, and gravity.

Adding Particles in the Editor

  1. Select an entity in the Scene Hierarchy (or create a new one)
  2. In the Inspector, click Add Component > ParticleEmitter
  3. Configure emission properties in the Inspector

ParticleEmitter Properties

FieldTypeDefaultDescription
emitRatefloat10.0Particles emitted per second
lifetimefloat2.0Particle lifetime in seconds
speedfloat3.0Initial emission speed
speedVariancefloat1.0Random variation in speed
sizefloat0.1Starting particle size
sizeEndfloat0.0Size at end of life (lerp)
colorStartvec3(1, 1, 1)Starting color (RGB)
colorEndvec3(1, 1, 1)Color at end of life (RGB)
gravityfloat-9.81Gravity applied to particles
maxParticlesint256Maximum active particles
enabledbooltrueEnable/disable emission

Rendering

  • Uses GL_POINTS with gl_PointSize for billboarding
  • Circular point sprites with smooth alpha falloff
  • Additive-style blending (SRC_ALPHA, ONE_MINUS_SRC_ALPHA)
  • Depth write disabled during particle rendering

Integration Notes

  • Particles are updated CPU-side and uploaded each frame via dynamic VBO
  • Color and size interpolate linearly over particle lifetime
  • Velocity has a slight upward bias for natural-looking emission