A Bevy plugin for auto exposure. Features:
- Setting min/max exposure values for the camera;
- Metering mask to give more weight to certain parts of the image;
- Smooth exposure transition, with speparate settings for brightening and darkening;
- Exposure compensation curves, for example to make dark scenes look actually dark.
Setting up auto exposure is easy:
use bevy::prelude::*;
use bevy_mod_auto_exposure::{AutoExposurePlugin, AutoExposure};
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Add the plugin.
.add_plugins(AutoExposurePlugin)
.add_systems(Startup, setup)
.run();
}
fn setup(mut commands: Commands) {
commands.spawn((
Camera3dBundle {
camera: Camera {
// make sure you set your camera to hdr
hdr: true,
..default()
},
..default()
},
// Add the auto exposure component. You can also use the default option,
// it's good enough for most cases.
AutoExposure {
// Set the exposure range to a bit bigger if your scene has a very
// high dynamic range.
min: -16.0,
max: 16.0,
// Set the compensation curve to make dark parts look dark on
// screen.
compensation_curve: vec![vec2(-16.0, -4.0), vec2(0.0, 0.0)],
..default()
},
));
}
I intend to track the latest releases of Bevy.
bevy | bevy_mod_auto_exposure |
---|---|
0.13 | 0.2 |
0.12.1 | 0.1 |
cargo run --example auto_exposure
This project is dual-licensed under either
at your option.