Cycles: motion blur is now curved and passes exactly through the midpoint.
Previously it would only interpolate between the previous and next frame, which meant it might not hit the current frame position.
This commit is contained in:
@@ -23,8 +23,9 @@ enum ObjectTransform {
|
||||
OBJECT_INVERSE_TRANSFORM = 3,
|
||||
OBJECT_PROPERTIES = 6,
|
||||
OBJECT_TRANSFORM_MOTION_PRE = 8,
|
||||
OBJECT_TRANSFORM_MOTION_POST = 12,
|
||||
OBJECT_DUPLI = 16
|
||||
OBJECT_TRANSFORM_MOTION_MID = 12,
|
||||
OBJECT_TRANSFORM_MOTION_POST = 16,
|
||||
OBJECT_DUPLI = 18
|
||||
};
|
||||
|
||||
__device_inline Transform object_fetch_transform(KernelGlobals *kg, int object, enum ObjectTransform type)
|
||||
@@ -59,11 +60,15 @@ __device_inline Transform object_fetch_transform_motion(KernelGlobals *kg, int o
|
||||
motion.pre.z = kernel_tex_fetch(__objects, offset + 2);
|
||||
motion.pre.w = kernel_tex_fetch(__objects, offset + 3);
|
||||
|
||||
motion.mid.x = kernel_tex_fetch(__objects, offset + 4);
|
||||
motion.mid.y = kernel_tex_fetch(__objects, offset + 5);
|
||||
motion.mid.z = kernel_tex_fetch(__objects, offset + 6);
|
||||
motion.mid.w = kernel_tex_fetch(__objects, offset + 7);
|
||||
|
||||
motion.post.x = kernel_tex_fetch(__objects, offset + 4);
|
||||
motion.post.y = kernel_tex_fetch(__objects, offset + 5);
|
||||
motion.post.z = kernel_tex_fetch(__objects, offset + 6);
|
||||
motion.post.w = kernel_tex_fetch(__objects, offset + 7);
|
||||
motion.post.x = kernel_tex_fetch(__objects, offset + 8);
|
||||
motion.post.y = kernel_tex_fetch(__objects, offset + 9);
|
||||
motion.post.z = kernel_tex_fetch(__objects, offset + 10);
|
||||
motion.post.w = kernel_tex_fetch(__objects, offset + 11);
|
||||
|
||||
transform_motion_interpolate(&tfm, &motion, time);
|
||||
|
||||
|
Reference in New Issue
Block a user