diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-07-21 16:36:35 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-07-21 18:40:03 +0300 |
commit | dc3563ff4801907ec8cd21a1589f0cb56d021a8f (patch) | |
tree | 88743d23f009deb1d3a3cc379ba1d67f5116a91e /intern/cycles/blender/blender_session.cpp | |
parent | 1df42798d46d031c7666a75b47faa0d20fc965ef (diff) |
Cycles: Implement camera zoom motion blur
Works totally similar to camera motion blur and majority of the changes are
related on just passing extra arguments to sync() functions.
Couple of things still to look into:
- Motion pass will not include motion caused by the zoom.
- Only perspective cameras are supported currently.
- Motion is being interpolated on projected coordinates, which might give
different results from constructing projection matrix from interpolated
field of view.
This could be good enough for us, but we need to consider improving this
at some point.
Reviewers: juicyfruit, dingto
Reviewed By: dingto
Differential Revision: https://developer.blender.org/D1383
Diffstat (limited to 'intern/cycles/blender/blender_session.cpp')
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index e1d5e1310d5..8903801d38d 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -122,7 +122,12 @@ void BlenderSession::create_session() if(session_pause == false) { /* full data sync */ sync->sync_view(b_v3d, b_rv3d, width, height); - sync->sync_data(b_v3d, b_engine.camera_override(), &python_thread_state); + sync->sync_data(b_render, + b_v3d, + b_engine.camera_override(), + width, height, + &python_thread_state, + b_rlay_name.c_str()); } } else { @@ -477,7 +482,12 @@ void BlenderSession::render() /* update scene */ sync->sync_camera(b_render, b_engine.camera_override(), width, height); - sync->sync_data(b_v3d, b_engine.camera_override(), &python_thread_state, b_rlay_name.c_str()); + sync->sync_data(b_render, + b_v3d, + b_engine.camera_override(), + width, height, + &python_thread_state, + b_rlay_name.c_str()); /* update number of samples per layer */ int samples = sync->get_layer_samples(); @@ -570,7 +580,12 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, const in /* update scene */ sync->sync_camera(b_render, b_engine.camera_override(), width, height); - sync->sync_data(b_v3d, b_engine.camera_override(), &python_thread_state); + sync->sync_data(b_render, + b_v3d, + b_engine.camera_override(), + width, height, + &python_thread_state, + b_rlay_name.c_str()); /* get buffer parameters */ SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background); @@ -712,7 +727,12 @@ void BlenderSession::synchronize() } /* data and camera synchronize */ - sync->sync_data(b_v3d, b_engine.camera_override(), &python_thread_state); + sync->sync_data(b_render, + b_v3d, + b_engine.camera_override(), + width, height, + &python_thread_state, + b_rlay_name.c_str()); if(b_rv3d) sync->sync_view(b_v3d, b_rv3d, width, height); |