diff options
author | x2048 <codeforsmile@gmail.com> | 2023-01-06 22:33:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-06 22:33:25 +0100 |
commit | 6d45c243f85942b20dab58753e735ec89a68f710 (patch) | |
tree | bfe6207d73d1b111af82ea9e5794bdaac4ce26e3 /src/lighting.h | |
parent | 2715cc8bf68a2cc8cd583cd5b0bb732ee13a1b49 (diff) | |
download | minetest-6d45c243f85942b20dab58753e735ec89a68f710.tar.xz |
Add dynamic exposure correction (#12959)
* Add uniform for frame delta time
* Adjust exposure in logarithmic (EV) space
* Add network support and LUA API
* Add testing mod
Diffstat (limited to 'src/lighting.h')
-rw-r--r-- | src/lighting.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lighting.h b/src/lighting.h index 6c837568b..9c4211605 100644 --- a/src/lighting.h +++ b/src/lighting.h @@ -19,10 +19,38 @@ with this program; if not, write to the Free Software Foundation, Inc., #pragma once + +/** + * Parameters for automatic exposure compensation + * + * Automatic exposure compensation uses the following equation: + * + * wanted_exposure = 2^exposure_correction / clamp(observed_luminance, 2^luminance_min, 2^luminance_max) + * + */ +struct AutoExposure +{ + /// @brief Minimum boundary for computed luminance + float luminance_min; + /// @brief Maximum boundary for computed luminance + float luminance_max; + /// @brief Luminance bias. Higher values make the scene darker, can be negative. + float exposure_correction; + /// @brief Speed of transition from dark to bright scenes + float speed_dark_bright; + /// @brief Speed of transition from bright to dark scenes + float speed_bright_dark; + /// @brief Power value for center-weighted metering. Value of 1.0 measures entire screen uniformly + float center_weight_power; + + AutoExposure(); +}; + /** Describes ambient light settings for a player */ struct Lighting { + AutoExposure exposure; float shadow_intensity {0.0f}; float saturation {1.0f}; }; |