| | |
| | | using UnityEngine.PostProcessing; |
| | | |
| | | namespace UnityEditor.PostProcessing |
| | | { |
| | | using Mode = BuiltinDebugViewsModel.Mode; |
| | | using Settings = BuiltinDebugViewsModel.Settings; |
| | | |
| | | [PostProcessingModelEditor(typeof(BuiltinDebugViewsModel), alwaysEnabled: true)] |
| | | public class BuiltinDebugViewsEditor : PostProcessingModelEditor |
| | | { |
| | | struct DepthSettings |
| | | { |
| | | public SerializedProperty scale; |
| | | } |
| | | |
| | | struct MotionVectorsSettings |
| | | { |
| | | public SerializedProperty sourceOpacity; |
| | | public SerializedProperty motionImageOpacity; |
| | | public SerializedProperty motionImageAmplitude; |
| | | public SerializedProperty motionVectorsOpacity; |
| | | public SerializedProperty motionVectorsResolution; |
| | | public SerializedProperty motionVectorsAmplitude; |
| | | } |
| | | |
| | | SerializedProperty m_Mode; |
| | | DepthSettings m_Depth; |
| | | MotionVectorsSettings m_MotionVectors; |
| | | |
| | | public override void OnEnable() |
| | | { |
| | | m_Mode = FindSetting((Settings x) => x.mode); |
| | | |
| | | m_Depth = new DepthSettings |
| | | { |
| | | scale = FindSetting((Settings x) => x.depth.scale) |
| | | }; |
| | | |
| | | m_MotionVectors = new MotionVectorsSettings |
| | | { |
| | | sourceOpacity = FindSetting((Settings x) => x.motionVectors.sourceOpacity), |
| | | motionImageOpacity = FindSetting((Settings x) => x.motionVectors.motionImageOpacity), |
| | | motionImageAmplitude = FindSetting((Settings x) => x.motionVectors.motionImageAmplitude), |
| | | motionVectorsOpacity = FindSetting((Settings x) => x.motionVectors.motionVectorsOpacity), |
| | | motionVectorsResolution = FindSetting((Settings x) => x.motionVectors.motionVectorsResolution), |
| | | motionVectorsAmplitude = FindSetting((Settings x) => x.motionVectors.motionVectorsAmplitude), |
| | | }; |
| | | } |
| | | |
| | | public override void OnInspectorGUI() |
| | | { |
| | | EditorGUILayout.PropertyField(m_Mode); |
| | | |
| | | int mode = m_Mode.intValue; |
| | | |
| | | if (mode == (int)Mode.Depth) |
| | | { |
| | | EditorGUILayout.PropertyField(m_Depth.scale); |
| | | } |
| | | else if (mode == (int)Mode.MotionVectors) |
| | | { |
| | | EditorGUILayout.HelpBox("Switch to play mode to see motion vectors.", MessageType.Info); |
| | | |
| | | EditorGUILayout.LabelField("Source Image", EditorStyles.boldLabel); |
| | | EditorGUI.indentLevel++; |
| | | EditorGUILayout.PropertyField(m_MotionVectors.sourceOpacity, EditorGUIHelper.GetContent("Opacity")); |
| | | EditorGUI.indentLevel--; |
| | | |
| | | EditorGUILayout.Space(); |
| | | |
| | | EditorGUILayout.LabelField("Motion Vectors (overlay)", EditorStyles.boldLabel); |
| | | EditorGUI.indentLevel++; |
| | | |
| | | if (m_MotionVectors.motionImageOpacity.floatValue > 0f) |
| | | EditorGUILayout.HelpBox("Please keep opacity to 0 if you're subject to motion sickness.", MessageType.Warning); |
| | | |
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionImageOpacity, EditorGUIHelper.GetContent("Opacity")); |
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionImageAmplitude, EditorGUIHelper.GetContent("Amplitude")); |
| | | EditorGUI.indentLevel--; |
| | | |
| | | EditorGUILayout.Space(); |
| | | |
| | | EditorGUILayout.LabelField("Motion Vectors (arrows)", EditorStyles.boldLabel); |
| | | EditorGUI.indentLevel++; |
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsOpacity, EditorGUIHelper.GetContent("Opacity")); |
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsResolution, EditorGUIHelper.GetContent("Resolution")); |
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsAmplitude, EditorGUIHelper.GetContent("Amplitude")); |
| | | EditorGUI.indentLevel--; |
| | | } |
| | | else |
| | | { |
| | | CheckActiveEffect(mode == (int)Mode.AmbientOcclusion && !profile.ambientOcclusion.enabled, "Ambient Occlusion"); |
| | | CheckActiveEffect(mode == (int)Mode.FocusPlane && !profile.depthOfField.enabled, "Depth Of Field"); |
| | | CheckActiveEffect(mode == (int)Mode.EyeAdaptation && !profile.eyeAdaptation.enabled, "Eye Adaptation"); |
| | | CheckActiveEffect((mode == (int)Mode.LogLut || mode == (int)Mode.PreGradingLog) && !profile.colorGrading.enabled, "Color Grading"); |
| | | CheckActiveEffect(mode == (int)Mode.UserLut && !profile.userLut.enabled, "User Lut"); |
| | | } |
| | | } |
| | | |
| | | void CheckActiveEffect(bool expr, string name) |
| | | { |
| | | if (expr) |
| | | EditorGUILayout.HelpBox(string.Format("{0} isn't enabled, the debug view won't work.", name), MessageType.Warning); |
| | | } |
| | | } |
| | | } |
| | | using UnityEngine.PostProcessing;
|
| | |
|
| | | namespace UnityEditor.PostProcessing
|
| | | {
|
| | | using Mode = BuiltinDebugViewsModel.Mode;
|
| | | using Settings = BuiltinDebugViewsModel.Settings;
|
| | |
|
| | | [PostProcessingModelEditor(typeof(BuiltinDebugViewsModel), alwaysEnabled: true)]
|
| | | public class BuiltinDebugViewsEditor : PostProcessingModelEditor
|
| | | {
|
| | | struct DepthSettings
|
| | | {
|
| | | public SerializedProperty scale;
|
| | | }
|
| | |
|
| | | struct MotionVectorsSettings
|
| | | {
|
| | | public SerializedProperty sourceOpacity;
|
| | | public SerializedProperty motionImageOpacity;
|
| | | public SerializedProperty motionImageAmplitude;
|
| | | public SerializedProperty motionVectorsOpacity;
|
| | | public SerializedProperty motionVectorsResolution;
|
| | | public SerializedProperty motionVectorsAmplitude;
|
| | | }
|
| | |
|
| | | SerializedProperty m_Mode;
|
| | | DepthSettings m_Depth;
|
| | | MotionVectorsSettings m_MotionVectors;
|
| | |
|
| | | public override void OnEnable()
|
| | | {
|
| | | m_Mode = FindSetting((Settings x) => x.mode);
|
| | |
|
| | | m_Depth = new DepthSettings
|
| | | {
|
| | | scale = FindSetting((Settings x) => x.depth.scale)
|
| | | };
|
| | |
|
| | | m_MotionVectors = new MotionVectorsSettings
|
| | | {
|
| | | sourceOpacity = FindSetting((Settings x) => x.motionVectors.sourceOpacity),
|
| | | motionImageOpacity = FindSetting((Settings x) => x.motionVectors.motionImageOpacity),
|
| | | motionImageAmplitude = FindSetting((Settings x) => x.motionVectors.motionImageAmplitude),
|
| | | motionVectorsOpacity = FindSetting((Settings x) => x.motionVectors.motionVectorsOpacity),
|
| | | motionVectorsResolution = FindSetting((Settings x) => x.motionVectors.motionVectorsResolution),
|
| | | motionVectorsAmplitude = FindSetting((Settings x) => x.motionVectors.motionVectorsAmplitude),
|
| | | };
|
| | | }
|
| | |
|
| | | public override void OnInspectorGUI()
|
| | | {
|
| | | EditorGUILayout.PropertyField(m_Mode);
|
| | |
|
| | | int mode = m_Mode.intValue;
|
| | |
|
| | | if (mode == (int)Mode.Depth)
|
| | | {
|
| | | EditorGUILayout.PropertyField(m_Depth.scale);
|
| | | }
|
| | | else if (mode == (int)Mode.MotionVectors)
|
| | | {
|
| | | EditorGUILayout.HelpBox("Switch to play mode to see motion vectors.", MessageType.Info);
|
| | |
|
| | | EditorGUILayout.LabelField("Source Image", EditorStyles.boldLabel);
|
| | | EditorGUI.indentLevel++;
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.sourceOpacity, EditorGUIHelper.GetContent("Opacity"));
|
| | | EditorGUI.indentLevel--;
|
| | |
|
| | | EditorGUILayout.Space();
|
| | |
|
| | | EditorGUILayout.LabelField("Motion Vectors (overlay)", EditorStyles.boldLabel);
|
| | | EditorGUI.indentLevel++;
|
| | |
|
| | | if (m_MotionVectors.motionImageOpacity.floatValue > 0f)
|
| | | EditorGUILayout.HelpBox("Please keep opacity to 0 if you're subject to motion sickness.", MessageType.Warning);
|
| | |
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionImageOpacity, EditorGUIHelper.GetContent("Opacity"));
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionImageAmplitude, EditorGUIHelper.GetContent("Amplitude"));
|
| | | EditorGUI.indentLevel--;
|
| | |
|
| | | EditorGUILayout.Space();
|
| | |
|
| | | EditorGUILayout.LabelField("Motion Vectors (arrows)", EditorStyles.boldLabel);
|
| | | EditorGUI.indentLevel++;
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsOpacity, EditorGUIHelper.GetContent("Opacity"));
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsResolution, EditorGUIHelper.GetContent("Resolution"));
|
| | | EditorGUILayout.PropertyField(m_MotionVectors.motionVectorsAmplitude, EditorGUIHelper.GetContent("Amplitude"));
|
| | | EditorGUI.indentLevel--;
|
| | | }
|
| | | else
|
| | | {
|
| | | CheckActiveEffect(mode == (int)Mode.AmbientOcclusion && !profile.ambientOcclusion.enabled, "Ambient Occlusion");
|
| | | CheckActiveEffect(mode == (int)Mode.FocusPlane && !profile.depthOfField.enabled, "Depth Of Field");
|
| | | CheckActiveEffect(mode == (int)Mode.EyeAdaptation && !profile.eyeAdaptation.enabled, "Eye Adaptation");
|
| | | CheckActiveEffect((mode == (int)Mode.LogLut || mode == (int)Mode.PreGradingLog) && !profile.colorGrading.enabled, "Color Grading");
|
| | | CheckActiveEffect(mode == (int)Mode.UserLut && !profile.userLut.enabled, "User Lut");
|
| | | }
|
| | | }
|
| | |
|
| | | void CheckActiveEffect(bool expr, string name)
|
| | | {
|
| | | if (expr)
|
| | | EditorGUILayout.HelpBox(string.Format("{0} isn't enabled, the debug view won't work.", name), MessageType.Warning);
|
| | | }
|
| | | }
|
| | | }
|