About this project

Bevy Hanabi is a modern, GPU-driven particle system plugin for the Bevy game engine. It offloads most simulation and rendering work to the GPU via compute shaders, enabling real-time visual effects (VFX) at scale. The design is inspired by particle systems in industry-leading game engines. **Key Features:** - **Spawn:** Constant rate, one-time burst, repeated burst, resetting, activation/deactivation, and randomized parameters. - **Initialize:** Position over shapes (circle, sphere, cone/truncated cone), random offsets, velocity over shapes, per-particle color/size/age/lifetime. - **Update:** Euler motion integration, forces (gravity, radial, tangent, force fields, linear drag), lifetime, size/color changes over time, simulation conditions (always or only when visible). - **Render:** Textured quads, generic 3D meshes, deformation (stretch, trails/ribbons), camera support (2D/3D, dual cameras, multiple viewports, HDR/bloom), billboarding, orientation modes, and screen-space sizing. - **Expressions API:** Customize particle attributes (position, color, etc.) via a graph-based expression system. **Usage:** 1. Add `bevy_hanabi = "0.19"` to `Cargo.toml`. 2. Register `HanabiPlugin` in your Bevy app. 3. Create an `EffectAsset` with spawn settings, initializers, updaters, and render modifiers. 4. Spawn a `ParticleEffect` component with a handle to the asset. **Compatibility:** - Compatible with Bevy versions >= 0.6; the `main` branch tracks the latest Bevy release. - WebAssembly support (via WebGPU) is available since v0.13. **Cargo Features:** - `2d` (default): Enable 2D camera rendering. - `3d` (default): Enable 3D camera rendering. - Users can disable default features to optimize for a single camera type. **Status:** Under heavy development; suitable for moderate-size effects. Feedback and contributions welcome. **License:** Dual-licensed under MIT or Apache-2.0.