Unravel Engine C++ Reference
Loading...
Searching...
No Matches
auto_exposure_component.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
base/basetypes.hpp
>
4
#include <
engine/ecs/components/basic_component.h
>
5
#include <
engine/rendering/pipeline/passes/auto_exposure_pass.h
>
6
#include <cmath>
7
8
namespace
unravel
9
{
10
11
class
auto_exposure_component
:
public
component_crtp
<auto_exposure_component>
12
{
13
public
:
14
bool
enabled
=
true
;
15
auto_exposure_pass::settings
settings
{};
16
18
static
void
merge_into
(
auto_exposure_pass::settings
& result,
19
const
auto_exposure_pass::settings
& from,
20
float
contribution
,
21
bool
is_first)
22
{
23
if
(is_first)
24
{
25
result = from;
26
return
;
27
}
28
result.
min_ev
= std::lerp(result.
min_ev
, from.
min_ev
,
contribution
);
29
result.
max_ev
= std::lerp(result.
max_ev
, from.
max_ev
,
contribution
);
30
result.
compensation
= std::lerp(result.
compensation
, from.
compensation
,
contribution
);
31
result.
adaptation_speed_up
= std::lerp(result.
adaptation_speed_up
, from.
adaptation_speed_up
,
contribution
);
32
result.
adaptation_speed_down
= std::lerp(result.
adaptation_speed_down
, from.
adaptation_speed_down
,
contribution
);
33
result.
low_percentile
= std::lerp(result.
low_percentile
, from.
low_percentile
,
contribution
);
34
result.
high_percentile
= std::lerp(result.
high_percentile
, from.
high_percentile
,
contribution
);
35
result.
metering_area
= std::lerp(result.
metering_area
, from.
metering_area
,
contribution
);
36
// Metering mode is discrete and cannot be interpolated; the dominant volume wins.
37
if
(
contribution
>= 0.5f)
38
{
39
result.
metering_mode
= from.
metering_mode
;
40
}
41
}
42
};
43
44
}
// namespace unravel
auto_exposure_pass.h
basic_component.h
unravel::auto_exposure_component
Definition
auto_exposure_component.h:12
unravel::auto_exposure_component::enabled
bool enabled
Definition
auto_exposure_component.h:14
unravel::auto_exposure_component::merge_into
static void merge_into(auto_exposure_pass::settings &result, const auto_exposure_pass::settings &from, float contribution, bool is_first)
Merges this component's settings into result. For first contribution, copies; otherwise lerps.
Definition
auto_exposure_component.h:18
basetypes.hpp
unravel
Definition
crash.cpp:21
unravel::auto_exposure_pass::settings
Definition
auto_exposure_pass.h:31
unravel::auto_exposure_pass::settings::max_ev
float max_ev
Definition
auto_exposure_pass.h:42
unravel::auto_exposure_pass::settings::adaptation_speed_up
float adaptation_speed_up
Definition
auto_exposure_pass.h:47
unravel::auto_exposure_pass::settings::high_percentile
float high_percentile
Upper fraction kept before excluding the brightest (weighted) pixels.
Definition
auto_exposure_pass.h:53
unravel::auto_exposure_pass::settings::low_percentile
float low_percentile
Fraction of the darkest (weighted) pixels excluded from the average.
Definition
auto_exposure_pass.h:51
unravel::auto_exposure_pass::settings::min_ev
float min_ev
Definition
auto_exposure_pass.h:35
unravel::auto_exposure_pass::settings::metering_mode
exposure_metering_mode metering_mode
How pixels are spatially weighted when metering scene luminance.
Definition
auto_exposure_pass.h:55
unravel::auto_exposure_pass::settings::adaptation_speed_down
float adaptation_speed_down
Time constant in seconds for the exposure to DECREASE (scene getting brighter).
Definition
auto_exposure_pass.h:49
unravel::auto_exposure_pass::settings::metering_area
float metering_area
Definition
auto_exposure_pass.h:58
unravel::auto_exposure_pass::settings::compensation
float compensation
Exposure bias in EV stops applied on top of the metered result (+1 = 2x brighter).
Definition
auto_exposure_pass.h:44
unravel::component_crtp
CRTP (Curiously Recurring Template Pattern) base structure for components.
Definition
basic_component.h:91
unravel::settings
Definition
settings.h:21
contribution
float contribution
Definition
volume_resolver.cpp:26
engine
engine
rendering
ecs
components
auto_exposure_component.h
Generated by
1.12.0