https://github.com/evroon/bevy-volumetric-clouds
Volumetric clouds in Bevy based on Horizon Zero Dawn
https://github.com/evroon/bevy-volumetric-clouds
3d-graphics bevy frostbite game-development horizon-zero-dawn raymarching rendering rust volumetric-clouds vulkan wgpu wgsl
Last synced: 6 days ago
JSON representation
Volumetric clouds in Bevy based on Horizon Zero Dawn
- Host: GitHub
- URL: https://github.com/evroon/bevy-volumetric-clouds
- Owner: evroon
- License: mit
- Created: 2025-11-20T19:22:47.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2026-04-14T05:05:21.000Z (2 months ago)
- Last Synced: 2026-04-14T07:16:25.334Z (2 months ago)
- Topics: 3d-graphics, bevy, frostbite, game-development, horizon-zero-dawn, raymarching, rendering, rust, volumetric-clouds, vulkan, wgpu, wgsl
- Language: Rust
- Homepage: https://crates.io/crates/bevy-volumetric-clouds
- Size: 924 KB
- Stars: 37
- Watchers: 1
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Bevy Volumetric Clouds

This is a plugin for [Bevy](https://github.com/bevyengine/bevy) that renders volumetric clouds
using the method of Horizon Zero Dawn by Guerilla Games (see [credits](#credits)).
## Usage
Run `cargo add bevy-volumetric-clouds` and simply add `CloudsPlugin` to your Bevy App like this:
```rust ignore
use bevy_volumetric_clouds::CloudsPlugin;
app.add_plugins(CloudsPlugin);
```
Look at [the minimal example](examples/minimal.rs) for a working example.
The [the demo example](examples/demo.rs) features a usable demo where you can move the camera around
and use a UI to change the configuration of the cloud rendering
(if you run it with the `fly_camera` and `debug` features):
```sh
cargo run --example demo --features fly_camera,debug
```
The configuration of the clouds rendering can be changed using the `CloudsConfig` resource.
See [its docs](https://docs.rs/bevy-volumetric-clouds/latest/bevy_volumetric_clouds/config/struct.CloudsConfig.html) for more information.
## Limitations
A few limitations apply for now and hopefully get fixed in the future:
- There is no integration with Bevy's internal atmosphere rendering yet, this plugin uses a simple
sky rendering function.
- The clouds are drawn on a skybox that does not take the depth buffer into account yet. Therefore,
it's not yet possible to "fly" into the clouds, the clouds are only visible from ground-level.
- For now the clouds render resolution is set to 1920x1080 and can't be changed.
Usually clouds are rendered at a lower resolution than screen resolution so you likely won't need
a higher resolution anyway but changing the resolution should be possible in the future.
## Crate features
There are a few features:
- `debug`: enables an `egui` UI that allows you to tweak shader uniforms (parameters) in-game.
- `fly_camera`: adds a `fly_camera` module that controls the camera using keyboard and mouse.
## Bevy version compatibility
| bevy | bevy-volumetric-clouds |
|------|------------------------|
| 0.18 | 0.2.* |
| 0.17 | 0.1.* |
## Credits
1. "The real-time volumetric cloudscapes of Horizon Zero Dawn" by Andrew Schneider and Nathan Vos ([article](https://www.guerrilla-games.com/read/the-real-time-volumetric-cloudscapes-of-horizon-zero-dawn))
2. "Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite" by Sébastien Hillaire ([pdf](https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/s2016-pbs-frostbite-sky-clouds-new.pdf))
## License
Licensed under [MIT](https://choosealicense.com/licenses/mit/), see [LICENSE](./LICENSE).