bevy_firework

Crates.iobevy_firework
lib.rsbevy_firework
version0.5.0
sourcesrc
created_at2024-02-19 22:07:30.62685
updated_at2024-07-09 17:05:26.018109
descriptionCPU-driven, batch-rendered particle system for the Bevy game engine
homepage
repositoryhttps://github.com/mbrea-c/bevy_firework
max_upload_size
id1145729
size323,469
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
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
Commit count: 34

cargo fmt