[PATCH v4 3/3] wined3d: Do not zero 'w' with zero norm for 'nrm' opcode in GLSL backend.
Paul Gofman
gofmanp at gmail.com
Thu Jun 13 08:57:01 CDT 2019
Signed-off-by: Paul Gofman <gofmanp at gmail.com>
---
v3:
- output 'w' component unchanged in case of zero norm.
v4:
- simplify output expression.
dlls/wined3d/glsl_shader.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index f2fa18dba8..f7757bf4a9 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -4268,16 +4268,8 @@ static void shader_glsl_nrm(const struct wined3d_shader_instruction *ins)
src_param.param_str, src_param.param_str);
shader_glsl_append_dst(buffer, ins);
- if (mask_size > 1)
- {
- shader_addline(buffer, "tmp0.x == 0.0 ? vec%u(0.0) : (%s * inversesqrt(tmp0.x)));\n",
- mask_size, src_param.param_str);
- }
- else
- {
- shader_addline(buffer, "tmp0.x == 0.0 ? 0.0 : (%s * inversesqrt(tmp0.x)));\n",
- src_param.param_str);
- }
+ shader_addline(buffer, "tmp0.x == 0.0 ? %s : (%s * inversesqrt(tmp0.x)));\n",
+ src_param.param_str, src_param.param_str);
}
static void shader_glsl_scalar_op(const struct wined3d_shader_instruction *ins)
--
2.21.0
More information about the wine-devel
mailing list