From: Elizabeth Figura zfigura@codeweavers.com
Ported from 257a351f37b7f17d2e80b5557593a9b0a4998963 in vkd3d. --- dlls/wined3d/glsl_shader.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 186264a428d..bec6c52fdbf 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -4335,11 +4335,11 @@ static void shader_glsl_to_int(const struct wined3d_shader_instruction *ins) shader_glsl_add_src_param(ins, &ins->src[0], write_mask, &src_param);
if (mask_size > 1) - shader_addline(buffer, "mix(ivec%u(max(%s, vec%u(-2147483648.0))), ivec%u(0x7fffffff), greaterThanEqual(%s, vec%u(2147483648.0))));\n", - mask_size, src_param.param_str, mask_size, mask_size, src_param.param_str, mask_size); + shader_addline(buffer, "mix(mix(ivec%u(max(%s, vec%u(-2147483648.0))), ivec%u(0x7fffffff), greaterThanEqual(%s, vec%u(2147483648.0))), ivec%u(0), isnan(%s)));\n", + mask_size, src_param.param_str, mask_size, mask_size, src_param.param_str, mask_size, mask_size, src_param.param_str); else - shader_addline(buffer, "mix(int(max(%s, -2147483648.0)), 0x7fffffff, %s >= 2147483648.0));\n", - src_param.param_str, src_param.param_str); + shader_addline(buffer, "mix(mix(int(max(%s, -2147483648.0)), 0x7fffffff, %s >= 2147483648.0), 0, isnan(%s)));\n", + src_param.param_str, src_param.param_str, src_param.param_str); }
static void shader_glsl_to_uint(const struct wined3d_shader_instruction *ins)