[Bf-blender-cvs] [f54a98a] master: Cycles: Simplify check for degenerated faces on GPU

Sergey Sharybin noreply at git.blender.org
Fri Jun 3 10:35:46 CEST 2016


Commit: f54a98a1c56e40f9d9d2c493fe2086e92da1150d
Author: Sergey Sharybin
Date:   Fri Jun 3 10:34:21 2016 +0200
Branches: master
https://developer.blender.org/rBf54a98a1c56e40f9d9d2c493fe2086e92da1150d

Cycles: Simplify check for degenerated faces on GPU

Still not sure how to properly solve the issue, needs some trickery to get
actual optimized values from intersection function (using printf() avoids
some optimization and makes stuff render correct).

For the time being let's just simplify check.

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

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 d2957ad..4e2f46d 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -160,15 +160,10 @@ ccl_device_inline bool triangle_intersect(KernelGlobals *kg,
 #endif
 	{
 #ifdef __KERNEL_GPU__
-		float4 a = tri_b - tri_a, b = tri_c - tri_a;
-		if(len_squared(make_float3(a.y*b.z - a.z*b.y,
-		                           a.z*b.x - a.x*b.z,
-		                           a.x*b.y - a.y*b.x)) == 0.0f)
-		{
+		if(A == B && B == C) {
 			return false;
 		}
 #endif
-
 		/* Normalize U, V, W, and T. */
 		const float inv_det = 1.0f / det;
 		isect->prim = triAddr;




More information about the Bf-blender-cvs mailing list