[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