bevy_mod_auto_exposure

Crates.iobevy_mod_auto_exposure
lib.rsbevy_mod_auto_exposure
version0.2.0
sourcesrc
created_at2024-01-06 10:35:44.679492
updated_at2024-03-19 20:33:24.066375
descriptionAn auto exposure plugin for Bevy.
homepage
repositoryhttps://github.com/Kurble/bevy_mod_auto_exposure/
max_upload_size
id1090841
size132,849
Bram Buurlage (Kurble)

documentation

README

Auto Exposure for Bevy HDR

crates.io docs.rs

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.

Usage

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()
        },
    ));
}

Bevy Version Support

I intend to track the latest releases of Bevy.

bevy bevy_mod_auto_exposure
0.13 0.2
0.12.1 0.1

Examples

cargo run --example auto_exposure

Licensing

This project is dual-licensed under either

  • MIT License: Available online
  • Apache License, Version 2.0: Available online

at your option.

Commit count: 20

cargo fmt