[Bf-blender-cvs] [8129cff] compositor-2016: Cycles: Simplify check for degenerated faces on GPU

Sergey Sharybin noreply at git.blender.org
Wed Jun 8 21:52:43 CEST 2016


Commit: 8129cff22efafd2f6a8e937746d71a6ada2970cb
Author: Sergey Sharybin
Date:   Fri Jun 3 10:34:21 2016 +0200
Branches: compositor-2016
https://developer.blender.org/rB8129cff22efafd2f6a8e937746d71a6ada2970cb

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