From 464ce1c3cd68a3a11bcacf6acff1c76b7a0a3675 Mon Sep 17 00:00:00 2001 From: lightningterror <18107717+lightningterror@users.noreply.github.com> Date: Sun, 5 Dec 2021 05:55:57 +0100 Subject: [PATCH] GS-d3d11: Sample depth on green channel. --- pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp | 2 +- pcsx2/GS/res/tfx.fx | 23 ++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp b/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp index a845021ffc..537c70291c 100644 --- a/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp +++ b/pcsx2/GS/Renderers/DX11/GSRendererDX11.cpp @@ -375,7 +375,7 @@ void GSRendererDX11::EmulateChannelShuffle(GSTexture** rt, const GSTextureCache: case 0xE0: blue_shift = 5; break; case 0xC0: blue_shift = 6; break; case 0x80: blue_shift = 7; break; - default: ASSERT(0); break; + default: break; } const int green_shift = 8 - blue_shift; diff --git a/pcsx2/GS/res/tfx.fx b/pcsx2/GS/res/tfx.fx index 8c22dcccca..dc77091a08 100644 --- a/pcsx2/GS/res/tfx.fx +++ b/pcsx2/GS/res/tfx.fx @@ -410,6 +410,23 @@ float4 fetch_red(int2 xy) return sample_p(rt.r) * 255.0f; } +float4 fetch_green(int2 xy) +{ + float4 rt; + + if ((PS_DEPTH_FMT == 1) || (PS_DEPTH_FMT == 2)) + { + int depth = (fetch_raw_depth(xy) >> 8) & 0xFF; + rt = (float4)(depth) / 255.0f; + } + else + { + rt = fetch_raw_color(xy); + } + + return sample_p(rt.g) * 255.0f; +} + float4 fetch_blue(int2 xy) { float4 rt; @@ -427,12 +444,6 @@ float4 fetch_blue(int2 xy) return sample_p(rt.b) * 255.0f; } -float4 fetch_green(int2 xy) -{ - float4 rt = fetch_raw_color(xy); - return sample_p(rt.g) * 255.0f; -} - float4 fetch_alpha(int2 xy) { float4 rt = fetch_raw_color(xy);