diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 6dfa706fb67..6f2f10a56db 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1605,8 +1605,17 @@ void pshader_glsl_tex(SHADER_OPCODE_ARG* arg) { } else { glsl_src_param_t coord_param; shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], mask, &coord_param); - shader_addline(arg->buffer, "%s(Psampler%u, %s)%s);\n", - sample_function.name, sampler_idx, coord_param.param_str, dst_swizzle); + if(arg->opcode_token & WINED3DSI_TEXLD_BIAS) { + glsl_src_param_t bias; + shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0], WINED3DSP_WRITEMASK_3, &bias); + + shader_addline(arg->buffer, "%s(Psampler%u, %s, %s)%s);\n", + sample_function.name, sampler_idx, coord_param.param_str, + bias.param_str, dst_swizzle); + } else { + shader_addline(arg->buffer, "%s(Psampler%u, %s)%s);\n", + sample_function.name, sampler_idx, coord_param.param_str, dst_swizzle); + } } } diff --git a/dlls/wined3d/wined3d_private_types.h b/dlls/wined3d/wined3d_private_types.h index 3550910101e..8a7750f8ecd 100644 --- a/dlls/wined3d/wined3d_private_types.h +++ b/dlls/wined3d/wined3d_private_types.h @@ -293,6 +293,7 @@ typedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE { /* Undocumented opcode control to identify projective texture lookups in ps 2.0 and later */ #define WINED3DSI_TEXLD_PROJECT 0x00010000 +#define WINED3DSI_TEXLD_BIAS 0x00020000 /** Shader version tokens, and shader end tokens **/