[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51402] trunk/blender/intern/cycles: More fixes related to #32900, motion blur with cuda sm 2.0 still disabled.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Oct 18 14:45:28 CEST 2012


Revision: 51402
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51402
Author:   blendix
Date:     2012-10-18 12:45:27 +0000 (Thu, 18 Oct 2012)
Log Message:
-----------
More fixes related to #32900, motion blur with cuda sm 2.0 still disabled.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/kernel_bvh.h
    trunk/blender/intern/cycles/kernel/kernel_emission.h
    trunk/blender/intern/cycles/kernel/kernel_types.h
    trunk/blender/intern/cycles/kernel/osl/osl_services.cpp
    trunk/blender/intern/cycles/render/camera.cpp

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-10-18 12:37:51 UTC (rev 51401)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-10-18 12:45:27 UTC (rev 51402)
@@ -443,13 +443,19 @@
 
 __device_inline bool scene_intersect(KernelGlobals *kg, const Ray *ray, const uint visibility, Intersection *isect)
 {
-	/* todo: fix cuda sm 2.0 motion blur */
-#if defined(__OBJECT_MOTION__) && (!defined(__KERNEL_CUDA) || (__CUDA_ARCH__ >= 210))
+#ifdef __OBJECT_MOTION__
+#if !defined(__KERNEL_CUDA__) || (__CUDA_ARCH__ >= 210)
 	if(kernel_data.bvh.have_motion)
 		return bvh_intersect_motion(kg, ray, visibility, isect);
 	else
+		return bvh_intersect(kg, ray, visibility, isect);
+#else
+	/* todo: fix cuda sm 2.0 motion blur */
+	return bvh_intersect(kg, ray, visibility, isect);
 #endif
-		return bvh_intersect(kg, ray, visibility, isect);
+#else
+	return bvh_intersect(kg, ray, visibility, isect);
+#endif
 }
 
 __device_inline float3 ray_offset(float3 P, float3 Ng)

Modified: trunk/blender/intern/cycles/kernel/kernel_emission.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_emission.h	2012-10-18 12:37:51 UTC (rev 51401)
+++ trunk/blender/intern/cycles/kernel/kernel_emission.h	2012-10-18 12:45:27 UTC (rev 51402)
@@ -32,6 +32,10 @@
 		Ray ray;
 		ray.D = ls->D;
 		ray.P = ls->P;
+		ray.t = 1.0f;
+#ifdef __OBJECT_MOTION__
+		ray.time = time;
+#endif
 		ray.dP.dx = make_float3(0.0f, 0.0f, 0.0f);
 		ray.dP.dy = make_float3(0.0f, 0.0f, 0.0f);
 #ifdef __CAMERA_MOTION__

Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h	2012-10-18 12:37:51 UTC (rev 51401)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h	2012-10-18 12:45:27 UTC (rev 51402)
@@ -514,7 +514,9 @@
 	/* more matrices */
 	Transform screentoworld;
 	Transform rastertoworld;
-	Transform ndctoworld;
+	/* work around cuda sm 2.0 crash, this seems to
+	 * cross some limit in combination with motion 
+	 * Transform ndctoworld; */
 	Transform worldtoscreen;
 	Transform worldtoraster;
 	Transform worldtondc;

Modified: trunk/blender/intern/cycles/kernel/osl/osl_services.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_services.cpp	2012-10-18 12:37:51 UTC (rev 51401)
+++ trunk/blender/intern/cycles/kernel/osl/osl_services.cpp	2012-10-18 12:45:27 UTC (rev 51402)
@@ -224,7 +224,7 @@
 	KernelGlobals *kg = kernel_globals;
 
 	if (from == u_ndc) {
-		Transform tfm = transform_transpose(kernel_data.cam.ndctoworld);
+		Transform tfm = transform_transpose(transform_quick_inverse(kernel_data.cam.worldtondc));
 		result = TO_MATRIX44(tfm);
 		return true;
 	}

Modified: trunk/blender/intern/cycles/render/camera.cpp
===================================================================
--- trunk/blender/intern/cycles/render/camera.cpp	2012-10-18 12:37:51 UTC (rev 51401)
+++ trunk/blender/intern/cycles/render/camera.cpp	2012-10-18 12:45:27 UTC (rev 51402)
@@ -162,7 +162,6 @@
 	/* store matrices */
 	kcam->screentoworld = screentoworld;
 	kcam->rastertoworld = rastertoworld;
-	kcam->ndctoworld = ndctoworld;
 	kcam->rastertocamera = rastertocamera;
 	kcam->cameratoworld = cameratoworld;
 	kcam->worldtoscreen = transform_inverse(screentoworld);




More information about the Bf-blender-cvs mailing list