Skip to content

Commit e71c6aa

Browse files
kirill-titov-uEvergreen
authored andcommitted
[RPW] Switch to default and current render pipeline
We complete switching to the newest API in GraphicsSettings. GraphicsSettings.renderPipelineAsset API will be deprecated and it's replaced by defaultRenderPipeline. We should use GraphicsSettings.defaultRenderPipeline or GraphicsSettings.currentRenderPipeline. Incorrect API was used in some places. It supposed to rely on the current pipeline instead of default as we may not have a default but we could still have RP in the Quality Settings. 1. Scene Render mode window could have incorrect height 2. Avatar previews could be handled incorrectly 3. Light component have an issue in a multiple RP projects 4. ScreenSpaceAmbientOcclusion may not work when URP is deferred in a multiple RP projects 5. Enlighten Manager may not work if you don't set RP asset in the GraphicsSettings https://jira.unity3d.com/browse/UUM-66743
1 parent 990b81f commit e71c6aa

33 files changed

Lines changed: 87 additions & 83 deletions

File tree

Packages/com.unity.render-pipelines.core/Editor/Utilities/SceneRenderPipelineEditor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public override VisualElement CreateInspectorGUI()
1111
{
1212
var root = new VisualElement();
1313
root.Add(new HelpBox("This script is <b>Editor Only</b>.\nIt <b>modifies the project configuration</b> when this scene is opened.\nUse it with caution.", HelpBoxMessageType.Warning));
14-
14+
1515
var rpAssetProperty = serializedObject.FindProperty("renderPipelineAsset");
1616
var rpAssetField = new PropertyField(rpAssetProperty);
17-
rpAssetField.RegisterValueChangeCallback(evt => GraphicsSettings.renderPipelineAsset = rpAssetProperty.objectReferenceValue as RenderPipelineAsset);
17+
rpAssetField.RegisterValueChangeCallback(evt => GraphicsSettings.defaultRenderPipeline = rpAssetProperty.objectReferenceValue as RenderPipelineAsset);
1818
root.Add(rpAssetField);
1919
return root;
2020
}
2121
}
22-
}
22+
}

Packages/com.unity.render-pipelines.core/Runtime/Utilities/SceneRenderPipeline.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ void Awake()
2828
{
2929
if (firstTimeCreated)
3030
{
31-
renderPipelineAsset = GraphicsSettings.renderPipelineAsset;
31+
renderPipelineAsset = GraphicsSettings.defaultRenderPipeline;
3232
firstTimeCreated = false;
3333
}
3434

@@ -38,7 +38,7 @@ void Awake()
3838

3939
void OnEnable()
4040
{
41-
GraphicsSettings.renderPipelineAsset = renderPipelineAsset;
41+
GraphicsSettings.defaultRenderPipeline = renderPipelineAsset;
4242
}
4343

4444

@@ -78,7 +78,7 @@ static public void SendAnalytic(SceneRenderPipeline sender)
7878
Data m_Data;
7979
}
8080

81-
81+
8282
#endif
8383
}
8484
}

Packages/com.unity.render-pipelines.core/Tests/Editor/Volumes/RenderPipelineTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,35 @@ class RenderPipelineTests
1414
[SetUp]
1515
public virtual void Setup()
1616
{
17-
m_PreviousRenderPipelineAssetInGraphicsSettings = GraphicsSettings.renderPipelineAsset;
17+
m_PreviousRenderPipelineAssetInGraphicsSettings = GraphicsSettings.defaultRenderPipeline;
1818
m_PreviousRenderPipelineAssetInQualitySettings = QualitySettings.renderPipeline;
1919
}
2020

2121
[TearDown]
2222
public virtual void TearDown()
2323
{
24-
GraphicsSettings.renderPipelineAsset = m_PreviousRenderPipelineAssetInGraphicsSettings;
24+
GraphicsSettings.defaultRenderPipeline = m_PreviousRenderPipelineAssetInGraphicsSettings;
2525
QualitySettings.renderPipeline = m_PreviousRenderPipelineAssetInQualitySettings;
2626
UnityEngine.Object.DestroyImmediate(m_CreatedRenderPipelineAsset);
2727
}
2828

2929
protected void SetupRenderPipeline<T>() where T : RenderPipelineAsset
3030
{
3131
m_CreatedRenderPipelineAsset = ScriptableObject.CreateInstance<T>();
32-
GraphicsSettings.renderPipelineAsset = m_CreatedRenderPipelineAsset;
32+
GraphicsSettings.defaultRenderPipeline = m_CreatedRenderPipelineAsset;
3333
QualitySettings.renderPipeline = m_CreatedRenderPipelineAsset;
3434
}
3535

3636
protected void SetupRenderPipeline(Type renderPipelineType)
3737
{
3838
m_CreatedRenderPipelineAsset = (RenderPipelineAsset) ScriptableObject.CreateInstance(renderPipelineType);
39-
GraphicsSettings.renderPipelineAsset = m_CreatedRenderPipelineAsset;
39+
GraphicsSettings.defaultRenderPipeline = m_CreatedRenderPipelineAsset;
4040
QualitySettings.renderPipeline = m_CreatedRenderPipelineAsset;
4141
}
4242

4343
protected void RemoveRenderPipeline()
4444
{
45-
GraphicsSettings.renderPipelineAsset = null;
45+
GraphicsSettings.defaultRenderPipeline = null;
4646
QualitySettings.renderPipeline = null;
4747
}
4848

Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Settings/QualitySettingsPanel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,13 @@ void OnHDRPAssetSelected(ReorderableList list)
162162
/// </summary>
163163
static void PopulateHDRPAssetsFromQualitySettings(List<HDRPAssetLocations> target)
164164
{
165-
if (GraphicsSettings.renderPipelineAsset is HDRenderPipelineAsset hdrp)
165+
if (GraphicsSettings.defaultRenderPipeline is HDRenderPipelineAsset hdrp)
166166
target.Add(new HDRPAssetLocations(true, hdrp));
167167

168168
var qualityLevelCount = QualitySettings.names.Length;
169169
for (var i = 0; i < qualityLevelCount; ++i)
170170
{
171-
if (!(QualitySettings.GetRenderPipelineAssetAt(i) is HDRenderPipelineAsset hdrp2))
171+
if (QualitySettings.GetRenderPipelineAssetAt(i) is not HDRenderPipelineAsset hdrp2)
172172
continue;
173173

174174
var index = target.FindIndex(a => a.asset == hdrp2);

Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.Configuration.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ void FixShadowmask(bool fromAsyncUnused)
450450

451451
// To be removed as soon as GraphicsSettings.renderPipelineAsset is removed
452452
bool IsHdrpAssetGraphicsUsedCorrect()
453-
=> GraphicsSettings.renderPipelineAsset is HDRenderPipelineAsset;
453+
=> GraphicsSettings.defaultRenderPipeline is HDRenderPipelineAsset;
454454

455455
void FixHdrpAssetGraphicsUsed(bool fromAsync)
456456
{
@@ -459,7 +459,7 @@ void FixHdrpAssetGraphicsUsed(bool fromAsync)
459459
CreateOrLoad<HDRenderPipelineAsset>(fromAsync
460460
? () => m_Fixer.Stop()
461461
: (Action)null,
462-
asset => GraphicsSettings.renderPipelineAsset = asset);
462+
asset => GraphicsSettings.defaultRenderPipeline = asset);
463463
}
464464

465465
bool IsHdrpAssetQualityUsedCorrect()
@@ -594,15 +594,15 @@ IEnumerable<IMigratableAsset> migratableAssets
594594
if (QualitySettings.GetRenderPipelineAssetAt(i) is HDRenderPipelineAsset qualityAsset)
595595
collection.Add(qualityAsset);
596596
}
597-
if (GraphicsSettings.renderPipelineAsset is HDRenderPipelineAsset graphicsAsset)
597+
if (GraphicsSettings.defaultRenderPipeline is HDRenderPipelineAsset graphicsAsset)
598598
collection.Add(graphicsAsset);
599599

600600
return collection;
601601
}
602602
}
603603

604604
bool IsMigratableAssetsCorrect()
605-
=> !migratableAssets.Any(asset => !asset.IsAtLastVersion());
605+
=> migratableAssets.All(asset => asset.IsAtLastVersion());
606606

607607
void FixMigratableAssets(bool fromAsyncUnused)
608608
{

Packages/com.unity.render-pipelines.high-definition/Editor/Wizard/HDWizard.UIElement.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ void CreateOrLoad<T>(Action onCancel, Action<T> onObjectChanged)
127127
{
128128
title = Style.hdrpAssetDisplayDialogTitle;
129129
content = Style.hdrpAssetDisplayDialogContent;
130-
target = GraphicsSettings.renderPipelineAsset as HDRenderPipelineAsset;
130+
target = GraphicsSettings.defaultRenderPipeline as HDRenderPipelineAsset;
131131
}
132132
else
133133
throw new ArgumentException("Unknown type used");
@@ -144,7 +144,7 @@ void CreateOrLoad<T>(Action onCancel, Action<T> onObjectChanged)
144144
AssetDatabase.Refresh();
145145

146146
if (typeof(T) == typeof(HDRenderPipelineAsset))
147-
GraphicsSettings.renderPipelineAsset = asset as HDRenderPipelineAsset;
147+
GraphicsSettings.defaultRenderPipeline = asset as HDRenderPipelineAsset;
148148
break;
149149
case 1: //cancel
150150
onCancel?.Invoke();

Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/Utility/HDUtils.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -595,14 +595,14 @@ internal static string GetVFXPath()
595595
// It returns the previously set RenderPipelineAsset, assetWasFromQuality is true if the current asset was set through the quality settings
596596
internal static RenderPipelineAsset SwitchToBuiltinRenderPipeline(out bool assetWasFromQuality)
597597
{
598-
var graphicSettingAsset = GraphicsSettings.renderPipelineAsset;
598+
var graphicSettingAsset = GraphicsSettings.defaultRenderPipeline;
599599
assetWasFromQuality = false;
600600
if (graphicSettingAsset != null)
601601
{
602602
// Check if the currently used pipeline is the one from graphics settings
603603
if (GraphicsSettings.currentRenderPipeline == graphicSettingAsset)
604604
{
605-
GraphicsSettings.renderPipelineAsset = null;
605+
GraphicsSettings.defaultRenderPipeline = null;
606606
return graphicSettingAsset;
607607
}
608608
}
@@ -623,7 +623,7 @@ internal static void RestoreRenderPipelineAsset(bool wasUnsetFromQuality, Render
623623
}
624624
else
625625
{
626-
GraphicsSettings.renderPipelineAsset = renderPipelineAsset;
626+
GraphicsSettings.defaultRenderPipeline = renderPipelineAsset;
627627
}
628628
}
629629

Packages/com.unity.render-pipelines.universal/Editor/Lighting/UniversalRenderPipelineLightUI.Drawers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ static void DrawShadowsResolutionGUI(UniversalRenderPipelineSerializedLight seri
474474
}
475475
else
476476
{
477-
if (GraphicsSettings.renderPipelineAsset is UniversalRenderPipelineAsset urpAsset)
477+
if (GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset urpAsset)
478478
EditorGUILayout.LabelField($"{urpAsset.GetAdditionalLightsShadowResolution(shadowResolutionTier)} ({urpAsset.name})", GUILayout.ExpandWidth(false));
479479
}
480480
if (checkScope.changed)

Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/ScreenSpaceAmbientOcclusionEditor.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ public override void OnInspectorGUI()
132132

133133
private bool RendererIsDeferred()
134134
{
135-
ScreenSpaceAmbientOcclusion ssaoFeature = (ScreenSpaceAmbientOcclusion)this.target;
136-
UniversalRenderPipelineAsset pipelineAsset = (UniversalRenderPipelineAsset)GraphicsSettings.renderPipelineAsset;
135+
ScreenSpaceAmbientOcclusion ssaoFeature = (ScreenSpaceAmbientOcclusion) target;
136+
UniversalRenderPipelineAsset pipelineAsset = (UniversalRenderPipelineAsset) GraphicsSettings.currentRenderPipeline;
137137

138138
if (ssaoFeature == null || pipelineAsset == null)
139139
return false;
@@ -142,14 +142,14 @@ private bool RendererIsDeferred()
142142
var rendererDataList = pipelineAsset.m_RendererDataList;
143143
for (int rendererIndex = 0; rendererIndex < rendererDataList.Length; ++rendererIndex)
144144
{
145-
ScriptableRendererData rendererData = (ScriptableRendererData)rendererDataList[rendererIndex];
146-
if (rendererData == null)
145+
var rendererData = rendererDataList[rendererIndex] as UniversalRendererData;
146+
if (rendererData == null || rendererData.renderingMode != RenderingMode.Deferred)
147147
continue;
148148

149149
var rendererFeatures = rendererData.rendererFeatures;
150150
foreach (var feature in rendererFeatures)
151-
if (feature is ScreenSpaceAmbientOcclusion && (ScreenSpaceAmbientOcclusion)feature == ssaoFeature)
152-
return rendererData is UniversalRendererData && ((UniversalRendererData)rendererData).renderingMode == RenderingMode.Deferred;
151+
if (feature is ScreenSpaceAmbientOcclusion occlusion && occlusion == ssaoFeature)
152+
return true;
153153
}
154154

155155
return false;

Packages/com.unity.render-pipelines.universal/Samples~/URPPackageSamples/SharedAssets/Scripts/CheckAssignedRenderPipelineAsset.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class CheckAssignedRenderPipelineAsset : MonoBehaviour
1212
private bool m_LastCorrectPipelineResults = false;
1313

1414
private bool isCorrectAssetAssigned => QualitySettings.renderPipeline == m_PipelineAsset
15-
|| QualitySettings.renderPipeline == null && GraphicsSettings.renderPipelineAsset == m_PipelineAsset;
15+
|| QualitySettings.renderPipeline == null && GraphicsSettings.defaultRenderPipeline == m_PipelineAsset;
1616

1717
private void Awake()
1818
{

0 commit comments

Comments
 (0)