mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-14 00:55:20 +02:00
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
This commit is contained in:
@@ -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};
|
||||
};
|
||||
|
Reference in New Issue
Block a user