EyeAdaptationModel.cs
3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
namespace UnityEngine.PostProcessing
{
[Serializable]
public class EyeAdaptationModel : PostProcessingModel
{
public enum EyeAdaptationType
{
Progressive,
Fixed
}
[Serializable]
public struct Settings
{
[Range(1f, 99f), Tooltip("Filters the dark part of the histogram when computing the average luminance to avoid very dark pixels from contributing to the auto exposure. Unit is in percent.")]
public float lowPercent;
[Range(1f, 99f), Tooltip("Filters the bright part of the histogram when computing the average luminance to avoid very dark pixels from contributing to the auto exposure. Unit is in percent.")]
public float highPercent;
[Tooltip("Minimum average luminance to consider for auto exposure (in EV).")]
public float minLuminance;
[Tooltip("Maximum average luminance to consider for auto exposure (in EV).")]
public float maxLuminance;
[Min(0f), Tooltip("Exposure bias. Use this to offset the global exposure of the scene.")]
public float keyValue;
[Tooltip("Set this to true to let Unity handle the key value automatically based on average luminance.")]
public bool dynamicKeyValue;
[Tooltip("Use \"Progressive\" if you want the auto exposure to be animated. Use \"Fixed\" otherwise.")]
public EyeAdaptationType adaptationType;
[Min(0f), Tooltip("Adaptation speed from a dark to a light environment.")]
public float speedUp;
[Min(0f), Tooltip("Adaptation speed from a light to a dark environment.")]
public float speedDown;
[Range(-16, -1), Tooltip("Lower bound for the brightness range of the generated histogram (in EV). The bigger the spread between min & max, the lower the precision will be.")]
public int logMin;
[Range(1, 16), Tooltip("Upper bound for the brightness range of the generated histogram (in EV). The bigger the spread between min & max, the lower the precision will be.")]
public int logMax;
public static Settings defaultSettings
{
get
{
return new Settings
{
lowPercent = 45f,
highPercent = 95f,
minLuminance = -5f,
maxLuminance = 1f,
keyValue = 0.25f,
dynamicKeyValue = true,
adaptationType = EyeAdaptationType.Progressive,
speedUp = 2f,
speedDown = 1f,
logMin = -8,
logMax = 4
};
}
}
}
[SerializeField]
Settings m_Settings = Settings.defaultSettings;
public Settings settings
{
get { return m_Settings; }
set { m_Settings = value; }
}
public override void Reset()
{
m_Settings = Settings.defaultSettings;
}
}
}