[Bf-blender-cvs] [8b00712b55e] master: Eevee: Fix tangent vector not normalized before interpolation.

Clément Foucault noreply at git.blender.org
Fri Mar 22 00:13:43 CET 2019


Commit: 8b00712b55e79a550fc02e7237b8d8fdb5fc35ef
Author: Clément Foucault
Date:   Thu Mar 21 23:53:24 2019 +0100
Branches: master
https://developer.blender.org/rB8b00712b55e79a550fc02e7237b8d8fdb5fc35ef

Eevee: Fix tangent vector not normalized before interpolation.

===================================================================

M	source/blender/gpu/intern/gpu_codegen.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c
index 195dc8950aa..99b79d3758c 100644
--- a/source/blender/gpu/intern/gpu_codegen.c
+++ b/source/blender/gpu/intern/gpu_codegen.c
@@ -1006,6 +1006,13 @@ static char *code_generate_vertex(ListBase *nodes, const char *vert_code, bool u
 					BLI_dynstr_appendf(
 					        ds, "\tvar%d%s.w = att%d.w;\n",
 					        input->attr_id, use_geom ? "g" : "", input->attr_id);
+					/* Normalize only if vector is not null. */
+					BLI_dynstr_appendf(
+					        ds, "\tfloat lvar%d = dot(att%d.xyz, att%d.xyz);\n",
+					        input->attr_id, input->attr_id, input->attr_id);
+					BLI_dynstr_appendf(
+					        ds, "\tvar%d%s.xyz *= (lvar%d > 0.0) ? inversesqrt(lvar%d) : 1.0;\n",
+					        input->attr_id, use_geom ? "g" : "", input->attr_id, input->attr_id);
 				}
 				else if (input->attr_type == CD_ORCO) {
 					BLI_dynstr_appendf(



More information about the Bf-blender-cvs mailing list