AmbientOcclusionEditor.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. using UnityEngine.Rendering.PostProcessing;
  3. namespace UnityEditor.Rendering.PostProcessing
  4. {
  5. [PostProcessEditor(typeof(AmbientOcclusion))]
  6. internal sealed class AmbientOcclusionEditor : PostProcessEffectEditor<AmbientOcclusion>
  7. {
  8. SerializedParameterOverride m_Mode;
  9. SerializedParameterOverride m_Intensity;
  10. SerializedParameterOverride m_Color;
  11. SerializedParameterOverride m_AmbientOnly;
  12. SerializedParameterOverride m_ThicknessModifier;
  13. SerializedParameterOverride m_DirectLightingStrength;
  14. SerializedParameterOverride m_Quality;
  15. SerializedParameterOverride m_Radius;
  16. public override void OnEnable()
  17. {
  18. m_Mode = FindParameterOverride(x => x.mode);
  19. m_Intensity = FindParameterOverride(x => x.intensity);
  20. m_Color = FindParameterOverride(x => x.color);
  21. m_AmbientOnly = FindParameterOverride(x => x.ambientOnly);
  22. m_ThicknessModifier = FindParameterOverride(x => x.thicknessModifier);
  23. m_DirectLightingStrength = FindParameterOverride(x => x.directLightingStrength);
  24. m_Quality = FindParameterOverride(x => x.quality);
  25. m_Radius = FindParameterOverride(x => x.radius);
  26. }
  27. public override void OnInspectorGUI()
  28. {
  29. PropertyField(m_Mode);
  30. int aoMode = m_Mode.value.intValue;
  31. if (RuntimeUtilities.scriptableRenderPipelineActive && aoMode == (int)AmbientOcclusionMode.ScalableAmbientObscurance)
  32. {
  33. EditorGUILayout.HelpBox("Scalable ambient obscurance doesn't work with scriptable render pipelines.", MessageType.Warning);
  34. return;
  35. }
  36. #if !UNITY_2017_1_OR_NEWER
  37. if (aoMode == (int)AmbientOcclusionMode.MultiScaleVolumetricObscurance)
  38. {
  39. EditorGUILayout.HelpBox("Multi-scale volumetric obscurance requires Unity 2017.1 or more.", MessageType.Warning);
  40. return;
  41. }
  42. #endif
  43. PropertyField(m_Intensity);
  44. if (aoMode == (int)AmbientOcclusionMode.ScalableAmbientObscurance)
  45. {
  46. PropertyField(m_Radius);
  47. PropertyField(m_Quality);
  48. }
  49. else if (aoMode == (int)AmbientOcclusionMode.MultiScaleVolumetricObscurance)
  50. {
  51. if (!SystemInfo.supportsComputeShaders)
  52. EditorGUILayout.HelpBox("Multi-scale volumetric obscurance requires compute shader support.", MessageType.Warning);
  53. PropertyField(m_ThicknessModifier);
  54. if (RuntimeUtilities.scriptableRenderPipelineActive)
  55. PropertyField(m_DirectLightingStrength);
  56. }
  57. PropertyField(m_Color);
  58. PropertyField(m_AmbientOnly);
  59. if (m_AmbientOnly.overrideState.boolValue && m_AmbientOnly.value.boolValue && !RuntimeUtilities.scriptableRenderPipelineActive)
  60. EditorGUILayout.HelpBox("Ambient-only only works with cameras rendering in Deferred + HDR", MessageType.Info);
  61. }
  62. }
  63. }