bevy_firework

Crates.iobevy_firework
lib.rsbevy_firework
version0.7.0
created_at2024-02-19 22:07:30.62685+00
updated_at2025-05-11 18:33:33.360325+00
descriptionCPU-driven, batch-rendered particle system for the Bevy game engine
homepage
repositoryhttps://github.com/mbrea-c/bevy_firework
max_upload_size
id1145729
size360,517
Manuel Brea Carreras (mbrea-c)

documentation

README

Crates.io Crates.io CI

Bevy Firework 🎆

Bevy firework is a particle system plugin where particles are simulated on the CPU and use GPU batching for rendering. This allows each particle system to be rendered in a single draw call (rather than one per particle).

While not as fast as a pure GPU-based particle system, this provides a massive speed-up from the naive approach to CPU-based particles (making it possible to render tens of thousands of particles without noticeable framerate drops) and maintains much of the flexibility of CPU-based particle systems (e.g. easy access to physics data for particle collision, simplified particle system animation).

collision example pbr example sparks example

Current features

  • Billboarded particles.
  • Configurable integration with Bevy's PBR rendering (i.e. particles can receive shadows, are affected by fog and lighting changes).
  • Particle collision with arbitrary avian colliders.
  • WASM and WebGL compatible.
  • Soft particle edges.
  • Animated properties: certain parameters can be defined as a custom curve to express changes over a particle's lifetime:
    • Scale
    • Color
  • Randomized properties: certain properties can be randomized, so that they are randomly sampled for every particle:
    • Particle lifetime
    • Initial linear velocity
    • Initial radial velocity
    • Initial scale
  • Emission shapes:
    • Point
    • Disk
    • Sphere
  • One-shot emission mode, or continuous emission.

Current limitations

  • Can't use custom images for particles.

Version table

bevy_firework bevy bevy_utilitarian avian
0.1 0.12 0.2
0.2 0.12 0.3
0.3 0.13 0.4
0.4 0.14 0.5
0.5 0.14 0.5 0.1
0.6 0.15 0.6 0.2
0.7 0.16 0.7 0.3
main 0.16 0.7 0.3
Commit count: 46

cargo fmt