From d354d07d818cfa5da319365b31d401444a167d97 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Sun, 22 Dec 2024 13:24:02 +0100 Subject: [PATCH] Added scaleRatio to unify the cbuffer definition for all shaders, including the fragment shader variant. --- .../Runtime/Effects/Upscaling/SGSR2/SGSR2.cs | 3 ++- .../Shaders/2_pass_cs/sgsr2_upscale.compute | 2 +- .../Upscaling/SGSR2/Shaders/sgsr2_common.hlsl | 27 ++++++++++--------- .../Effects/Upscaling/SGSR2Upscaler.cs | 3 ++- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/SGSR2.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/SGSR2.cs index 763e1cd..8100bac 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/SGSR2.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/SGSR2.cs @@ -23,7 +23,8 @@ public static class SGSR2 public float cameraFovAngleHor; public float cameraNear; public float minLerpContribution; - + + public Vector2 scaleRatio; public uint bSameCamera; public uint reset; } diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/2_pass_cs/sgsr2_upscale.compute b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/2_pass_cs/sgsr2_upscale.compute index a73bdf1..11d11c2 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/2_pass_cs/sgsr2_upscale.compute +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/2_pass_cs/sgsr2_upscale.compute @@ -263,7 +263,7 @@ void CS(uint3 gl_GlobalInvocationID : SV_DispatchThreadID) rectboxmin = max(rectboxmin, boxmin); float3 clampedcolor = clamp(HistoryColor, rectboxmin, rectboxmax); - float startLerpValue = MinLerpContribution; //MinLerpContribution; //MinLerpContribution; + float startLerpValue = minLerpContribution; //MinLerpContribution; //MinLerpContribution; if ((abs(mda.x) + abs(mda.y)) > 0.000001) startLerpValue = 0.0; float lerpcontribution = (any(rectboxmin > HistoryColor) || any(HistoryColor > rectboxmax)) ? startLerpValue : 1.0f; diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/sgsr2_common.hlsl b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/sgsr2_common.hlsl index 1a8902e..befb867 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/sgsr2_common.hlsl +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2/Shaders/sgsr2_common.hlsl @@ -14,19 +14,20 @@ cbuffer Params : register(b0) { - uint2 renderSize; - uint2 displaySize; - float2 renderSizeRcp; - float2 displaySizeRcp; - float2 jitterOffset; - float2 padding1; - float4 clipToPrevClip[4]; - float preExposure; - float cameraFovAngleHor; - float cameraNear; - float MinLerpContribution; - uint bSameCamera; - uint reset; + uint2 renderSize; + uint2 displaySize; + float2 renderSizeRcp; + float2 displaySizeRcp; + float2 jitterOffset; + float2 padding1; + float4 clipToPrevClip[4]; + float preExposure; + float cameraFovAngleHor; + float cameraNear; + float minLerpContribution; + float2 scaleRatio; + uint bSameCamera; + uint reset; }; float FastLanczos(float base) diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2Upscaler.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2Upscaler.cs index b8dad18..c386d59 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2Upscaler.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/SGSR2Upscaler.cs @@ -67,9 +67,10 @@ namespace UnityEngine.Rendering.PostProcessing parms.jitterOffset = config.JitterOffset; parms.clipToPrevClip = clipToPrevClip; parms.preExposure = config.preExposure; - parms.cameraFovAngleHor = Mathf.Tan(context.camera.fieldOfView * Mathf.Deg2Rad * 0.5f) * (float)parms.renderSize.x / parms.renderSize.y; + parms.cameraFovAngleHor = Mathf.Tan(context.camera.fieldOfView * Mathf.Deg2Rad * 0.5f) * parms.renderSize.x * parms.renderSizeRcp.y; parms.cameraNear = context.camera.nearClipPlane; parms.minLerpContribution = 0f; + parms.scaleRatio = new Vector2(parms.renderSize.x * parms.displaySizeRcp.x, parms.renderSize.y * parms.displaySizeRcp.y); parms.bSameCamera = isCameraStill ? 1u : 0u; parms.reset = config.Reset ? 1u : 0u; _paramsBuffer.UpdateBufferData(cmd);