[PATCH 2/5] wined3d: Take WINED3D_PIXEL_CENTER_INTEGER into account when calculating vpos.

Henri Verbeet hverbeet at codeweavers.com
Tue Mar 31 03:24:57 CDT 2015


---
 dlls/wined3d/glsl_shader.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index e4ddbe6..c857e76 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1420,8 +1420,14 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
      * centers instead of the pixel corners. This code will behave correctly
      * on drivers that returns integer values. */
     if (version->type == WINED3D_SHADER_TYPE_PIXEL && reg_maps->vpos)
-        shader_addline(buffer,
-                "vpos = floor(vec4(0, ycorrection[0], 0, 0) + gl_FragCoord * vec4(1, ycorrection[1], 1, 1));\n");
+    {
+        if (shader->device->wined3d->flags & WINED3D_PIXEL_CENTER_INTEGER)
+            shader_addline(buffer,
+                    "vpos = floor(vec4(0, ycorrection[0], 0, 0) + gl_FragCoord * vec4(1, ycorrection[1], 1, 1));\n");
+        else
+            shader_addline(buffer,
+                    "vpos = vec4(0, ycorrection[0], 0, 0) + gl_FragCoord * vec4(1, ycorrection[1], 1, 1);\n");
+    }
 }
 
 /*****************************************************************************
-- 
1.7.10.4




More information about the wine-patches mailing list