mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-02 16:38:41 +00: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:
parent
2715cc8bf6
commit
6d45c243f8
29 changed files with 567 additions and 71 deletions
|
@ -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};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue