[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41320] branches/bmesh/blender/source/ blender/modifiers/intern/MOD_array.c: perf improvement for array modifiers
Andrew Wiggin
ender79bl at gmail.com
Thu Oct 27 19:39:16 CEST 2011
Revision: 41320
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41320
Author: ender79
Date: 2011-10-27 17:39:15 +0000 (Thu, 27 Oct 2011)
Log Message:
-----------
perf improvement for array modifiers
Modified Paths:
--------------
branches/bmesh/blender/source/blender/modifiers/intern/MOD_array.c
Modified: branches/bmesh/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- branches/bmesh/blender/source/blender/modifiers/intern/MOD_array.c 2011-10-27 15:50:51 UTC (rev 41319)
+++ branches/bmesh/blender/source/blender/modifiers/intern/MOD_array.c 2011-10-27 17:39:15 UTC (rev 41320)
@@ -392,6 +392,15 @@
if(count < 1)
count = 1;
+ /* BMESH_TODO: bumping up the stack level avoids computing the normals
+ after every top-level operator execution (and this modifier has the
+ potential to execute a *lot* of top-level BMOps. There should be a
+ cleaner way to do this. One possibility: a "mirror" BMOp would
+ certainly help by compressing it all into one top-level BMOp that
+ executes a lot of second-level BMOps. */
+ BMO_push(em->bm, NULL);
+ bmesh_begin_edit(em->bm, 0);
+
BMO_Init_Op(&weldop, "weldverts");
BMO_InitOpf(em->bm, &op, "dupe geom=%avef");
oldop = op;
@@ -474,6 +483,10 @@
BMO_Finish_Op(em->bm, &weldop);
+ /* Bump the stack level back down to match the adjustment up above */
+ bmesh_end_edit(em->bm, 0);
+ BMO_pop(em->bm);
+
BMEdit_RecalcTesselation(em);
cddm = CDDM_from_BMEditMesh(em, NULL, 0);
More information about the Bf-blender-cvs
mailing list