[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37045] branches/cycles/intern/cycles/ blender: Cycles: fix instanced mesh sync being a bit too slow.

Brecht Van Lommel brechtvanlommel at pandora.be
Tue May 31 12:57:43 CEST 2011


Revision: 37045
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37045
Author:   blendix
Date:     2011-05-31 10:57:43 +0000 (Tue, 31 May 2011)
Log Message:
-----------
Cycles: fix instanced mesh sync being a bit too slow.

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

Modified: branches/cycles/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-05-31 10:41:01 UTC (rev 37044)
+++ branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-05-31 10:57:43 UTC (rev 37045)
@@ -252,6 +252,12 @@
 		}
 	}
 
+	/* ensure we only sync instanced meshes once */
+	if(mesh_synced.find(mesh) != mesh_synced.end())
+		return mesh;
+	
+	mesh_synced.insert(mesh);
+
 	/* create derived mesh */
 	BL::Mesh b_mesh = object_to_mesh(b_ob, b_scene, true, !preview);
 	/* todo: this will crash on non-mesh types! */

Modified: branches/cycles/intern/cycles/blender/blender_object.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_object.cpp	2011-05-31 10:41:01 UTC (rev 37044)
+++ branches/cycles/intern/cycles/blender/blender_object.cpp	2011-05-31 10:57:43 UTC (rev 37045)
@@ -139,6 +139,7 @@
 	light_map.pre_sync();
 	mesh_map.pre_sync();
 	object_map.pre_sync();
+	mesh_synced.clear();
 
 	/* object loop */
 	BL::Scene::objects_iterator b_ob;
@@ -177,6 +178,7 @@
 		scene->mesh_manager->tag_update(scene);
 	if(object_map.post_sync())
 		scene->object_manager->tag_update(scene);
+	mesh_synced.clear();
 }
 
 CCL_NAMESPACE_END

Modified: branches/cycles/intern/cycles/blender/blender_sync.h
===================================================================
--- branches/cycles/intern/cycles/blender/blender_sync.h	2011-05-31 10:41:01 UTC (rev 37044)
+++ branches/cycles/intern/cycles/blender/blender_sync.h	2011-05-31 10:57:43 UTC (rev 37045)
@@ -92,6 +92,7 @@
 	id_map<ObjectKey, Object> object_map;
 	id_map<void*, Mesh> mesh_map;
 	id_map<ObjectKey, Light> light_map;
+	set<Mesh*> mesh_synced;
 	void *world_map;
 	bool world_recalc;
 




More information about the Bf-blender-cvs mailing list