using UnityEngine; using UnityEngine.PostProcessing; namespace UnityEditor.PostProcessing { using Settings = EyeAdaptationModel.Settings; [PostProcessingModelEditor(typeof(EyeAdaptationModel))] public class EyeAdaptationModelEditor : PostProcessingModelEditor { SerializedProperty m_LowPercent; SerializedProperty m_HighPercent; SerializedProperty m_MinLuminance; SerializedProperty m_MaxLuminance; SerializedProperty m_ExposureCompensation; SerializedProperty m_AdaptationType; SerializedProperty m_SpeedUp; SerializedProperty m_SpeedDown; SerializedProperty m_LogMin; SerializedProperty m_LogMax; public override void OnEnable() { m_LowPercent = FindSetting((Settings x) => x.lowPercent); m_HighPercent = FindSetting((Settings x) => x.highPercent); m_MinLuminance = FindSetting((Settings x) => x.minLuminance); m_MaxLuminance = FindSetting((Settings x) => x.maxLuminance); m_ExposureCompensation = FindSetting((Settings x) => x.exposureCompensation); m_AdaptationType = FindSetting((Settings x) => x.adaptationType); m_SpeedUp = FindSetting((Settings x) => x.speedUp); m_SpeedDown = FindSetting((Settings x) => x.speedDown); m_LogMin = FindSetting((Settings x) => x.logMin); m_LogMax = FindSetting((Settings x) => x.logMax); } public override void OnInspectorGUI() { if (!GraphicsUtils.supportsDX11) { EditorGUILayout.HelpBox("This effect requires support for compute shaders. Enabling it won't do anything on unsupported platforms.", MessageType.Warning); return; } EditorGUILayout.PropertyField(m_LogMin, EditorGUIHelper.GetContent("Histogram Log Min")); EditorGUILayout.PropertyField(m_LogMax, EditorGUIHelper.GetContent("Histogram Log Max")); EditorGUILayout.Space(); float low = m_LowPercent.floatValue; float high = m_HighPercent.floatValue; EditorGUILayout.MinMaxSlider(EditorGUIHelper.GetContent("Filter|These values are the lower and upper percentages of the histogram that will be used to find a stable average luminance. Values outside of this range will be discarded and won't contribute to the average luminance."), ref low, ref high, 1f, 99f); m_LowPercent.floatValue = low; m_HighPercent.floatValue = high; EditorGUILayout.PropertyField(m_MinLuminance); EditorGUILayout.PropertyField(m_MaxLuminance); EditorGUILayout.PropertyField(m_ExposureCompensation); EditorGUILayout.PropertyField(m_AdaptationType); if (m_AdaptationType.intValue == (int)EyeAdaptationModel.EyeAdaptationType.Progressive) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(m_SpeedUp); EditorGUILayout.PropertyField(m_SpeedDown); EditorGUI.indentLevel--; } } } }