[WINED3D 2] Clamp texcoord output between 0 and 1

Ivan Gyurdiev ivg231 at gmail.com
Sun Jul 9 23:51:52 CDT 2006


That matches the spec, and gets VolumetricLighting demo working for me.

-------------- next part --------------
---
 dlls/wined3d/arb_program_shader.c |    2 +-
 dlls/wined3d/glsl_shader.c        |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 25f295a..4eb8494 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -640,7 +640,7 @@ void pshader_hw_texcoord(SHADER_OPCODE_A
     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;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f132dec..0d0ed3a 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1245,7 +1245,7 @@ void pshader_glsl_texcoord(SHADER_OPCODE
 
     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);
-- 
1.4.0



More information about the wine-patches mailing list