From 426482f9848db956095943e9f0983db0d6ab1a0d Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 8 Jan 2010 17:26:33 -0500 Subject: Clamp negative values in phong shading. --- libdimension/phong.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libdimension/phong.c') diff --git a/libdimension/phong.c b/libdimension/phong.c index 815885f..637ff52 100644 --- a/libdimension/phong.c +++ b/libdimension/phong.c @@ -40,7 +40,12 @@ dmnsn_phong_finish_fn(const dmnsn_finish *finish, dmnsn_vector proj = dmnsn_vector_mul(2*dmnsn_vector_dot(ray, normal), normal); dmnsn_vector reflected = dmnsn_vector_sub(proj, ray); - double specular_factor = pow(dmnsn_vector_dot(reflected, viewer), exp); + double specular_factor = dmnsn_vector_dot(reflected, viewer); + if (specular_factor < 0.0) { + return dmnsn_black; + } + + specular_factor = pow(specular_factor, exp); return dmnsn_color_mul(specular*specular_factor, light); } -- cgit v1.2.3