Hanabi — a GPU particle system plugin for the Bevy game engine.
Hanabi — a GPU particle system plugin for the Bevy game engine.
Hanabi — a GPU particle system for the Bevy game engine.
The Hanabi particle system is a modern GPU-based particle system for the Bevy game engine. It focuses on scale to produce stunning visual effects (VFX) in real time, offloading most of the work to the GPU, with minimal CPU intervention. The design is inspired by modern particle systems found in other industry-leading game engines.
This project is under heavy development, and is currently lacking both features and performance / usability polish. However, for moderate-size effects, it can already be used in your project. Feedback and contributions on both design and features are very much welcome.
Hanabi makes heavy use of compute shaders to offload work to the GPU in a performant way. Support for compute shaders on the wasm target (WebAssembly) is available as of v0.13 (Bevy 0.14), and only through WebGPU. See the WebAssembly support documentation for details.
The Bevy Hanabi plugin is compatible with Bevy versions >= 0.6; see Compatible Bevy versions.
Add the bevy_hanabi dependency to Cargo.toml:
[dependencies]
bevy_hanabi = "0.19"
See also Features below for the list of supported features.
Add the HanabiPlugin to your app:
use bevy_hanabi::prelude::*;
App::default()
.add_plugins(DefaultPlugins)
.add_plugins(HanabiPlugin)
.run();
Create an EffectAsset describing a visual effect:
…
Use a ParticleEffect to create an effect instance from an existing asset.
commands.spawn((
ParticleEffect::new(effect_handle),
Transform::from_translation(Vec3::Y),
));
See the examples/ folder.
A web demo (using the WebAssembly target) showing all examples is availabe in the examples/wasm/ folder. You can open index.html in any browser to see a GIF of all the examples. Running the actual WebAssembly example however requires serving the files with an HTTP server. If you have NodeJS installed, you can do that for example by running npx http-server examples/wasm.
Note for Linux users: The examples build with the bevy/x11 feature by default to enable support for the X11 display server. If you want to use the Wayland display server instead, add the bevy/wayland feature.
This list contains the major fixed features provided by Hanabi. Beyond that, with the power of the Expressions API, visual effect authors can further customize their effects by assigning individual particle attributes (position, color, etc.).
Bevy Hanabi supports the following cargo features:
| Feature | Default | Description |
|---|---|---|
2d |
✔ | Enable rendering through 2D cameras (Camera2d) |
3d |
✔ | Enable rendering through 3D cameras (Camera3d) |
For optimization purpose, users of a single type of camera can disable the other type by skipping default features in their Cargo.toml. For example to use only the 3D mode:
bevy_hanabi = { version = "0.19", default-features = false, features = [ "3d" ] }
The main branch is compatible with the latest Bevy release.
Compatibility of bevy_hanabi versions:
bevy_hanabi |
bevy |
|---|---|
0.19 |
0.19 |
0.18 |
0.18 |
0.17 |
0.17 |
0.16 |
0.16 |
0.14-0.15 |
0.15 |
0.12-0.13 |
0.14 |
0.10-0.11 |
0.13 |
0.8-0.9 |
0.12 |
0.7 |
0.11 |
0.6 |
0.10 |
0.5 |
0.9 |
0.3-0.4 |
0.8 |
0.2 |
0.7 |
0.1 |
0.6 |
Hanabi is dual-licensed under either:
LICENSE-MIT or http://opensource.org/licenses/MIT)LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0)at your option.
SPDX-License-Identifier: MIT OR Apache-2.0
No open issues yet, or sync has not completed.