From a5f60e933755357bb54f821c5011ebc108de772c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 12 Jun 2013 20:47:48 +0000 Subject: [PATCH] Fix #35723: cycles motion blur rendering issue after recent optimizations to skip some unneeded object syncing. --- intern/cycles/blender/blender_session.cpp | 8 ++++++-- intern/cycles/blender/blender_sync.h | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index c981e379333..ecdc631e39a 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -102,12 +102,16 @@ void BlenderSession::create_session() /* create sync */ sync = new BlenderSync(b_engine, b_data, b_scene, scene, !background, session->progress, session_params.device.type == DEVICE_CPU); - /* for final render we will do data sync per render layer */ if(b_v3d) { + /* full data sync */ sync->sync_data(b_v3d, b_engine.camera_override()); sync->sync_view(b_v3d, b_rv3d, width, height); } else { + /* for final render we will do full data sync per render layer, only + * do some basic syncing here, no objects or materials for speed */ + sync->sync_render_layers(b_v3d, NULL); + sync->sync_integrator(); sync->sync_camera(b_render, b_engine.camera_override(), width, height); } @@ -373,8 +377,8 @@ void BlenderSession::render() scene->integrator->tag_update(scene); /* update scene */ - sync->sync_data(b_v3d, b_engine.camera_override(), b_rlay_name.c_str()); sync->sync_camera(b_render, b_engine.camera_override(), width, height); + sync->sync_data(b_v3d, b_engine.camera_override(), b_rlay_name.c_str()); /* update number of samples per layer */ int samples = sync->get_layer_samples(); diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index 5b63042a682..ed1f2b9d70f 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -56,6 +56,8 @@ public: /* sync */ bool sync_recalc(); void sync_data(BL::SpaceView3D b_v3d, BL::Object b_override, const char *layer = 0); + void sync_render_layers(BL::SpaceView3D b_v3d, const char *layer); + void sync_integrator(); void sync_camera(BL::RenderSettings b_render, BL::Object b_override, int width, int height); void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height); int get_layer_samples() { return render_layer.samples; } @@ -74,10 +76,8 @@ private: void sync_objects(BL::SpaceView3D b_v3d, int motion = 0); void sync_motion(BL::SpaceView3D b_v3d, BL::Object b_override); void sync_film(); - void sync_integrator(); void sync_view(); void sync_world(bool update_all); - void sync_render_layers(BL::SpaceView3D b_v3d, const char *layer); void sync_shaders(); void sync_curve_settings();