diff options
Diffstat (limited to 'intern/cycles/util/util_transform.h')
-rw-r--r-- | intern/cycles/util/util_transform.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/intern/cycles/util/util_transform.h b/intern/cycles/util/util_transform.h index ac97fa53084..0b87db0a379 100644 --- a/intern/cycles/util/util_transform.h +++ b/intern/cycles/util/util_transform.h @@ -449,6 +449,8 @@ ccl_device void transform_motion_interpolate(Transform *tfm, const DecompMotionT #ifndef __KERNEL_GPU__ +class BoundBox2D; + ccl_device_inline bool operator==(const MotionTransform& A, const MotionTransform& B) { return (A.pre == B.pre && A.post == B.post); @@ -456,7 +458,39 @@ ccl_device_inline bool operator==(const MotionTransform& A, const MotionTransfor float4 transform_to_quat(const Transform& tfm); void transform_motion_decompose(DecompMotionTransform *decomp, const MotionTransform *motion, const Transform *mid); +Transform transform_from_viewplane(BoundBox2D& viewplane); + +#endif + +/* TODO(sergey): This is only for until we've got OpenCL 2.0 + * on all devices we consider supported. It'll be replaced with + * generic address space. + */ +#ifdef __KERNEL_OPENCL__ + +#define OPENCL_TRANSFORM_ADDRSPACE_GLUE(a, b) a ## b +#define OPENCL_TRANSFORM_ADDRSPACE_DECLARE(function) \ +ccl_device_inline float3 OPENCL_TRANSFORM_ADDRSPACE_GLUE(function, _addrspace)( \ + ccl_addr_space const Transform *t, const float3 a) \ +{ \ + Transform private_tfm = *t; \ + return function(&private_tfm, a); \ +} + +OPENCL_TRANSFORM_ADDRSPACE_DECLARE(transform_point) +OPENCL_TRANSFORM_ADDRSPACE_DECLARE(transform_direction) +OPENCL_TRANSFORM_ADDRSPACE_DECLARE(transform_direction_transposed) + +# undef OPENCL_TRANSFORM_ADDRSPACE_DECLARE +# undef OPENCL_TRANSFORM_ADDRSPACE_GLUE +# define transform_point_auto transform_point_addrspace +# define transform_direction_auto transform_direction_addrspace +# define transform_direction_transposed_auto transform_direction_transposed_addrspace +#else +# define transform_point_auto transform_point +# define transform_direction_auto transform_direction +# define transform_direction_transposed_auto transform_direction_transposed #endif CCL_NAMESPACE_END |