[Bf-blender-cvs] [1c04d22ebf8] blender-v2.93-release: Fix T93995: Cycles camera motion blur not working in right stereo view

Brecht Van Lommel noreply at git.blender.org
Tue Jan 11 16:00:24 CET 2022


Commit: 1c04d22ebf803d19bd9174a3a57249513fbe7093
Author: Brecht Van Lommel
Date:   Wed Dec 15 20:25:41 2021 +0100
Branches: blender-v2.93-release
https://developer.blender.org/rB1c04d22ebf803d19bd9174a3a57249513fbe7093

Fix T93995: Cycles camera motion blur not working in right stereo view

Thanks to Michael (michael64) for identifying the solution.

Ref D13567

===================================================================

M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/blender/blender_sync.h

===================================================================

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 89854f6a0e5..6293718a988 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -524,6 +524,13 @@ void BlenderSession::render(BL::Depsgraph &b_depsgraph_)
     /* set the current view */
     b_engine.active_view_set(b_rview_name.c_str());
 
+    /* Force update in this case, since the camera transform on each frame changes
+     * in different views. This could be optimized by somehow storing the animated
+     * camera transforms separate from the fixed stereo transform. */
+    if ((scene->need_motion() != Scene::MOTION_NONE) && view_index > 0) {
+      sync->tag_update();
+    }
+
     /* update scene */
     BL::Object b_camera_override(b_engine.camera_override());
     sync->sync_camera(b_render, b_camera_override, width, height, b_rview_name.c_str());
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 3e8a7f8bb53..c2aa4703a6f 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -92,6 +92,11 @@ void BlenderSync::reset(BL::BlendData &b_data, BL::Scene &b_scene)
   this->b_scene = b_scene;
 }
 
+void BlenderSync::tag_update()
+{
+  has_updates_ = true;
+}
+
 /* Sync */
 
 void BlenderSync::sync_recalc(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d)
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index 15a10f2b46b..55c2904ddf9 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -64,6 +64,8 @@ class BlenderSync {
 
   void reset(BL::BlendData &b_data, BL::Scene &b_scene);
 
+  void tag_update();
+
   /* sync */
   void sync_recalc(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d);
   void sync_data(BL::RenderSettings &b_render,
@@ -265,7 +267,6 @@ class BlenderSync {
 
   Progress &progress;
 
- protected:
   /* Indicates that `sync_recalc()` detected changes in the scene.
    * If this flag is false then the data is considered to be up-to-date and will not be
    * synchronized at all. */



More information about the Bf-blender-cvs mailing list