On 25/03/07, Stefan Dösinger <stefan(a)codeweavers.com> wrote:
> With the glsl suggestions from Henri :-)
>
>+ shader_addline(arg->buffer, "(%s.xy + bumpenvmat * %s.xy)%s);\n",
>+ src0_param.reg_name, src1_param.reg_name, dst_mask);
MSDN states that the source parameters can have swizzles and
modifiers. Unless, you can prove that's not true, the code should
become:
void pshader_glsl_bem(SHADER_OPCODE_ARG* arg) {
glsl_src_param_t src0_param, src1_param;
shader_glsl_append)dst(arg->buffer, arg);
shader_glsl_add_src_param(arg, arg->src[0], arg->src_addr[0],
WINED3DSP_WRITEMASK_0|WINED3DSP_WRITEMASK_1, &src0_param);
shader_glsl_add_src_param(arg, arg->src[1], arg->src_addr[1],
WINED3DSP_WRITEMASK_0|WINED3DSP_WRITEMASK_1, &src1_param);
shader_addline(arg->buffer, "%s + bumpenvmat * %s);\n",
src0_param.param_str, src1_param.param_str);
}
Normally you would have to take the destination write mask into
account as well, but for this instruction it's always .xy.