[Bf-blender-cvs] [d69c80f] master: Cycles: Presumably correct workaround for addrspace in camera motion blur

Sergey Sharybin noreply at git.blender.org
Sat May 9 16:57:38 CEST 2015


Commit: d69c80f717e9dc9efc1325653b0c87fbb2254af9
Author: Sergey Sharybin
Date:   Sat May 9 18:57:51 2015 +0500
Branches: master
https://developer.blender.org/rBd69c80f717e9dc9efc1325653b0c87fbb2254af9

Cycles: Presumably correct workaround for addrspace in camera motion blur

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

M	intern/cycles/kernel/kernel_camera.h

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

diff --git a/intern/cycles/kernel/kernel_camera.h b/intern/cycles/kernel/kernel_camera.h
index ded222e..1e81210 100644
--- a/intern/cycles/kernel/kernel_camera.h
+++ b/intern/cycles/kernel/kernel_camera.h
@@ -16,17 +16,6 @@
 
 CCL_NAMESPACE_BEGIN
 
-/* Workaround for explicit conversion from constant to private memory
- * pointer when using OpenCL.
- *
- * TODO(sergey): Find a real solution for this.
- */
-#ifdef __KERNEL_OPENCL__
-#  define __motion_as_decoupled_const_ptr(motion) ((motion))
-#else
-#  define __motion_as_decoupled_const_ptr(motion) ((const DecompMotionTransform*)(motion))
-#endif
-
 /* Perspective Camera */
 
 ccl_device float2 camera_sample_aperture(KernelGlobals *kg, float u, float v)
@@ -80,9 +69,16 @@ ccl_device void camera_sample_perspective(KernelGlobals *kg, float raster_x, flo
 
 #ifdef __CAMERA_MOTION__
 	if(kernel_data.cam.have_motion) {
+#ifdef __KERNEL_OPENCL__
+		const MotionTransform tfm = kernel_data.cam.motion;
 		transform_motion_interpolate(&cameratoworld,
-		                             __motion_as_decoupled_const_ptr(&kernel_data.cam.motion),
+		                             ((const DecompMotionTransform*)&tfm),
 		                             ray->time);
+#else
+		transform_motion_interpolate(&cameratoworld,
+		                             ((const DecompMotionTransform*)&kernel_data.cam.motion),
+		                             ray->time);
+#endif
 	}
 #endif
 
@@ -144,9 +140,16 @@ ccl_device void camera_sample_orthographic(KernelGlobals *kg, float raster_x, fl
 
 #ifdef __CAMERA_MOTION__
 	if(kernel_data.cam.have_motion) {
+#ifdef __KERNEL_OPENCL__
+		const MotionTransform tfm = kernel_data.cam.motion;
 		transform_motion_interpolate(&cameratoworld,
-		                             __motion_as_decoupled_const_ptr(&kernel_data.cam.motion),
+		                             (const DecompMotionTransform*)&tfm,
 		                             ray->time);
+#else
+		transform_motion_interpolate(&cameratoworld,
+		                             (const DecompMotionTransform*)&kernel_data.cam.motion,
+		                             ray->time);
+#endif
 	}
 #endif
 
@@ -220,11 +223,19 @@ ccl_device void camera_sample_panorama(KernelGlobals *kg, float raster_x, float
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
 #ifdef __CAMERA_MOTION__
-	if(kernel_data.cam.have_motion)
+	if(kernel_data.cam.have_motion) {
+#ifdef __KERNEL_OPENCL__
+		const MotionTransform tfm = kernel_data.cam.motion;
+		transform_motion_interpolate(&cameratoworld,
+		                             (const DecompMotionTransform*)&tfm,
+		                             ray->time);
+#else
 		transform_motion_interpolate(&cameratoworld,
-		                             __motion_as_decoupled_const_ptr(&kernel_data.cam.motion),
+		                             (const DecompMotionTransform*)&kernel_data.cam.motion,
 		                             ray->time);
 #endif
+	}
+#endif
 
 	ray->P = transform_point(&cameratoworld, ray->P);
 	ray->D = transform_direction(&cameratoworld, ray->D);
@@ -329,7 +340,4 @@ ccl_device_inline float3 camera_world_to_ndc(KernelGlobals *kg, ShaderData *sd,
 	}
 }
 
-#undef __motion_as_decoupled_const_ptr
-
 CCL_NAMESPACE_END
-




More information about the Bf-blender-cvs mailing list