From 8d6d2153884e7fcb2440192ad7722e65ebc7d87c Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Tue, 4 Jun 2024 17:03:50 +0200 Subject: [PATCH] Fixed a few small issues and allow selection of higher FSR2 quality modes in UI --- .../Camera/HDCameraUI.Rendering.Drawers.cs | 2 +- .../Editor/RenderPipeline/HDRenderPipelineUI.cs | 2 +- .../RenderPass/Upscalers/FSR2WrapperUpscaler.cs | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Camera/HDCameraUI.Rendering.Drawers.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Camera/HDCameraUI.Rendering.Drawers.cs index 0e5f483a..527b35ec 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Camera/HDCameraUI.Rendering.Drawers.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/Camera/HDCameraUI.Rendering.Drawers.cs @@ -203,7 +203,7 @@ namespace UnityEditor.Rendering.HighDefinition { var v = EditorGUILayout.EnumPopup( HDRenderPipelineUI.Styles.FSR2QualitySettingContent, - (UnityEngine.AMD.FSR2Quality)p.fidelityFX2SuperResolutionQuality.intValue); + (UnityEngine.Rendering.HighDefinition.AMD.FSR2Quality)p.fidelityFX2SuperResolutionQuality.intValue); p.fidelityFX2SuperResolutionQuality.intValue = (int)(object)v; } EditorGUI.indentLevel--; diff --git a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs index 0af15bbe..29ec7516 100644 --- a/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs +++ b/com.unity.render-pipelines.high-definition/Editor/RenderPipeline/HDRenderPipelineUI.cs @@ -734,7 +734,7 @@ namespace UnityEditor.Rendering.HighDefinition { var v = EditorGUILayout.EnumPopup( Styles.FSR2QualitySettingContent, - (UnityEngine.AMD.FSR2Quality) + (UnityEngine.Rendering.HighDefinition.AMD.FSR2Quality) serialized.renderPipelineSettings.dynamicResolutionSettings.FSR2QualitySetting.intValue); serialized.renderPipelineSettings.dynamicResolutionSettings.FSR2QualitySetting.intValue = (int)(object)v; } diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/Upscalers/FSR2WrapperUpscaler.cs b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/Upscalers/FSR2WrapperUpscaler.cs index 8f5f7dc3..aec822fa 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/Upscalers/FSR2WrapperUpscaler.cs +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/Upscalers/FSR2WrapperUpscaler.cs @@ -1,4 +1,6 @@ -namespace UnityEngine.Rendering.HighDefinition.AMD +using System; + +namespace UnityEngine.Rendering.HighDefinition.AMD { public class FSR2WrapperUpscaler: UpscalerPlugin { @@ -25,7 +27,7 @@ public override FSR2Context CreateFeature(CommandBuffer cmd, in FSR2CommandInitializationData initSettings) { var wrappedInitSettings = initSettings.ToWrapped(); - return new FSR2WrappedContext(_wrappedDevice.CreateFeature(cmd, in wrappedInitSettings)); + return new FSR2WrappedContext(_wrappedDevice.CreateFeature(cmd, in wrappedInitSettings), in initSettings); } public override void DestroyFeature(CommandBuffer cmd, FSR2Context fsrContext) @@ -42,12 +44,14 @@ public override bool GetRenderResolutionFromQualityMode(FSR2Quality qualityMode, uint displayWidth, uint displayHeight, out uint renderWidth, out uint renderHeight) { - return _wrappedDevice.GetRenderResolutionFromQualityMode((UnityEngine.AMD.FSR2Quality)(qualityMode - 2), displayWidth, displayHeight, out renderWidth, out renderHeight); + var quality = (UnityEngine.AMD.FSR2Quality)Math.Max(0, (int)qualityMode - 2); + return _wrappedDevice.GetRenderResolutionFromQualityMode(quality, displayWidth, displayHeight, out renderWidth, out renderHeight); } public override float GetUpscaleRatioFromQualityMode(FSR2Quality qualityMode) { - return _wrappedDevice.GetUpscaleRatioFromQualityMode((UnityEngine.AMD.FSR2Quality)(qualityMode - 2)); + var quality = (UnityEngine.AMD.FSR2Quality)Math.Max(0, (int)qualityMode - 2); + return _wrappedDevice.GetUpscaleRatioFromQualityMode(quality); } } @@ -61,9 +65,10 @@ private FSR2CommandExecutionData _executeData; public override ref FSR2CommandExecutionData executeData => ref _executeData; - internal FSR2WrappedContext(UnityEngine.AMD.FSR2Context wrappedContext) + internal FSR2WrappedContext(UnityEngine.AMD.FSR2Context wrappedContext, in FSR2CommandInitializationData initData) { WrappedContext = wrappedContext; + _initData = initData; } internal void SyncExecuteData()