[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