diff --git a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp index 4701d5dcec..2072fda2bf 100644 --- a/rpcs3/Emu/RSX/Program/GLSLCommon.cpp +++ b/rpcs3/Emu/RSX/Program/GLSLCommon.cpp @@ -946,10 +946,14 @@ namespace glsl "\n" " if (actual_step.x > uv_step.x)\n" " {\n" - " // Downscale in X\n" + " // Downscale in X, centered\n" + " const vec4 sample4 = texelFetch2DMS(tex, sample_count, icoords, index, ivec2(-1, 0));\n" + " const vec4 sample5 = texelFetch2DMS(tex, sample_count, icoords, index, ivec2(-1, 1));\n" + "\n" " factor = min(actual_step.x / uv_step.x, 2.0);\n" - " a = fma(sample1, (factor - 1.).xxxx, sample0) / factor;\n" - " b = fma(sample3, (factor - 1.).xxxx, sample2) / factor;\n" + " const float half_factor = (factor - 1.) * 0.5;\n" + " a = fma((sample1 + sample4), half_factor.xxxx, sample0) / factor;\n" + " b = fma((sample3 + sample5), half_factor.xxxx, sample2) / factor;\n" " }\n" " else if (actual_step.x < uv_step.x)\n" " {\n"