wined3d: Clamp texcoord output between 0 and 1.
authorIvan Gyurdiev <ivg231@gmail.com>
Mon, 10 Jul 2006 04:51:52 +0000 (22:51 -0600)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 11 Jul 2006 15:12:04 +0000 (17:12 +0200)
dlls/wined3d/arb_program_shader.c
dlls/wined3d/glsl_shader.c

index 25f295a..4eb8494 100644 (file)
@@ -640,7 +640,7 @@ void pshader_hw_texcoord(SHADER_OPCODE_ARG* arg) {
     pshader_get_write_mask(dst, tmp);
     if (hex_version != D3DPS_VERSION(1,4)) {
         DWORD reg = dst & D3DSP_REGNUM_MASK;
-        shader_addline(buffer, "MOV T%lu%s, fragment.texcoord[%lu];\n", reg, tmp, reg);
+        shader_addline(buffer, "MOV_SAT T%lu%s, fragment.texcoord[%lu];\n", reg, tmp, reg);
     } else {
         DWORD reg1 = dst & D3DSP_REGNUM_MASK;
         DWORD reg2 = src[0] & D3DSP_REGNUM_MASK;
index f132dec..0d0ed3a 100644 (file)
@@ -1245,7 +1245,7 @@ void pshader_glsl_texcoord(SHADER_OPCODE_ARG* arg) {
 
     if (hex_version != D3DPS_VERSION(1,4)) {
         DWORD reg = arg->dst & D3DSP_REGNUM_MASK;
-        shader_addline(buffer, "%s = gl_TexCoord[%lu];\n", tmpReg, reg);
+        shader_addline(buffer, "%s = clamp(gl_TexCoord[%lu], 0.0, 1.0);\n", tmpReg, reg);
     } else {
         DWORD reg2 = arg->src[0] & D3DSP_REGNUM_MASK;
         shader_addline(buffer, "%s = gl_TexCoord[%lu]%s;\n", tmpStr, reg2, tmpMask);