http://bugs.winehq.org/show_bug.cgi?id=10580
--- Comment #21 from Vitaliy Margolen vitaliy@kievinfo.com 2008-05-26 14:24:19 --- (In reply to comment #20)
Probably the shader_addline(buffer, "const vec4 LC%d = vec4(%f, %f, %f, %f)") causes a precision loss because the float value is transformed into a string.
Indeed this fixes the problem: -shader_addline(buffer, "const vec4 LC%u = vec4(%f, %f, %f, %f);\n", lconst->idx, +shader_addline(buffer, "const vec4 LC%u = vec4(%.12f, %.12f, %.12f, %.12f);\n", lconst->idx,
I think all such places needs to be changed to higher precision.