Expand description
Bevy Volumetric Clouds

This is a plugin for Bevy that renders volumetric clouds using the method of Horizon Zero Dawn by Guerilla Games (see credits).
§Usage
Run cargo add bevy-volumetric-clouds and simply add CloudsPlugin to your Bevy App like this:
ⓘ
use bevy_volumetric_clouds::CloudsPlugin;
app.add_plugins(CloudsPlugin);Look at the minimal example for a working example.
The the demo example 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):
cargo run --example demo --features fly_camera,debugThe configuration of the clouds rendering can be changed using the CloudsConfig resource.
See its docs 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 aneguiUI that allows you to tweak shader uniforms (parameters) in-game.fly_camera: adds afly_cameramodule that controls the camera using keyboard and mouse.
§Bevy version compatibility
| bevy | bevy-volumetric-clouds |
|---|---|
| 0.17 | 0.1.* |
§Credits
- “The real-time volumetric cloudscapes of Horizon Zero Dawn” by Andrew Schneider and Nathan Vos (article)
- “Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite” by Sébastien Hillaire (pdf)
§License
Modules§
- config
- Controls the compute shader which renders the volumetric clouds.
- fly_
camera - A utility plugin to control the camera using keyboard and mouse. Camera movement logic based on https://github.com/mcpar-land/bevy_fly_camera
Structs§
- Clouds
Plugin - A plugin for rendering clouds.