An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          


Bevy Volumetric Clouds


crate on crates.io
docs on docs.rs
build status

![clouds](https://github.com/evroon/bevy-volumetric-clouds/raw/master/.github/screenshots/clouds.png)

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).