From 359fb51d640d4c93b4c64c764b462892f78350b2 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Tue, 11 Feb 2025 18:51:16 +0000 Subject: [PATCH] PixelShaderGen: use unswapped texture samples for depth --- Source/Core/VideoCommon/PixelShaderGen.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index 0b027b2496..200e58062b 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -1104,8 +1104,8 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos out.Write("\tint4 c0 = " I_COLORS "[1], c1 = " I_COLORS "[2], c2 = " I_COLORS "[3], prev = " I_COLORS "[0];\n" - "\tint4 rastemp = int4(0, 0, 0, 0), textemp = int4(0, 0, 0, 0), konsttemp = int4(0, 0, " - "0, 0);\n" + "\tint4 rastemp = int4(0, 0, 0, 0), rawtextemp = int4(0, 0, 0, 0), " + "textemp = int4(0, 0, 0, 0), konsttemp = int4(0, 0, 0, 0);\n" "\tint3 comp16 = int3(1, 256, 0), comp24 = int3(1, 256, 256*256);\n" "\tint alphabump=0;\n" "\tint3 tevcoord=int3(0, 0, 0);\n" @@ -1291,7 +1291,7 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos // use the texture input of the last texture stage (textemp), hopefully this has been read and // is in correct format... out.SetConstantsUsed(C_ZBIAS, C_ZBIAS + 1); - out.Write("\tzCoord = idot(" I_ZBIAS "[0].xyzw, textemp.xyzw) + " I_ZBIAS "[1].w {};\n", + out.Write("\tzCoord = idot(" I_ZBIAS "[0].xyzw, rawtextemp.xyzw) + " I_ZBIAS "[1].w {};\n", (uid_data->ztex_op == ZTexOp::Add) ? "+ zCoord" : ""); out.Write("\tzCoord = zCoord & 0xFFFFFF;\n"); } @@ -1614,8 +1614,9 @@ static void WriteStage(ShaderCode& out, const pixel_shader_uid_data* uid_data, i if (stage.tevorders_enable && uid_data->genMode_numtexgens > 0) { // Generate swizzle string to represent the texture color channel swapping - out.Write("\ttextemp = sampleTextureWrapper({}u, tevcoord.xy, layer).{}{}{}{};\n", - stage.tevorders_texmap, rgba_swizzle[stage.tex_swap_r], + out.Write("\trawtextemp = sampleTextureWrapper({}u, tevcoord.xy, layer);\n", + stage.tevorders_texmap); + out.Write("\ttextemp = rawtextemp.{}{}{}{};\n", rgba_swizzle[stage.tex_swap_r], rgba_swizzle[stage.tex_swap_g], rgba_swizzle[stage.tex_swap_b], rgba_swizzle[stage.tex_swap_a]); }