From fe9b7fa4f371d1c400afa6274eaf9512681685d6 Mon Sep 17 00:00:00 2001 From: jimbo1qaz Date: Tue, 29 Jul 2014 18:15:01 -0700 Subject: [PATCH] Fix D3D Real XFB texture sampling. --- Source/Core/VideoBackends/D3D/XFBEncoder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/D3D/XFBEncoder.cpp b/Source/Core/VideoBackends/D3D/XFBEncoder.cpp index 8c200b4ab2..215a7e911f 100644 --- a/Source/Core/VideoBackends/D3D/XFBEncoder.cpp +++ b/Source/Core/VideoBackends/D3D/XFBEncoder.cpp @@ -97,7 +97,8 @@ static const char XFB_ENCODE_PS[] = "void main(out float4 ocol0 : SV_Target, in float4 Pos : SV_Position, in float2 Coord : ENCODECOORD)\n" "{\n" - "float2 baseCoord = Coord * float2(2,1);\n" + // Multiplying X by 2, moves pixel centers from (x+0.5) to (2x+1) instead of (2x+0.5), so subtract 0.5 to compensate + "float2 baseCoord = Coord * float2(2,1) - float2(0.5,0);\n" // FIXME: Shall we apply gamma here, or apply it below to the Y components? // Be careful if you apply it to Y! The Y components are in the range (16..235) / 255. "float3 sampleL = pow(abs(SampleEFB(baseCoord+float2(-1,0))), Params.Gamma);\n" // Left