From b2847d2f9952350def9f47b7c78f20c6924aeeac Mon Sep 17 00:00:00 2001 From: Lukas Chodosevicius Date: Wed, 6 May 2020 13:20:01 +0300 Subject: [PATCH 1/8] Adding adaptive performance as optional dependency --- ...y.RenderPipelines.Universal.Runtime.asmdef | 8 +- .../Runtime/UniversalRenderPipeline.cs | 76 +++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef index 7cb5802784f..d77138e708b 100644 --- a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef +++ b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef @@ -3,7 +3,8 @@ "references": [ "GUID:d60799ab2a985554ea1a39cd38695018", "GUID:df380645f10b7bc4b97d4f5eb6303d95", - "GUID:ab67fb10353d84448ac887a7367cbda8" + "GUID:ab67fb10353d84448ac887a7367cbda8", + "GUID:7dbf32976982c98448af054f2512cb79" ], "includePlatforms": [], "excludePlatforms": [], @@ -18,6 +19,11 @@ "expression": "0.0.1", "define": "VISUAL_EFFECT_GRAPH_0_0_1_OR_NEWER" }, + { + "name": "com.unity.adaptiveperformance", + "expression": "2.1.0-preview.1", + "define": "ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER" + }, { "name": "com.unity.modules.vr", "expression": "1.0.0", diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index e394ac8c7e2..d4d19b4b220 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -184,6 +184,9 @@ public static void RenderSingleCamera(ScriptableRenderContext context, Camera ca } InitializeCameraData(camera, additionalCameraData, true, out var cameraData); +#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER + ApplyAdaptivePerformance(ref cameraData); +#endif RenderSingleCamera(context, cameraData, cameraData.postProcessEnabled); } @@ -230,6 +233,10 @@ static void RenderSingleCamera(ScriptableRenderContext context, CameraData camer var cullResults = context.Cull(ref cullingParameters); InitializeRenderingData(asset, ref cameraData, ref cullResults, anyPostProcessingEnabled, out var renderingData); +#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER + ApplyAdaptivePerformance(ref renderingData); +#endif + renderer.Setup(context, ref renderingData); renderer.Execute(context, ref renderingData); } @@ -320,6 +327,9 @@ static void RenderCameraStack(ScriptableRenderContext context, Camera baseCamera #endif UpdateVolumeFramework(baseCamera, baseCameraAdditionalData); InitializeCameraData(baseCamera, baseCameraAdditionalData, !isStackedRendering, out var baseCameraData); +#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER + ApplyAdaptivePerformance(ref baseCameraData); +#endif RenderSingleCamera(context, baseCameraData, anyPostProcessingEnabled); EndCameraRendering(context, baseCamera); @@ -807,5 +817,71 @@ static void SetupPerFrameShaderConstants() // Used when subtractive mode is selected Shader.SetGlobalVector(PerFrameBuffer._SubtractiveShadowColor, CoreUtils.ConvertSRGBToActiveColorSpace(RenderSettings.subtractiveShadowColor)); } + +#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER + static void ApplyAdaptivePerformance(ref CameraData cameraData) + { + var noFrontToBackOpaqueFlags = SortingCriteria.SortingLayer | SortingCriteria.RenderQueue | SortingCriteria.OptimizeStateChanges | SortingCriteria.CanvasOrder; + if (AdaptivePerformance.AdaptivePerformanceRenderSettings.SkipFrontToBackSorting) + cameraData.defaultOpaqueSortFlags = noFrontToBackOpaqueFlags; + + var MaxShadowDistanceMultiplier = AdaptivePerformance.AdaptivePerformanceRenderSettings.MaxShadowDistanceMultiplier; + cameraData.maxShadowDistance *= MaxShadowDistanceMultiplier; + + var RenderScaleMultiplier = AdaptivePerformance.AdaptivePerformanceRenderSettings.RenderScaleMultiplier; + cameraData.renderScale *= RenderScaleMultiplier; + + // TODO + if (!cameraData.isStereoEnabled) + { + cameraData.cameraTargetDescriptor.width = (int)(cameraData.camera.pixelWidth * cameraData.renderScale); + cameraData.cameraTargetDescriptor.height = (int)(cameraData.camera.pixelHeight * cameraData.renderScale); + } + + var antialiasingQualityIndex = (int)cameraData.antialiasingQuality - AdaptivePerformance.AdaptivePerformanceRenderSettings.AntiAliasingQualityBias; + if (antialiasingQualityIndex < 0) + cameraData.antialiasing = AntialiasingMode.None; + cameraData.antialiasingQuality = (AntialiasingQuality)Mathf.Clamp(antialiasingQualityIndex, (int)AntialiasingQuality.Low, (int)AntialiasingQuality.High); + } + static void ApplyAdaptivePerformance(ref RenderingData renderingData) + { + if (AdaptivePerformance.AdaptivePerformanceRenderSettings.SkipDynamicBatching) + renderingData.supportsDynamicBatching = false; + + var MainLightShadowmapResultionMultiplier = AdaptivePerformance.AdaptivePerformanceRenderSettings.MainLightShadowmapResultionMultiplier; + renderingData.shadowData.mainLightShadowmapWidth = (int)(renderingData.shadowData.mainLightShadowmapWidth * MainLightShadowmapResultionMultiplier); + renderingData.shadowData.mainLightShadowmapHeight = (int)(renderingData.shadowData.mainLightShadowmapHeight * MainLightShadowmapResultionMultiplier); + + var MainLightShadowCascadesCountBias = AdaptivePerformance.AdaptivePerformanceRenderSettings.MainLightShadowCascadesCountBias; + renderingData.shadowData.mainLightShadowCascadesCount = Mathf.Clamp(renderingData.shadowData.mainLightShadowCascadesCount - MainLightShadowCascadesCountBias, 0, 4); + + var shadowQualityIndex = AdaptivePerformance.AdaptivePerformanceRenderSettings.ShadowQualityBias; + for (int i = 0; i < shadowQualityIndex; i++) + { + if (renderingData.shadowData.supportsSoftShadows) + { + renderingData.shadowData.supportsSoftShadows = false; + continue; + } + + if (renderingData.shadowData.supportsAdditionalLightShadows) + { + renderingData.shadowData.supportsAdditionalLightShadows = false; + continue; + } + + if (renderingData.shadowData.supportsMainLightShadows) + { + renderingData.shadowData.supportsMainLightShadows = false; + continue; + } + + break; + } + + if (AdaptivePerformance.AdaptivePerformanceRenderSettings.LutBias >= 1 && renderingData.postProcessingData.lutSize == 32) + renderingData.postProcessingData.lutSize = 16; + } +#endif } } From 622b6b67daea645eed8187c2f7dfe7a6f2653513 Mon Sep 17 00:00:00 2001 From: Lukas Chodosevicius Date: Fri, 8 May 2020 12:41:01 +0300 Subject: [PATCH 2/8] Updating to David suggestion version --- .../Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef index d77138e708b..41a8eaddee0 100644 --- a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef +++ b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef @@ -21,7 +21,7 @@ }, { "name": "com.unity.adaptiveperformance", - "expression": "2.1.0-preview.1", + "expression": "2.0.0-preview.5", "define": "ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER" }, { From 37aac27d25133693105ec955657116e33a8e6eea Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Fri, 15 May 2020 14:20:20 +0300 Subject: [PATCH 3/8] Update adaptive performance package version and defines --- .../Unity.RenderPipelines.Universal.Runtime.asmdef | 4 ++-- .../Runtime/UniversalRenderPipeline.cs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef index 9e99e52fd54..de9342a90fa 100644 --- a/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef +++ b/com.unity.render-pipelines.universal/Runtime/Unity.RenderPipelines.Universal.Runtime.asmdef @@ -22,8 +22,8 @@ }, { "name": "com.unity.adaptiveperformance", - "expression": "2.0.0-preview.5", - "define": "ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER" + "expression": "2.0.0-preview.7", + "define": "ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER" }, { "name": "com.unity.modules.vr", diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index ee72d4b856d..500c8d40c2f 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -165,7 +165,7 @@ public static void RenderSingleCamera(ScriptableRenderContext context, Camera ca } InitializeCameraData(camera, additionalCameraData, true, out var cameraData); -#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER +#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER ApplyAdaptivePerformance(ref cameraData); #endif RenderSingleCamera(context, cameraData, cameraData.postProcessEnabled); @@ -214,7 +214,7 @@ static void RenderSingleCamera(ScriptableRenderContext context, CameraData camer var cullResults = context.Cull(ref cullingParameters); InitializeRenderingData(asset, ref cameraData, ref cullResults, anyPostProcessingEnabled, out var renderingData); -#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER +#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER ApplyAdaptivePerformance(ref renderingData); #endif @@ -308,7 +308,7 @@ static void RenderCameraStack(ScriptableRenderContext context, Camera baseCamera #endif UpdateVolumeFramework(baseCamera, baseCameraAdditionalData); InitializeCameraData(baseCamera, baseCameraAdditionalData, !isStackedRendering, out var baseCameraData); -#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER +#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER ApplyAdaptivePerformance(ref baseCameraData); #endif RenderSingleCamera(context, baseCameraData, anyPostProcessingEnabled); @@ -809,7 +809,7 @@ static void SetupPerFrameShaderConstants() Shader.SetGlobalVector(ShaderPropertyId.subtractiveShadowColor, CoreUtils.ConvertSRGBToActiveColorSpace(RenderSettings.subtractiveShadowColor)); } -#if ADAPTIVE_PERFORMANCE_2_1_0_OR_NEWER +#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER static void ApplyAdaptivePerformance(ref CameraData cameraData) { var noFrontToBackOpaqueFlags = SortingCriteria.SortingLayer | SortingCriteria.RenderQueue | SortingCriteria.OptimizeStateChanges | SortingCriteria.CanvasOrder; From 44bc34cf725a42e8d994437b77ba7f4250ce6751 Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Fri, 15 May 2020 15:24:16 +0300 Subject: [PATCH 4/8] Add enable flag for adaptive performance in URP asset --- ...ty.RenderPipelines.Universal.Editor.asmdef | 11 ++++++-- .../UniversalRenderPipelineAssetEditor.cs | 27 +++++++++++++++++++ .../Data/UniversalRenderPipelineAsset.cs | 9 +++++++ .../Runtime/UniversalRenderPipeline.cs | 9 ++++--- 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/com.unity.render-pipelines.universal/Editor/Unity.RenderPipelines.Universal.Editor.asmdef b/com.unity.render-pipelines.universal/Editor/Unity.RenderPipelines.Universal.Editor.asmdef index e2d1de76ce1..e7805d69672 100644 --- a/com.unity.render-pipelines.universal/Editor/Unity.RenderPipelines.Universal.Editor.asmdef +++ b/com.unity.render-pipelines.universal/Editor/Unity.RenderPipelines.Universal.Editor.asmdef @@ -8,7 +8,8 @@ "GUID:3eae0364be2026648bf74846acb8a731", "GUID:be0903cd8e1546f498710afdc59db5eb", "GUID:b75d3cd3037d383a8d1e2f9a26d73d8a", - "GUID:329b4ccd385744985bf3f83cfd77dfe7" + "GUID:329b4ccd385744985bf3f83cfd77dfe7", + "GUID:9604b18aafdbc9346bceb5e19ac9c746" ], "includePlatforms": [ "Editor" @@ -19,6 +20,12 @@ "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], - "versionDefines": [], + "versionDefines": [ + { + "name": "com.unity.adaptiveperformance", + "expression": "2.0.0-preview.7", + "define": "ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER" + } + ], "noEngineReferences": false } \ No newline at end of file diff --git a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAssetEditor.cs b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAssetEditor.cs index 4455a549d0a..0732bbe932f 100644 --- a/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAssetEditor.cs +++ b/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAssetEditor.cs @@ -18,6 +18,7 @@ internal class Styles public static GUIContent shadowSettingsText = EditorGUIUtility.TrTextContent("Shadows"); public static GUIContent postProcessingSettingsText = EditorGUIUtility.TrTextContent("Post-processing"); public static GUIContent advancedSettingsText = EditorGUIUtility.TrTextContent("Advanced"); + public static GUIContent adaptivePerformanceText = EditorGUIUtility.TrTextContent("Adaptive Performance"); // General public static GUIContent rendererHeaderText = EditorGUIUtility.TrTextContent("Renderer List", "Lists all the renderers available to this Render Pipeline Asset."); @@ -68,6 +69,9 @@ internal class Styles public static GUIContent debugLevel = EditorGUIUtility.TrTextContent("Debug Level", "Controls the level of debug information generated by the render pipeline. When Profiling is selected, the pipeline provides detailed profiling tags."); public static GUIContent shaderVariantLogLevel = EditorGUIUtility.TrTextContent("Shader Variant Log Level", "Controls the level logging in of shader variants information is outputted when a build is performed. Information will appear in the Unity console when the build finishes."); + // Adaptive performance settings + public static GUIContent useAdaptivePerformance = EditorGUIUtility.TrTextContent("Use adaptive performance", "Allows Adaptive Performance to adjust rendering quality during runtime"); + // Renderer List Messages public static GUIContent rendererListDefaultMessage = EditorGUIUtility.TrTextContent("Cannot remove Default Renderer", @@ -90,6 +94,7 @@ internal class Styles SavedBool m_ShadowSettingsFoldout; SavedBool m_PostProcessingSettingsFoldout; SavedBool m_AdvancedSettingsFoldout; + SavedBool m_AdaptivePerformanceFoldout; SerializedProperty m_RendererDataProp; SerializedProperty m_DefaultRendererProp; @@ -133,6 +138,8 @@ internal class Styles SerializedProperty m_ColorGradingMode; SerializedProperty m_ColorGradingLutSize; + SerializedProperty m_UseAdaptivePerformance; + public override void OnInspectorGUI() { serializedObject.Update(); @@ -143,6 +150,9 @@ public override void OnInspectorGUI() DrawShadowSettings(); DrawPostProcessingSettings(); DrawAdvancedSettings(); +#if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER + DrawAdaptivePerformance(); +#endif serializedObject.ApplyModifiedProperties(); } @@ -155,6 +165,7 @@ void OnEnable() m_ShadowSettingsFoldout = new SavedBool($"{target.GetType()}.ShadowSettingsFoldout", false); m_PostProcessingSettingsFoldout = new SavedBool($"{target.GetType()}.PostProcessingSettingsFoldout", false); m_AdvancedSettingsFoldout = new SavedBool($"{target.GetType()}.AdvancedSettingsFoldout", false); + m_AdaptivePerformanceFoldout = new SavedBool($"{target.GetType()}.AdaptivePerformanceFoldout", false); m_RendererDataProp = serializedObject.FindProperty("m_RendererDataList"); m_DefaultRendererProp = serializedObject.FindProperty("m_DefaultRendererIndex"); @@ -198,6 +209,8 @@ void OnEnable() m_ColorGradingMode = serializedObject.FindProperty("m_ColorGradingMode"); m_ColorGradingLutSize = serializedObject.FindProperty("m_ColorGradingLutSize"); + m_UseAdaptivePerformance = serializedObject.FindProperty("m_UseAdaptivePerformance"); + selectedLightRenderingMode = (LightRenderingMode)m_AdditionalLightsRenderingModeProp.intValue; } @@ -381,6 +394,20 @@ void DrawAdvancedSettings() EditorGUILayout.EndFoldoutHeaderGroup(); } + void DrawAdaptivePerformance() + { + m_AdaptivePerformanceFoldout.value = EditorGUILayout.BeginFoldoutHeaderGroup(m_AdaptivePerformanceFoldout.value, Styles.adaptivePerformanceText); + if (m_AdaptivePerformanceFoldout.value) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(m_UseAdaptivePerformance, Styles.useAdaptivePerformance); + EditorGUI.indentLevel--; + EditorGUILayout.Space(); + EditorGUILayout.Space(); + } + EditorGUILayout.EndFoldoutHeaderGroup(); + } + void DrawRendererListLayout(ReorderableList list, SerializedProperty prop) { list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 905b040e548..b5e06764bc0 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -158,6 +158,9 @@ public class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerializationC [SerializeField] bool m_MixedLightingSupported = true; [SerializeField] PipelineDebugLevel m_DebugLevel = PipelineDebugLevel.Disabled; + // Adaptive performance settings + [SerializeField] bool m_UseAdaptivePerformance = false; + // Post-processing settings [SerializeField] ColorGradingMode m_ColorGradingMode = ColorGradingMode.LowDynamicRange; [SerializeField] int m_ColorGradingLutSize = 32; @@ -622,6 +625,12 @@ public int colorGradingLutSize set { m_ColorGradingLutSize = Mathf.Clamp(value, k_MinLutSize, k_MaxLutSize); } } + public bool useAdaptivePerformance + { + get { return m_UseAdaptivePerformance; } + set { m_UseAdaptivePerformance = value; } + } + public override Material defaultMaterial { get { return GetMaterial(DefaultMaterialType.Standard); } diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 500c8d40c2f..75bce5520dc 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -166,7 +166,8 @@ public static void RenderSingleCamera(ScriptableRenderContext context, Camera ca InitializeCameraData(camera, additionalCameraData, true, out var cameraData); #if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER - ApplyAdaptivePerformance(ref cameraData); + if (asset.useAdaptivePerformance) + ApplyAdaptivePerformance(ref cameraData); #endif RenderSingleCamera(context, cameraData, cameraData.postProcessEnabled); } @@ -215,7 +216,8 @@ static void RenderSingleCamera(ScriptableRenderContext context, CameraData camer InitializeRenderingData(asset, ref cameraData, ref cullResults, anyPostProcessingEnabled, out var renderingData); #if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER - ApplyAdaptivePerformance(ref renderingData); + if (asset.useAdaptivePerformance) + ApplyAdaptivePerformance(ref renderingData); #endif renderer.Setup(context, ref renderingData); @@ -309,7 +311,8 @@ static void RenderCameraStack(ScriptableRenderContext context, Camera baseCamera UpdateVolumeFramework(baseCamera, baseCameraAdditionalData); InitializeCameraData(baseCamera, baseCameraAdditionalData, !isStackedRendering, out var baseCameraData); #if ADAPTIVE_PERFORMANCE_2_0_0_OR_NEWER - ApplyAdaptivePerformance(ref baseCameraData); + if (asset.useAdaptivePerformance) + ApplyAdaptivePerformance(ref baseCameraData); #endif RenderSingleCamera(context, baseCameraData, anyPostProcessingEnabled); EndCameraRendering(context, baseCamera); From 0675734881b4a62ca697963d379fb0c9a2bd6b59 Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Tue, 19 May 2020 19:48:48 +0300 Subject: [PATCH 5/8] Enable adaptive performance by default if available --- .../Runtime/Data/UniversalRenderPipelineAsset.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index b5e06764bc0..a68cec592a4 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -159,7 +159,7 @@ public class UniversalRenderPipelineAsset : RenderPipelineAsset, ISerializationC [SerializeField] PipelineDebugLevel m_DebugLevel = PipelineDebugLevel.Disabled; // Adaptive performance settings - [SerializeField] bool m_UseAdaptivePerformance = false; + [SerializeField] bool m_UseAdaptivePerformance = true; // Post-processing settings [SerializeField] ColorGradingMode m_ColorGradingMode = ColorGradingMode.LowDynamicRange; From daec92cbb1bd3c40f9c24dba0fbb9fa4ad4ad739 Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Wed, 27 May 2020 18:47:58 +0300 Subject: [PATCH 6/8] Update changelog.md --- com.unity.render-pipelines.universal/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/com.unity.render-pipelines.universal/CHANGELOG.md b/com.unity.render-pipelines.universal/CHANGELOG.md index b1e9172ba5e..2002e6a26d0 100644 --- a/com.unity.render-pipelines.universal/CHANGELOG.md +++ b/com.unity.render-pipelines.universal/CHANGELOG.md @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added additional steps to the 2D Renderer setup page for quality and platform settings. - Added support for clear coat material feature in the Lit shader. - Added option to disable XR autotests on test settings. +- Added option to enable/disable Adaptive Performance when it's package is available. ### Changed From bf99d9c012db520426226b814be917cce291c3bf Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Wed, 27 May 2020 19:12:14 +0300 Subject: [PATCH 7/8] Add adaptive performance documentation --- .../Documentation~/universalrp-asset.md | 11 +++++++++++ .../Runtime/Data/UniversalRenderPipelineAsset.cs | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md index 1b704512706..17c386a4755 100644 --- a/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md +++ b/com.unity.render-pipelines.universal/Documentation~/universalrp-asset.md @@ -16,6 +16,7 @@ In the URP, you can configure settings for: - [__Shadows__](#shadows) - [__Post-processing__](#post-processing) - [__Advanced__](#advanced) +- [__Adaptive Performance__](#adaptive-performance) @@ -100,3 +101,13 @@ This section allows you to fine-tune less commonly changed settings, which impac | __Mixed Lighting__ | Enable [Mixed Lighting](https://docs.unity3d.com/Manual/LightMode-Mixed.html), to tell the pipeline to include mixed lighting shader variants in the build. | | __Debug Level__ | Set the level of debug information that the render pipeline generates. The values are:
**Disabled**: Debugging is disabled. This is the default.
**Profiling**: Makes the render pipeline provide detailed information tags, which you can see in the FrameDebugger. | | __Shader Variant Log Level__ | Set the level of information about Shader Stripping and Shader Variants you want to display when Unity finishes a build. Values are:
**Disabled**: Unity doesn’t log anything.
**Only Universal**: Unity logs information for all of the [URP Shaders](shaders-in-universalrp.md).
**All**: Unity logs information for all Shaders in your build.
You can see the information in Console panel when your build has finished. | + + + +### Adaptive Performance + +This section appears if Adaptive Performance package is installed. It allows to change settings how Adaptive performance and render pipeline interact. + +| __Property__ | __Description__ | +| ----------------------- | ------------------------------------------------------------ | +| __Use adaptive performance__ | Allows Adaptive Performance to adjust rendering quality during runtime. | \ No newline at end of file diff --git a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index a68cec592a4..e2c666b8ee7 100644 --- a/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -625,6 +625,10 @@ public int colorGradingLutSize set { m_ColorGradingLutSize = Mathf.Clamp(value, k_MinLutSize, k_MaxLutSize); } } + /// + /// Set to true to allow Adaptive performance to modify graphics quality settings during runtime. + /// Only applicable when Adaptive performance package is available. + /// public bool useAdaptivePerformance { get { return m_UseAdaptivePerformance; } From b812bf68ae3afeb9772115fb548a36289f63cc4b Mon Sep 17 00:00:00 2001 From: Ricardas Jonaitis Date: Wed, 27 May 2020 19:16:17 +0300 Subject: [PATCH 8/8] Change obsolete field usage --- .../Runtime/UniversalRenderPipeline.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 02d4334c6f0..7e60e4ccdd2 100644 --- a/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -876,7 +876,7 @@ static void ApplyAdaptivePerformance(ref CameraData cameraData) cameraData.renderScale *= RenderScaleMultiplier; // TODO - if (!cameraData.isStereoEnabled) + if (!cameraData.xr.enabled) { cameraData.cameraTargetDescriptor.width = (int)(cameraData.camera.pixelWidth * cameraData.renderScale); cameraData.cameraTargetDescriptor.height = (int)(cameraData.camera.pixelHeight * cameraData.renderScale);