[PATCH 3/5] wined3d: Don't clamp texture lookups in the GLSL fixed function fragment pipe.
Henri Verbeet
hverbeet at codeweavers.com
Tue Sep 3 02:47:23 CDT 2013
This originally came from the ARB fragment program implementation, but I don't
see a justification for clamping there either. For the texture formats
typically used with the fixed function pipe clamping wouldn't make a
difference, and we don't have any tests that say we need to clamp.
---
dlls/wined3d/glsl_shader.c | 32 +++++++-------------------------
1 file changed, 7 insertions(+), 25 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 7e0971b..740e100 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -5507,7 +5507,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct wined3d_shader_buf
{
const char *texture_function, *coord_mask;
char tex_reg_name[8];
- BOOL proj, clamp;
+ BOOL proj;
if (!(tex_map & (1 << stage)))
continue;
@@ -5527,12 +5527,6 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct wined3d_shader_buf
proj = TRUE;
}
- if (settings->op[stage].cop == WINED3D_TOP_BUMPENVMAP
- || settings->op[stage].cop == WINED3D_TOP_BUMPENVMAP_LUMINANCE)
- clamp = FALSE;
- else
- clamp = TRUE;
-
switch (settings->op[stage].tex_type)
{
case tex_1d:
@@ -5624,12 +5618,8 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct wined3d_shader_buf
shader_addline(buffer, "ret = gl_TexCoord[%u] + ret.xyxy;\n", stage);
}
- if (clamp)
- shader_addline(buffer, "tex%u = clamp(%s(ps_sampler%u, ret.%s), 0.0, 1.0);\n",
- stage, texture_function, stage, coord_mask);
- else
- shader_addline(buffer, "tex%u = %s(ps_sampler%u, ret.%s);\n",
- stage, texture_function, stage, coord_mask);
+ shader_addline(buffer, "tex%u = %s(ps_sampler%u, ret.%s);\n",
+ stage, texture_function, stage, coord_mask);
if (settings->op[stage - 1].cop == WINED3D_TOP_BUMPENVMAP_LUMINANCE)
shader_addline(buffer, "tex%u *= clamp(tex%u.z * bumpenv_lum_scale%u + bumpenv_lum_offset%u, 0.0, 1.0);\n",
@@ -5637,21 +5627,13 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct wined3d_shader_buf
}
else if (settings->op[stage].projected == proj_count3)
{
- if (clamp)
- shader_addline(buffer, "tex%u = clamp(%s(ps_sampler%u, gl_TexCoord[%u].xyz), 0.0, 1.0);\n",
- stage, texture_function, stage, stage);
- else
- shader_addline(buffer, "tex%u = %s(ps_sampler%u, gl_TexCoord[%u].xyz);\n",
- stage, texture_function, stage, stage);
+ shader_addline(buffer, "tex%u = %s(ps_sampler%u, gl_TexCoord[%u].xyz);\n",
+ stage, texture_function, stage, stage);
}
else
{
- if (clamp)
- shader_addline(buffer, "tex%u = clamp(%s(ps_sampler%u, gl_TexCoord[%u].%s), 0.0, 1.0);\n",
- stage, texture_function, stage, stage, coord_mask);
- else
- shader_addline(buffer, "tex%u = %s(ps_sampler%u, gl_TexCoord[%u].%s);\n",
- stage, texture_function, stage, stage, coord_mask);
+ shader_addline(buffer, "tex%u = %s(ps_sampler%u, gl_TexCoord[%u].%s);\n",
+ stage, texture_function, stage, stage, coord_mask);
}
sprintf(tex_reg_name, "tex%u", stage);
--
1.8.1.5
More information about the wine-patches
mailing list