[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60829] trunk/blender/intern/cycles/ blender: Fix cycles mesh synchronization being too slow with vector blur and duplis .

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Oct 17 18:05:57 CEST 2013


Revision: 60829
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60829
Author:   blendix
Date:     2013-10-17 16:05:57 +0000 (Thu, 17 Oct 2013)
Log Message:
-----------
Fix cycles mesh synchronization being too slow with vector blur and duplis.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_mesh.cpp
    trunk/blender/intern/cycles/blender/blender_object.cpp
    trunk/blender/intern/cycles/blender/blender_sync.h

Modified: trunk/blender/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_mesh.cpp	2013-10-17 15:51:12 UTC (rev 60828)
+++ trunk/blender/intern/cycles/blender/blender_mesh.cpp	2013-10-17 16:05:57 UTC (rev 60829)
@@ -539,6 +539,12 @@
 	if(!size || !ccl::BKE_object_is_deform_modified(b_ob, b_scene, preview))
 		return;
 
+	/* ensure we only sync instanced meshes once */
+	if(mesh_motion_synced.find(mesh) != mesh_motion_synced.end())
+		return;
+
+	mesh_motion_synced.insert(mesh);
+
 	/* get derived mesh */
 	BL::Mesh b_mesh = object_to_mesh(b_data, b_ob, b_scene, true, !preview, false);
 

Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp	2013-10-17 15:51:12 UTC (rev 60828)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp	2013-10-17 16:05:57 UTC (rev 60829)
@@ -405,6 +405,9 @@
 		mesh_synced.clear();
 		particle_system_map.pre_sync();
 	}
+	else {
+		mesh_motion_synced.clear();
+	}
 
 	/* object loop */
 	BL::Scene::objects_iterator b_ob;
@@ -492,6 +495,9 @@
 			scene->particle_system_manager->tag_update(scene);
 		mesh_synced.clear();
 	}
+
+	if(motion)
+		mesh_motion_synced.clear();
 }
 
 void BlenderSync::sync_motion(BL::SpaceView3D b_v3d, BL::Object b_override)

Modified: trunk/blender/intern/cycles/blender/blender_sync.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.h	2013-10-17 15:51:12 UTC (rev 60828)
+++ trunk/blender/intern/cycles/blender/blender_sync.h	2013-10-17 16:05:57 UTC (rev 60829)
@@ -108,6 +108,7 @@
 	id_map<ObjectKey, Light> light_map;
 	id_map<ParticleSystemKey, ParticleSystem> particle_system_map;
 	set<Mesh*> mesh_synced;
+	set<Mesh*> mesh_motion_synced;
 	void *world_map;
 	bool world_recalc;
 




More information about the Bf-blender-cvs mailing list