AutoExposureEditor.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using UnityEngine;
  2. using UnityEngine.Rendering.PostProcessing;
  3. namespace UnityEditor.Rendering.PostProcessing
  4. {
  5. [PostProcessEditor(typeof(AutoExposure))]
  6. internal sealed class AutoExposureEditor : PostProcessEffectEditor<AutoExposure>
  7. {
  8. SerializedParameterOverride m_Filtering;
  9. SerializedParameterOverride m_MinLuminance;
  10. SerializedParameterOverride m_MaxLuminance;
  11. SerializedParameterOverride m_KeyValue;
  12. SerializedParameterOverride m_EyeAdaptation;
  13. SerializedParameterOverride m_SpeedUp;
  14. SerializedParameterOverride m_SpeedDown;
  15. public override void OnEnable()
  16. {
  17. m_Filtering = FindParameterOverride(x => x.filtering);
  18. m_MinLuminance = FindParameterOverride(x => x.minLuminance);
  19. m_MaxLuminance = FindParameterOverride(x => x.maxLuminance);
  20. m_KeyValue = FindParameterOverride(x => x.keyValue);
  21. m_EyeAdaptation = FindParameterOverride(x => x.eyeAdaptation);
  22. m_SpeedUp = FindParameterOverride(x => x.speedUp);
  23. m_SpeedDown = FindParameterOverride(x => x.speedDown);
  24. }
  25. public override void OnInspectorGUI()
  26. {
  27. if (!SystemInfo.supportsComputeShaders)
  28. EditorGUILayout.HelpBox("Auto exposure requires compute shader support.", MessageType.Warning);
  29. EditorUtilities.DrawHeaderLabel("Exposure");
  30. PropertyField(m_Filtering);
  31. PropertyField(m_MinLuminance);
  32. PropertyField(m_MaxLuminance);
  33. // Clamp min/max adaptation values
  34. float minLum = m_MinLuminance.value.floatValue;
  35. float maxLum = m_MaxLuminance.value.floatValue;
  36. m_MinLuminance.value.floatValue = Mathf.Min(minLum, maxLum);
  37. m_MaxLuminance.value.floatValue = Mathf.Max(minLum, maxLum);
  38. PropertyField(m_KeyValue);
  39. EditorGUILayout.Space();
  40. EditorUtilities.DrawHeaderLabel("Adaptation");
  41. PropertyField(m_EyeAdaptation);
  42. if (m_EyeAdaptation.value.intValue == (int)EyeAdaptation.Progressive)
  43. {
  44. PropertyField(m_SpeedUp);
  45. PropertyField(m_SpeedDown);
  46. }
  47. }
  48. }
  49. }