[Bf-blender-cvs] [11310b5] master: Cycles: avoid some CUDA performance on scenes without deformation motion blur.

Brecht Van Lommel noreply at git.blender.org
Sat Apr 26 14:30:12 CEST 2014


Commit: 11310b554ab2f08c9f0d086f5f07694ba7ca9f19
Author: Brecht Van Lommel
Date:   Sat Apr 26 14:25:20 2014 +0200
https://developer.blender.org/rB11310b554ab2f08c9f0d086f5f07694ba7ca9f19

Cycles: avoid some CUDA performance on scenes without deformation motion blur.

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

M	intern/cycles/kernel/geom/geom_bvh_shadow.h
M	intern/cycles/kernel/geom/geom_bvh_subsurface.h
M	intern/cycles/kernel/geom/geom_bvh_traversal.h
M	intern/cycles/render/object.cpp

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

diff --git a/intern/cycles/kernel/geom/geom_bvh_shadow.h b/intern/cycles/kernel/geom/geom_bvh_shadow.h
index 6e981fb..be9def0 100644
--- a/intern/cycles/kernel/geom/geom_bvh_shadow.h
+++ b/intern/cycles/kernel/geom/geom_bvh_shadow.h
@@ -221,10 +221,12 @@ ccl_device bool BVH_FUNCTION_NAME
 								hit = triangle_intersect(kg, isect_array, P, dir, PATH_RAY_SHADOW, object, primAddr);
 								break;
 							}
+#if FEATURE(BVH_MOTION)
 							case PRIMITIVE_MOTION_TRIANGLE: {
 								hit = motion_triangle_intersect(kg, isect_array, P, dir, ray->time, PATH_RAY_SHADOW, object, primAddr);
 								break;
 							}
+#endif
 #if FEATURE(BVH_HAIR)
 							case PRIMITIVE_CURVE:
 							case PRIMITIVE_MOTION_CURVE: {
diff --git a/intern/cycles/kernel/geom/geom_bvh_subsurface.h b/intern/cycles/kernel/geom/geom_bvh_subsurface.h
index 30fc3d6..a19f05d 100644
--- a/intern/cycles/kernel/geom/geom_bvh_subsurface.h
+++ b/intern/cycles/kernel/geom/geom_bvh_subsurface.h
@@ -218,10 +218,12 @@ ccl_device uint BVH_FUNCTION_NAME(KernelGlobals *kg, const Ray *ray, Intersectio
 								triangle_intersect_subsurface(kg, isect_array, P, dir, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
 								break;
 							}
+#if FEATURE(BVH_MOTION)
 							case PRIMITIVE_MOTION_TRIANGLE: {
 								motion_triangle_intersect_subsurface(kg, isect_array, P, dir, ray->time, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
 								break;
 							}
+#endif
 							default: {
 								break;
 							}
diff --git a/intern/cycles/kernel/geom/geom_bvh_traversal.h b/intern/cycles/kernel/geom/geom_bvh_traversal.h
index 6cb622d..e6da939 100644
--- a/intern/cycles/kernel/geom/geom_bvh_traversal.h
+++ b/intern/cycles/kernel/geom/geom_bvh_traversal.h
@@ -256,10 +256,12 @@ ccl_device bool BVH_FUNCTION_NAME
 								hit = triangle_intersect(kg, isect, P, dir, visibility, object, primAddr);
 								break;
 							}
+#if FEATURE(BVH_MOTION)
 							case PRIMITIVE_MOTION_TRIANGLE: {
 								hit = motion_triangle_intersect(kg, isect, P, dir, ray->time, visibility, object, primAddr);
 								break;
 							}
+#endif
 #if FEATURE(BVH_HAIR)
 							case PRIMITIVE_CURVE:
 							case PRIMITIVE_MOTION_CURVE: {
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp
index dab00ea..b58caab 100644
--- a/intern/cycles/render/object.cpp
+++ b/intern/cycles/render/object.cpp
@@ -321,6 +321,9 @@ void ObjectManager::device_update_transforms(Device *device, DeviceScene *dscene
 		}
 #endif
 
+		if(mesh->use_motion_blur)
+			have_motion = true;
+
 		/* dupli object coords and motion info */
 		int totalsteps = mesh->motion_steps;
 		int numsteps = (totalsteps - 1)/2;




More information about the Bf-blender-cvs mailing list