Skip to content
This repository was archived by the owner on Nov 30, 2020. It is now read-only.

Commit 926e3ec

Browse files
committed
Merge remote-tracking branch 'origin/v2' into xr_taa
2 parents 9de8b18 + 52d9afe commit 926e3ec

46 files changed

Lines changed: 2576 additions & 400 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PostProcessing/Editor/EffectListEditor.cs

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -131,64 +131,70 @@ public void OnGUI()
131131
RefreshEditors();
132132
m_Asset.isDirty = false;
133133
}
134-
135-
EditorGUILayout.LabelField(EditorUtilities.GetContent("Overrides"), EditorStyles.boldLabel);
136134

137-
// Override list
138-
for (int i = 0; i < m_Editors.Count; i++)
135+
bool isEditable = !VersionControl.Provider.isActive
136+
|| AssetDatabase.IsOpenForEdit(m_Asset, StatusQueryOptions.UseCachedIfPossible);
137+
138+
using (new EditorGUI.DisabledScope(!isEditable))
139139
{
140-
var editor = m_Editors[i];
141-
string title = editor.GetDisplayTitle();
142-
int id = i; // Needed for closure capture below
143-
144-
EditorUtilities.DrawSplitter();
145-
bool displayContent = EditorUtilities.DrawHeader(
146-
title,
147-
editor.baseProperty,
148-
editor.activeProperty,
149-
editor.target,
150-
() => ResetEffectOverride(editor.target.GetType(), id),
151-
() => RemoveEffectOverride(id)
152-
);
153-
154-
if (displayContent)
140+
EditorGUILayout.LabelField(EditorUtilities.GetContent("Overrides"), EditorStyles.boldLabel);
141+
142+
// Override list
143+
for (int i = 0; i < m_Editors.Count; i++)
155144
{
156-
using (new EditorGUI.DisabledScope(!editor.activeProperty.boolValue))
157-
editor.OnInternalInspectorGUI();
145+
var editor = m_Editors[i];
146+
string title = editor.GetDisplayTitle();
147+
int id = i; // Needed for closure capture below
148+
149+
EditorUtilities.DrawSplitter();
150+
bool displayContent = EditorUtilities.DrawHeader(
151+
title,
152+
editor.baseProperty,
153+
editor.activeProperty,
154+
editor.target,
155+
() => ResetEffectOverride(editor.target.GetType(), id),
156+
() => RemoveEffectOverride(id)
157+
);
158+
159+
if (displayContent)
160+
{
161+
using (new EditorGUI.DisabledScope(!editor.activeProperty.boolValue))
162+
editor.OnInternalInspectorGUI();
163+
}
158164
}
159-
}
160165

161-
if (m_Editors.Count > 0)
162-
{
163-
EditorUtilities.DrawSplitter();
164-
EditorGUILayout.Space();
165-
}
166-
else
167-
{
168-
EditorGUILayout.HelpBox("No override set on this volume.", MessageType.Info);
169-
}
170-
171-
if (GUILayout.Button("Add effect...", EditorStyles.miniButton))
172-
{
173-
var menu = new GenericMenu();
166+
if (m_Editors.Count > 0)
167+
{
168+
EditorUtilities.DrawSplitter();
169+
EditorGUILayout.Space();
170+
}
171+
else
172+
{
173+
EditorGUILayout.HelpBox("No override set on this volume.", MessageType.Info);
174+
}
174175

175-
var typeMap = PostProcessManager.instance.settingsTypes;
176-
foreach (var kvp in typeMap)
176+
if (GUILayout.Button("Add effect...", EditorStyles.miniButton))
177177
{
178-
var type = kvp.Key;
179-
var title = EditorUtilities.GetContent(kvp.Value.menuItem);
180-
bool exists = m_Asset.HasSettings(type);
181-
182-
if (!exists)
183-
menu.AddItem(title, false, () => AddEffectOverride(type));
184-
else
185-
menu.AddDisabledItem(title);
178+
var menu = new GenericMenu();
179+
180+
var typeMap = PostProcessManager.instance.settingsTypes;
181+
foreach (var kvp in typeMap)
182+
{
183+
var type = kvp.Key;
184+
var title = EditorUtilities.GetContent(kvp.Value.menuItem);
185+
bool exists = m_Asset.HasSettings(type);
186+
187+
if (!exists)
188+
menu.AddItem(title, false, () => AddEffectOverride(type));
189+
else
190+
menu.AddDisabledItem(title);
191+
}
192+
193+
menu.ShowAsContext();
186194
}
187195

188-
menu.ShowAsContext();
196+
EditorGUILayout.Space();
189197
}
190-
191-
EditorGUILayout.Space();
192198
}
193199

194200
void AddEffectOverride(Type type)

PostProcessing/Editor/Effects/BloomEditor.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ public sealed class BloomEditor : PostProcessEffectEditor<Bloom>
99
SerializedParameterOverride m_Threshold;
1010
SerializedParameterOverride m_SoftKnee;
1111
SerializedParameterOverride m_Diffusion;
12+
SerializedParameterOverride m_AnamorphicRatio;
1213
SerializedParameterOverride m_Color;
1314
SerializedParameterOverride m_MobileOptimized;
14-
15+
1516
SerializedParameterOverride m_LensTexture;
1617
SerializedParameterOverride m_LensIntensity;
1718

@@ -21,6 +22,7 @@ public override void OnEnable()
2122
m_Threshold = FindParameterOverride(x => x.threshold);
2223
m_SoftKnee = FindParameterOverride(x => x.softKnee);
2324
m_Diffusion = FindParameterOverride(x => x.diffusion);
25+
m_AnamorphicRatio = FindParameterOverride(x => x.anamorphicRatio);
2426
m_Color = FindParameterOverride(x => x.color);
2527
m_MobileOptimized = FindParameterOverride(x => x.mobileOptimized);
2628

@@ -31,17 +33,18 @@ public override void OnEnable()
3133
public override void OnInspectorGUI()
3234
{
3335
EditorUtilities.DrawHeaderLabel("Bloom");
34-
36+
3537
PropertyField(m_Intensity);
3638
PropertyField(m_Threshold);
3739
PropertyField(m_SoftKnee);
3840
PropertyField(m_Diffusion);
41+
PropertyField(m_AnamorphicRatio);
3942
PropertyField(m_Color);
4043
PropertyField(m_MobileOptimized);
41-
44+
4245
EditorGUILayout.Space();
4346
EditorUtilities.DrawHeaderLabel("Lens Dirtiness");
44-
47+
4548
PropertyField(m_LensTexture);
4649
PropertyField(m_LensIntensity);
4750

PostProcessing/Editor/PostProcessDebugEditor.cs

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using UnityEngine;
1+
using UnityEngine;
22
using UnityEngine.Rendering.PostProcessing;
33

44
namespace UnityEditor.Rendering.PostProcessing
@@ -11,12 +11,17 @@ public sealed class PostProcessDebugEditor : BaseEditor<PostProcessDebug>
1111
SerializedProperty m_HistogramEnabled;
1212
SerializedProperty m_WaveformEnabled;
1313
SerializedProperty m_VectorscopeEnabled;
14+
SerializedProperty m_Overlay;
15+
16+
SerializedObject m_LayerObject;
1417

15-
SerializedObject m_Monitors;
1618
SerializedProperty m_LightMeterShowCurves;
1719
SerializedProperty m_HistogramChannel;
1820
SerializedProperty m_WaveformExposure;
1921
SerializedProperty m_VectorscopeExposure;
22+
23+
SerializedProperty m_MotionColorIntensity;
24+
SerializedProperty m_MotionGridSize;
2025

2126
void OnEnable()
2227
{
@@ -25,6 +30,7 @@ void OnEnable()
2530
m_HistogramEnabled = FindProperty(x => x.histogram);
2631
m_WaveformEnabled = FindProperty(x => x.waveform);
2732
m_VectorscopeEnabled = FindProperty(x => x.vectorscope);
33+
m_Overlay = FindProperty(x => x.debugOverlay);
2834

2935
if (m_PostProcessLayer.objectReferenceValue != null)
3036
RebuildProperties();
@@ -35,12 +41,15 @@ void RebuildProperties()
3541
if (m_PostProcessLayer.objectReferenceValue == null)
3642
return;
3743

38-
m_Monitors = new SerializedObject(m_Target.postProcessLayer);
44+
m_LayerObject = new SerializedObject(m_Target.postProcessLayer);
45+
46+
m_LightMeterShowCurves = m_LayerObject.FindProperty("debugLayer.lightMeter.showCurves");
47+
m_HistogramChannel = m_LayerObject.FindProperty("debugLayer.histogram.channel");
48+
m_WaveformExposure = m_LayerObject.FindProperty("debugLayer.waveform.exposure");
49+
m_VectorscopeExposure = m_LayerObject.FindProperty("debugLayer.vectorscope.exposure");
3950

40-
m_LightMeterShowCurves = m_Monitors.FindProperty("monitors.lightMeter.showCurves");
41-
m_HistogramChannel = m_Monitors.FindProperty("monitors.histogram.channel");
42-
m_WaveformExposure = m_Monitors.FindProperty("monitors.waveform.exposure");
43-
m_VectorscopeExposure = m_Monitors.FindProperty("monitors.vectorscope.exposure");
51+
m_MotionColorIntensity = m_LayerObject.FindProperty("debugLayer.overlaySettings.motionColorIntensity");
52+
m_MotionGridSize = m_LayerObject.FindProperty("debugLayer.overlaySettings.motionGridSize");
4453
}
4554

4655
public override void OnInspectorGUI()
@@ -50,21 +59,41 @@ public override void OnInspectorGUI()
5059
using (var changed = new EditorGUI.ChangeCheckScope())
5160
{
5261
EditorGUILayout.PropertyField(m_PostProcessLayer);
62+
serializedObject.ApplyModifiedProperties(); // Needed to rebuild properties after a change
63+
serializedObject.Update();
5364

5465
if (changed.changed)
5566
RebuildProperties();
5667
}
5768

5869
if (m_PostProcessLayer.objectReferenceValue != null)
5970
{
60-
m_Monitors.Update();
71+
m_LayerObject.Update();
72+
73+
// Overlays
74+
EditorGUILayout.Space();
75+
EditorGUILayout.LabelField(EditorUtilities.GetContent("Overlay"), EditorStyles.boldLabel);
76+
EditorGUI.indentLevel++;
77+
EditorGUILayout.PropertyField(m_Overlay);
78+
DoOverlayGUI(DebugOverlay.MotionVectors, m_MotionColorIntensity, m_MotionGridSize);
79+
80+
// Special cases
81+
if (m_Overlay.intValue == (int)DebugOverlay.NANTracker && m_Target.postProcessLayer.stopNaNPropagation)
82+
EditorGUILayout.HelpBox("Disable \"Stop NaN Propagation\" in the Post-process layer or NaNs will be overwritten!", MessageType.Warning);
6183

84+
EditorGUI.indentLevel--;
85+
86+
// Monitors
87+
EditorGUILayout.Space();
88+
EditorGUILayout.LabelField(EditorUtilities.GetContent("Monitors"), EditorStyles.boldLabel);
89+
EditorGUI.indentLevel++;
6290
DoMonitorGUI(EditorUtilities.GetContent("Light Meter"), m_LightMeterEnabled, m_LightMeterShowCurves);
6391
DoMonitorGUI(EditorUtilities.GetContent("Histogram"), m_HistogramEnabled, m_HistogramChannel);
6492
DoMonitorGUI(EditorUtilities.GetContent("Waveform"), m_WaveformEnabled, m_WaveformExposure);
6593
DoMonitorGUI(EditorUtilities.GetContent("Vectoscope"), m_VectorscopeEnabled, m_VectorscopeExposure);
94+
EditorGUI.indentLevel--;
6695

67-
m_Monitors.ApplyModifiedProperties();
96+
m_LayerObject.ApplyModifiedProperties();
6897
}
6998

7099
serializedObject.ApplyModifiedProperties();
@@ -83,8 +112,19 @@ void DoMonitorGUI(GUIContent content, SerializedProperty prop, params Serialized
83112
foreach (var p in settings)
84113
EditorGUILayout.PropertyField(p);
85114
EditorGUI.indentLevel--;
86-
EditorGUILayout.Space();
87115
}
88116
}
117+
118+
void DoOverlayGUI(DebugOverlay overlay, params SerializedProperty[] settings)
119+
{
120+
if (m_Overlay.intValue != (int)overlay)
121+
return;
122+
123+
if (settings == null || settings.Length == 0)
124+
return;
125+
126+
foreach (var p in settings)
127+
EditorGUILayout.PropertyField(p);
128+
}
89129
}
90130
}

PostProcessing/Editor/PostProcessLayerEditor.cs

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace UnityEditor.Rendering.PostProcessing
1111
using SerializedBundleRef = PostProcessLayer.SerializedBundleRef;
1212
using EXRFlags = Texture2D.EXRFlags;
1313

14-
[CustomEditor(typeof(PostProcessLayer))]
14+
[CanEditMultipleObjects, CustomEditor(typeof(PostProcessLayer))]
1515
public sealed class PostProcessLayerEditor : BaseEditor<PostProcessLayer>
1616
{
1717
SerializedProperty m_StopNaNPropagation;
@@ -27,9 +27,14 @@ public sealed class PostProcessLayerEditor : BaseEditor<PostProcessLayer>
2727
SerializedProperty m_FxaaKeepAlpha;
2828

2929
SerializedProperty m_AOEnabled;
30-
SerializedProperty m_AOIntensity;
31-
SerializedProperty m_AORadius;
32-
SerializedProperty m_AOQuality;
30+
SerializedProperty m_AOMode;
31+
SerializedProperty m_SAOIntensity;
32+
SerializedProperty m_SAORadius;
33+
SerializedProperty m_SAOQuality;
34+
SerializedProperty m_SAOColor;
35+
SerializedProperty m_MSVOIntensity;
36+
SerializedProperty m_MSVOThicknessModifier;
37+
SerializedProperty m_MSVOColor;
3338
SerializedProperty m_AOAmbientOnly;
3439

3540
SerializedProperty m_FogEnabled;
@@ -49,6 +54,12 @@ public sealed class PostProcessLayerEditor : BaseEditor<PostProcessLayer>
4954
new GUIContent("Temporal Anti-aliasing (TAA)")
5055
};
5156

57+
static GUIContent[] s_AmbientOcclusionMethodNames =
58+
{
59+
new GUIContent("Scalable Ambient Obscurance (Classic)"),
60+
new GUIContent("Multi-scale Volumetric Obscurance (Modern)")
61+
};
62+
5263
enum ExportMode
5364
{
5465
FullFrame,
@@ -70,12 +81,17 @@ void OnEnable()
7081
m_TaaMotionBlending = FindProperty(x => x.temporalAntialiasing.motionBlending);
7182
m_FxaaMobileOptimized = FindProperty(x => x.fastApproximateAntialiasing.mobileOptimized);
7283
m_FxaaKeepAlpha = FindProperty(x => x.fastApproximateAntialiasing.keepAlpha);
73-
84+
7485
m_AOEnabled = FindProperty(x => x.ambientOcclusion.enabled);
75-
m_AOIntensity = FindProperty(x => x.ambientOcclusion.intensity);
76-
m_AORadius = FindProperty(x => x.ambientOcclusion.radius);
77-
m_AOQuality = FindProperty(x => x.ambientOcclusion.quality);
86+
m_AOMode = FindProperty(x => x.ambientOcclusion.mode);
7887
m_AOAmbientOnly = FindProperty(x => x.ambientOcclusion.ambientOnly);
88+
m_SAOIntensity = FindProperty(x => x.ambientOcclusion.scalableAO.intensity);
89+
m_SAORadius = FindProperty(x => x.ambientOcclusion.scalableAO.radius);
90+
m_SAOQuality = FindProperty(x => x.ambientOcclusion.scalableAO.quality);
91+
m_SAOColor = FindProperty(x => x.ambientOcclusion.scalableAO.color);
92+
m_MSVOIntensity = FindProperty(x => x.ambientOcclusion.multiScaleVO.intensity);
93+
m_MSVOThicknessModifier = FindProperty(x => x.ambientOcclusion.multiScaleVO.thicknessModifier);
94+
m_MSVOColor = FindProperty(x => x.ambientOcclusion.multiScaleVO.color);
7995

8096
m_FogEnabled = FindProperty(x => x.fog.enabled);
8197
m_FogExcludeSkybox = FindProperty(x => x.fog.excludeSkybox);
@@ -239,9 +255,25 @@ void DoAmbientOcclusion(Camera camera)
239255

240256
if (m_AOEnabled.boolValue)
241257
{
242-
EditorGUILayout.PropertyField(m_AOIntensity);
243-
EditorGUILayout.PropertyField(m_AORadius);
244-
EditorGUILayout.PropertyField(m_AOQuality);
258+
int aoMode = m_AOMode.intValue;
259+
m_AOMode.intValue = EditorGUILayout.Popup(EditorUtilities.GetContent("Mode|The ambient occlusion method to use. \"Modern\" is higher quality and faster on desktop & console platforms but requires compute shader support."), aoMode, s_AmbientOcclusionMethodNames);
260+
261+
if (aoMode == (int)AmbientOcclusion.Mode.SAO)
262+
{
263+
EditorGUILayout.PropertyField(m_SAOIntensity);
264+
EditorGUILayout.PropertyField(m_SAORadius);
265+
EditorGUILayout.PropertyField(m_SAOQuality);
266+
EditorGUILayout.PropertyField(m_SAOColor);
267+
}
268+
else if (aoMode == (int)AmbientOcclusion.Mode.MSVO)
269+
{
270+
if (!SystemInfo.supportsComputeShaders)
271+
EditorGUILayout.HelpBox("Multi-scale volumetric obscurance requires compute shader support.", MessageType.Warning);
272+
273+
EditorGUILayout.PropertyField(m_MSVOIntensity);
274+
EditorGUILayout.PropertyField(m_MSVOThicknessModifier);
275+
EditorGUILayout.PropertyField(m_MSVOColor);
276+
}
245277

246278
if (camera != null && camera.actualRenderingPath == RenderingPath.DeferredShading && camera.allowHDR)
247279
EditorGUILayout.PropertyField(m_AOAmbientOnly);

PostProcessing/Editor/PostProcessProfileEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace UnityEditor.Rendering.PostProcessing
44
{
5-
[CustomEditor(typeof(PostProcessProfile))]
5+
[CanEditMultipleObjects, CustomEditor(typeof(PostProcessProfile))]
66
sealed class PostProcessProfileEditor : Editor
77
{
88
EffectListEditor m_EffectList;

PostProcessing/Editor/PostProcessVolumeEditor.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
using System.IO;
21
using UnityEngine;
32
using UnityEngine.Rendering.PostProcessing;
43

54
namespace UnityEditor.Rendering.PostProcessing
65
{
7-
[CustomEditor(typeof(PostProcessVolume))]
6+
[CanEditMultipleObjects, CustomEditor(typeof(PostProcessVolume))]
87
public sealed class PostProcessVolumeEditor : BaseEditor<PostProcessVolume>
98
{
109
SerializedProperty m_Profile;
760 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)