[Bf-blender-cvs] [1b1b71f] master: Fix T40149: cycles motion blur render problem with multiple render layers.

Brecht Van Lommel noreply at git.blender.org
Mon May 12 18:38:30 CEST 2014


Commit: 1b1b71f6970b54d70c99e9f616f93096df261e29
Author: Brecht Van Lommel
Date:   Mon May 12 18:36:01 2014 +0200
https://developer.blender.org/rB1b1b71f6970b54d70c99e9f616f93096df261e29

Fix T40149: cycles motion blur render problem with multiple render layers.

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

M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/blender/blender_sync.cpp

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

diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 8351487..27ea552 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -616,6 +616,11 @@ void BlenderSync::sync_mesh_motion(BL::Object b_ob, Object *object, float motion
 
 	mesh_motion_synced.insert(mesh);
 
+	/* ensure we only motion sync meshes that also had mesh synced, to avoid
+	 * unnecessary work and to ensure that its attributes were clear */
+	if(mesh_synced.find(mesh) == mesh_synced.end())
+		return;
+
 	/* for motion pass always compute, for motion blur it can be disabled */
 	int time_index = 0;
 
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index 1676476..ec195d8 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -446,7 +446,6 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d, float motion_time)
 		light_map.pre_sync();
 		mesh_map.pre_sync();
 		object_map.pre_sync();
-		mesh_synced.clear();
 		particle_system_map.pre_sync();
 		motion_times.clear();
 	}
@@ -536,7 +535,6 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d, float motion_time)
 			scene->object_manager->tag_update(scene);
 		if(particle_system_map.post_sync())
 			scene->particle_system_manager->tag_update(scene);
-		mesh_synced.clear();
 	}
 
 	if(motion)
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 1f5e32a..555692d 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -142,8 +142,13 @@ void BlenderSync::sync_data(BL::SpaceView3D b_v3d, BL::Object b_override, void *
 	sync_film();
 	sync_shaders();
 	sync_curve_settings();
+
+	mesh_synced.clear(); /* use for objects and motion sync */
+
 	sync_objects(b_v3d);
 	sync_motion(b_v3d, b_override, python_thread_state);
+
+	mesh_synced.clear();
 }
 
 /* Integrator */




More information about the Bf-blender-cvs mailing list