aboutsummaryrefslogtreecommitdiff
path: root/src/lighting.h
diff options
context:
space:
mode:
authorx2048 <codeforsmile@gmail.com>2023-01-06 22:33:25 +0100
committerGitHub <noreply@github.com>2023-01-06 22:33:25 +0100
commit6d45c243f85942b20dab58753e735ec89a68f710 (patch)
treebfe6207d73d1b111af82ea9e5794bdaac4ce26e3 /src/lighting.h
parent2715cc8bf68a2cc8cd583cd5b0bb732ee13a1b49 (diff)
downloadminetest-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.h28
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};
};