-
Notifications
You must be signed in to change notification settings - Fork 871
Expand file tree
/
Copy pathAutoExposureEditor.cs
More file actions
73 lines (59 loc) · 2.72 KB
/
AutoExposureEditor.cs
File metadata and controls
73 lines (59 loc) · 2.72 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
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
namespace UnityEditor.Rendering.PostProcessing
{
[PostProcessEditor(typeof(AutoExposure))]
internal sealed class AutoExposureEditor : PostProcessEffectEditor<AutoExposure>
{
SerializedParameterOverride m_Filtering;
SerializedParameterOverride m_MinLuminance;
SerializedParameterOverride m_MaxLuminance;
SerializedParameterOverride m_KeyValue;
SerializedParameterOverride m_EyeAdaptation;
SerializedParameterOverride m_SpeedUp;
SerializedParameterOverride m_SpeedDown;
public override void OnEnable()
{
m_Filtering = FindParameterOverride(x => x.filtering);
m_MinLuminance = FindParameterOverride(x => x.minLuminance);
m_MaxLuminance = FindParameterOverride(x => x.maxLuminance);
m_KeyValue = FindParameterOverride(x => x.keyValue);
m_EyeAdaptation = FindParameterOverride(x => x.eyeAdaptation);
m_SpeedUp = FindParameterOverride(x => x.speedUp);
m_SpeedDown = FindParameterOverride(x => x.speedDown);
}
public override void OnInspectorGUI()
{
if (!SystemInfo.supportsComputeShaders)
{
EditorGUILayout.HelpBox("Auto exposure requires compute shader support which is not available on this platform.", MessageType.Error);
}
if (EditorUtilities.isTargetingOpenGLES)
{
EditorGUILayout.HelpBox("Auto exposure requires compute shader support which is not available for OpenGLES.", MessageType.Warning);
}
else if (EditorUtilities.isTargetingWebGL)
{
EditorGUILayout.HelpBox("Auto exposure requires compute shader support (WebGPU) when running on Web.", MessageType.Warning);
}
EditorUtilities.DrawHeaderLabel("Exposure");
PropertyField(m_Filtering);
PropertyField(m_MinLuminance);
PropertyField(m_MaxLuminance);
// Clamp min/max adaptation values
float minLum = m_MinLuminance.value.floatValue;
float maxLum = m_MaxLuminance.value.floatValue;
m_MinLuminance.value.floatValue = Mathf.Min(minLum, maxLum);
m_MaxLuminance.value.floatValue = Mathf.Max(minLum, maxLum);
PropertyField(m_KeyValue);
EditorGUILayout.Space();
EditorUtilities.DrawHeaderLabel("Adaptation");
PropertyField(m_EyeAdaptation);
if (m_EyeAdaptation.value.intValue == (int)EyeAdaptation.Progressive)
{
PropertyField(m_SpeedUp);
PropertyField(m_SpeedDown);
}
}
}
}