[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16091] branches/soc-2008-nicholasbishop/ source/blender: Better performance for loading old multires files by blocking multires updates during subdivision .
Nicholas Bishop
nicholasbishop at gmail.com
Thu Aug 14 01:36:23 CEST 2008
Revision: 16091
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16091
Author: nicholasbishop
Date: 2008-08-14 01:36:23 +0200 (Thu, 14 Aug 2008)
Log Message:
-----------
Better performance for loading old multires files by blocking multires updates during subdivision.
Modified Paths:
--------------
branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
branches/soc-2008-nicholasbishop/source/blender/blenloader/intern/readfile.c
branches/soc-2008-nicholasbishop/source/blender/src/buttons_editing.c
Modified: branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h 2008-08-13 23:31:29 UTC (rev 16090)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h 2008-08-13 23:36:23 UTC (rev 16091)
@@ -135,7 +135,7 @@
int multiresModifier_switch_level(struct Object *ob, const int);
void multiresModifier_join(struct Object *ob);
-void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob);
+void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int updateblock);
void multiresModifier_setLevel(void *mmd_v, void *ob_v);
int multiresModifier_reshape(struct MultiresModifierData *mmd, struct Object *dst, struct Object *src);
Modified: branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c 2008-08-13 23:31:29 UTC (rev 16090)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c 2008-08-13 23:36:23 UTC (rev 16091)
@@ -1181,7 +1181,7 @@
/* TODO: subdivision should be doable in one step rather than iteratively. */
for(i = mmd->totlvl; i < highest_lvl; ++i)
- multiresModifier_subdivide(mmd, base->object);
+ multiresModifier_subdivide(mmd, base->object, 0);
}
}
base = base->next;
@@ -1466,13 +1466,13 @@
mrdm->release(mrdm);
}
-void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob)
+void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updateblock)
{
DerivedMesh *final = NULL;
int totsubvert, totsubface, totsubedge;
Mesh *me = get_mesh(ob);
MDisps *mdisps;
- int i, slo, shi;
+ int i;
if(mmd->totlvl == multires_max_levels) {
// TODO
@@ -1484,15 +1484,11 @@
++mmd->lvl;
++mmd->totlvl;
- slo = multires_side_tot[mmd->totlvl - 2];
- shi = multires_side_tot[mmd->totlvl - 1];
-
mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
if(!mdisps)
mdisps = CustomData_add_layer(&me->fdata, CD_MDISPS, CD_DEFAULT, NULL, me->totface);
-
- if(mdisps->disps) {
+ if(mdisps->disps && !updateblock) {
DerivedMesh *orig, *mrdm;
MultiresModifierData mmd_sub;
@@ -1523,7 +1519,7 @@
}
- if(final) {
+ if(final && !updateblock) {
DerivedMesh *orig;
orig = CDDM_from_mesh(me, NULL);
Modified: branches/soc-2008-nicholasbishop/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenloader/intern/readfile.c 2008-08-13 23:31:29 UTC (rev 16090)
+++ branches/soc-2008-nicholasbishop/source/blender/blenloader/intern/readfile.c 2008-08-13 23:36:23 UTC (rev 16091)
@@ -7793,7 +7793,7 @@
BLI_insertlinkbefore(&ob->modifiers, md, mmd);
for(i = 1; i < me->mr->level_count; ++i)
- multiresModifier_subdivide(mmd, ob);
+ multiresModifier_subdivide(mmd, ob, 1);
mmd->lvl = mmd->totlvl;
orig = CDDM_from_mesh(me, NULL);
Modified: branches/soc-2008-nicholasbishop/source/blender/src/buttons_editing.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/src/buttons_editing.c 2008-08-13 23:31:29 UTC (rev 16090)
+++ branches/soc-2008-nicholasbishop/source/blender/src/buttons_editing.c 2008-08-13 23:36:23 UTC (rev 16091)
@@ -1666,7 +1666,7 @@
MultiresModifierData *mmd = mmd_v;
if(mmd && ob_v) {
- multiresModifier_subdivide(mmd, ob_v);
+ multiresModifier_subdivide(mmd, ob_v, 0);
BIF_undo_push("Multires subdivide");
}
}
More information about the Bf-blender-cvs
mailing list