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).
- 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
bevy_xpbd
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.
- Can't use custom images for particles.
bevy_firework |
bevy |
bevy_utilitarian |
---|---|---|
0.1 | 0.12 | 0.2 |
0.2 | 0.12 | 0.3 |
0.3 | 0.13 | 0.4 |