[Bf-blender-cvs] [edb7195] master: Cycles: Bring back distance check in re-intersection
Sergey Sharybin
noreply at git.blender.org
Tue Feb 10 15:14:12 CET 2015
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
More information about the Bf-blender-cvs
mailing list