From b3e0271b5706cd56fa5f75beeae6666ad881f448 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Tue, 24 Oct 2023 14:59:36 -0500 Subject: [PATCH] wined3d/glsl: Flush NaN to zero in ftoi. 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 12fa4eaf029..4a6338223c9 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -4333,11 +4333,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) -- 2.11.4.GIT