[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59361] trunk/blender/intern/cycles/kernel : Fix #36526: SSS + hair crash after recent changes.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Aug 21 14:20:38 CEST 2013


Revision: 59361
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59361
Author:   blendix
Date:     2013-08-21 12:20:38 +0000 (Wed, 21 Aug 2013)
Log Message:
-----------
Fix #36526: SSS + hair crash after recent changes.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_bvh.h
    trunk/blender/intern/cycles/kernel/kernel_bvh_subsurface.h

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh.h	2013-08-21 12:20:31 UTC (rev 59360)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh.h	2013-08-21 12:20:38 UTC (rev 59361)
@@ -794,7 +794,7 @@
 
 #if defined(__SUBSURFACE__) && defined(__HAIR__)
 #define BVH_FUNCTION_NAME bvh_intersect_subsurface_hair
-#define BVH_FUNCTION_FEATURES BVH_INSTANCING|BVH_HAIR|BVH_HAIR_MINIMUM_WIDTH
+#define BVH_FUNCTION_FEATURES BVH_INSTANCING|BVH_HAIR
 #include "kernel_bvh_subsurface.h"
 #endif
 
@@ -806,7 +806,7 @@
 
 #if defined(__SUBSURFACE__) && defined(__HAIR__) && defined(__OBJECT_MOTION__)
 #define BVH_FUNCTION_NAME bvh_intersect_subsurface_hair_motion
-#define BVH_FUNCTION_FEATURES BVH_INSTANCING|BVH_HAIR|BVH_HAIR_MINIMUM_WIDTH|BVH_MOTION
+#define BVH_FUNCTION_FEATURES BVH_INSTANCING|BVH_HAIR|BVH_MOTION
 #include "kernel_bvh_subsurface.h"
 #endif
 

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh_subsurface.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh_subsurface.h	2013-08-21 12:20:31 UTC (rev 59360)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh_subsurface.h	2013-08-21 12:20:38 UTC (rev 59361)
@@ -207,7 +207,13 @@
 					--stackPtr;
 
 					/* primitive intersection */
-					while(primAddr < primAddr2) {
+					for(; primAddr < primAddr2; primAddr++) {
+#if FEATURE(BVH_HAIR)
+						uint segment = kernel_tex_fetch(__prim_segment, primAddr);
+						if(segment != ~0)
+							continue;
+#endif
+
 						/* only primitives from the same object */
 						uint tri_object = (object == ~0)? kernel_tex_fetch(__prim_object, primAddr): object;
 
@@ -216,8 +222,6 @@
 							/* intersect ray against primitive */
 							bvh_triangle_intersect_subsurface(kg, isect_array, P, idir, object, primAddr, tmax, &num_hits, lcg_state, max_hits);
 						}
-
-						primAddr++;
 					}
 				}
 #if FEATURE(BVH_INSTANCING)




More information about the Bf-blender-cvs mailing list