Module: wine Branch: master Commit: d0d8a7827be8808a3ad1098835a574c37beebed4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d0d8a7827be8808a3ad1098835...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Mar 31 10:24:57 2015 +0200
wined3d: Take WINED3D_PIXEL_CENTER_INTEGER into account when calculating vpos.
---
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"); + } }
/*****************************************************************************