summaryrefslogtreecommitdiff
path: root/UnityEngine.PostProcessing/EyeAdaptationModel.cs
blob: aab9a3d6b846277eed47a43ca31ce16c34fb964c (plain)
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
89
90
91
92
93
94
95
96
97
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(-16f, -1f)]
		[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(1f, 16f)]
		[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
			{
				Settings result = default(Settings);
				result.lowPercent = 45f;
				result.highPercent = 95f;
				result.minLuminance = -5f;
				result.maxLuminance = 1f;
				result.keyValue = 0.25f;
				result.dynamicKeyValue = true;
				result.adaptationType = EyeAdaptationType.Progressive;
				result.speedUp = 2f;
				result.speedDown = 1f;
				result.logMin = -8;
				result.logMax = 4;
				return result;
			}
		}
	}

	[SerializeField]
	private Settings m_Settings = Settings.defaultSettings;

	public Settings settings
	{
		get
		{
			return m_Settings;
		}
		set
		{
			m_Settings = value;
		}
	}

	public override void Reset()
	{
		m_Settings = Settings.defaultSettings;
	}
}