From ade35bac9355679f0966249b7d65992ef024eb04 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 20 Nov 2015 14:42:34 +0500 Subject: Cycles: Implement rolling shutter effect This is an attempt to emulate real CMOS cameras which reads sensor by scanlines and hence different scanlines are sampled at a different moment in time, which causes so called rolling shutter effect. This effect will, for example, make vertical straight lines being curved when doing horizontal camera pan. This is controlled by the Shutter Type option in the Motion Blur panel. Additionally, since scanline sampling is not instantaneous it's possible to have motion blur on top of rolling shutter. This is controlled by the Rolling Shutter Time slider which controls balance between pure rolling shutter effect and pure motion blur effect. Reviewers: brecht, juicyfruit, dingto, keir Differential Revision: https://developer.blender.org/D1624 --- intern/cycles/render/camera.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'intern/cycles/render/camera.cpp') diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp index 33a5c004033..9c17a11e0f1 100644 --- a/intern/cycles/render/camera.cpp +++ b/intern/cycles/render/camera.cpp @@ -109,6 +109,10 @@ Camera::Camera() for(int i = 0; i < num_shutter_points; ++i) { shutter_curve[i] = 1.0f; } + + /* Initialize rolling shutter effect. */ + rolling_shutter_type = ROLLING_SHUTTER_NONE; + rolling_shutter_duration = 0.1f; } Camera::~Camera() @@ -357,6 +361,10 @@ void Camera::device_update(Device *device, DeviceScene *dscene, Scene *scene) /* Camera in volume. */ kcam->is_inside_volume = 0; + /* Rolling shutter effect */ + kcam->rolling_shutter_type = rolling_shutter_type; + kcam->rolling_shutter_duration = rolling_shutter_duration; + previous_need_motion = need_motion; } -- cgit v1.2.3