Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

TonemappingEditor.cs 3.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using UnityEngine.Rendering.Universal;
  2. namespace UnityEditor.Rendering.Universal
  3. {
  4. [CustomEditor(typeof(Tonemapping))]
  5. sealed class TonemappingEditor : VolumeComponentEditor
  6. {
  7. SerializedDataParameter m_Mode;
  8. // HDR Mode.
  9. SerializedDataParameter m_NeutralHDRRangeReductionMode;
  10. SerializedDataParameter m_HueShiftAmount;
  11. SerializedDataParameter m_HDRDetectPaperWhite;
  12. SerializedDataParameter m_HDRPaperwhite;
  13. SerializedDataParameter m_HDRDetectNitLimits;
  14. SerializedDataParameter m_HDRMinNits;
  15. SerializedDataParameter m_HDRMaxNits;
  16. SerializedDataParameter m_HDRAcesPreset;
  17. public override bool hasAdditionalProperties => true;
  18. public override void OnEnable()
  19. {
  20. var o = new PropertyFetcher<Tonemapping>(serializedObject);
  21. m_Mode = Unpack(o.Find(x => x.mode));
  22. m_NeutralHDRRangeReductionMode = Unpack(o.Find(x => x.neutralHDRRangeReductionMode));
  23. m_HueShiftAmount = Unpack(o.Find(x => x.hueShiftAmount));
  24. m_HDRDetectPaperWhite = Unpack(o.Find(x => x.detectPaperWhite));
  25. m_HDRPaperwhite = Unpack(o.Find(x => x.paperWhite));
  26. m_HDRDetectNitLimits = Unpack(o.Find(x => x.detectBrightnessLimits));
  27. m_HDRMinNits = Unpack(o.Find(x => x.minNits));
  28. m_HDRMaxNits = Unpack(o.Find(x => x.maxNits));
  29. m_HDRAcesPreset = Unpack(o.Find(x => x.acesPreset));
  30. }
  31. public override void OnInspectorGUI()
  32. {
  33. PropertyField(m_Mode);
  34. // Display a warning if the user is trying to use a tonemap while rendering in LDR
  35. var asset = UniversalRenderPipeline.asset;
  36. int hdrTonemapMode = m_Mode.value.intValue;
  37. if (asset != null && !asset.supportsHDR && hdrTonemapMode != (int)TonemappingMode.None)
  38. {
  39. EditorGUILayout.HelpBox("Tonemapping should only be used when working with High Dynamic Range (HDR). Please enable HDR through the active Render Pipeline Asset.", MessageType.Warning);
  40. return;
  41. }
  42. if (PlayerSettings.allowHDRDisplaySupport && hdrTonemapMode != (int)TonemappingMode.None)
  43. {
  44. EditorGUILayout.LabelField("HDR Output");
  45. if (hdrTonemapMode == (int)TonemappingMode.Neutral)
  46. {
  47. PropertyField(m_NeutralHDRRangeReductionMode);
  48. PropertyField(m_HueShiftAmount);
  49. PropertyField(m_HDRDetectPaperWhite);
  50. EditorGUI.indentLevel++;
  51. using (new EditorGUI.DisabledScope(m_HDRDetectPaperWhite.value.boolValue))
  52. {
  53. PropertyField(m_HDRPaperwhite);
  54. }
  55. EditorGUI.indentLevel--;
  56. PropertyField(m_HDRDetectNitLimits);
  57. EditorGUI.indentLevel++;
  58. using (new EditorGUI.DisabledScope(m_HDRDetectNitLimits.value.boolValue))
  59. {
  60. PropertyField(m_HDRMinNits);
  61. PropertyField(m_HDRMaxNits);
  62. }
  63. EditorGUI.indentLevel--;
  64. }
  65. if (hdrTonemapMode == (int)TonemappingMode.ACES)
  66. {
  67. PropertyField(m_HDRAcesPreset);
  68. PropertyField(m_HDRDetectPaperWhite);
  69. EditorGUI.indentLevel++;
  70. using (new EditorGUI.DisabledScope(m_HDRDetectPaperWhite.value.boolValue))
  71. {
  72. PropertyField(m_HDRPaperwhite);
  73. }
  74. EditorGUI.indentLevel--;
  75. }
  76. }
  77. }
  78. }
  79. }