Commit: edb7195f27091b6c4acf8b4ab29e9bb2f468c64f
Author: Sergey Sharybin
Date:   Tue Feb 10 19:07:55 2015 +0500
Branches: master
https://developer.blender.org/rBedb7195f27091b6c4acf8b4ab29e9bb2f468c64f

Cycles: Bring back distance check in re-intersection

>From more investigation of the numeric failures in the kernel it appears
the check was rather correct. But in theory it;s also needed for the motion
triangles.

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

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

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

diff --git a/intern/cycles/kernel/geom/geom_motion_triangle.h 
b/intern/cycles/kernel/geom/geom_motion_triangle.h
index 3a4b20e..d3297e0 100644
--- a/intern/cycles/kernel/geom/geom_motion_triangle.h
+++ b/intern/cycles/kernel/geom/geom_motion_triangle.h
@@ -130,6 +130,9 @@ ccl_device_inline float3 
motion_triangle_refine(KernelGlobals *kg, ShaderData *s
 
 #ifdef __INTERSECTION_REFINE__
        if(isect->object != OBJECT_NONE) {
+               if(UNLIKELY(t == 0.0f)) {
+                       return P;
+               }
 #ifdef __OBJECT_MOTION__
                Transform tfm = sd->ob_itfm;
 #else
diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h 
b/intern/cycles/kernel/geom/geom_triangle_intersect.h
index 0674e8b..30468ef 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -314,6 +314,9 @@ ccl_device_inline float3 triangle_refine(KernelGlobals *kg,
 
 #ifdef __INTERSECTION_REFINE__
        if(isect->object != OBJECT_NONE) {
+               if(UNLIKELY(t == 0.0f)) {
+                       return P;
+               }
 #ifdef __OBJECT_MOTION__
                Transform tfm = sd->ob_itfm;
 #else

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to