From 58a783b01e1f0154a2047c53ef935d04b951e43f Mon Sep 17 00:00:00 2001 From: Nathan Vegdahl Date: Sun, 30 Jul 2017 23:14:03 -0700 Subject: [PATCH] Silly mistake in calculating interpolated triangle normal. The normal is in the local space of the model and needs to be transformed to global space for lighting calculations. --- src/surface/triangle_mesh.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/surface/triangle_mesh.rs b/src/surface/triangle_mesh.rs index ab21470..6a29a28 100644 --- a/src/surface/triangle_mesh.rs +++ b/src/surface/triangle_mesh.rs @@ -225,7 +225,7 @@ impl<'a> Surface for TriangleMesh<'a> { let n1 = lerp_slice(n1_slice, wr.time).normalized(); let n2 = lerp_slice(n2_slice, wr.time).normalized(); - let s_nor = (n0 * b0) + (n1 * b1) + (n2 * b2); + let s_nor = ((n0 * b0) + (n1 * b1) + (n2 * b2)) * mat_space; if dot(s_nor, geo_normal) >= 0.0 { s_nor } else {