[Bf-blender-cvs] [f1494ed] master: Cycles: Make SSS intersection closer to regular triangle intersection

Sergey Sharybin noreply at git.blender.org
Wed Apr 1 18:20:15 CEST 2015


Commit: f1494edf787099d9261f7ab82a66c68ffbe8e727
Author: Sergey Sharybin
Date:   Wed Apr 1 21:19:29 2015 +0500
Branches: master
https://developer.blender.org/rBf1494edf787099d9261f7ab82a66c68ffbe8e727

Cycles: Make SSS intersection closer to regular triangle intersection

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

M	intern/cycles/kernel/geom/geom_triangle_intersect.h

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

diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h b/intern/cycles/kernel/geom/geom_triangle_intersect.h
index d3919a0..b29fc2b 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -247,13 +247,10 @@ ccl_device_inline void triangle_intersect_subsurface(
 	/* Calculate scaled z−coordinates of vertices and use them to calculate
 	 * the hit distance.
 	 */
-	const float Az = Sz * A_kz;
-	const float Bz = Sz * B_kz;
-	const float Cz = Sz * C_kz;
-	const float T = U * Az + V * Bz + W * Cz;
-
-	if((xor_signmast(T, sign_mask) < 0.0f) ||
-	   (xor_signmast(T, sign_mask) > tmax * xor_signmast(det, sign_mask)))
+	const float T = (U * A_kz + V * B_kz + W * C_kz) * Sz;
+	const float sign_T = xor_signmast(T, sign_mask);
+	if((sign_T < 0.0f) ||
+	   (sign_T > tmax * xor_signmast(det, sign_mask)))
 	{
 		return;
 	}




More information about the Bf-blender-cvs mailing list