[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16152] branches/soc-2008-nicholasbishop/ source/blender/blenkernel/intern/multires.c: Little performance fix; was recalculating some data unneccesarily

Nicholas Bishop nicholasbishop at gmail.com
Sun Aug 17 19:18:25 CEST 2008


Revision: 16152
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16152
Author:   nicholasbishop
Date:     2008-08-17 19:18:25 +0200 (Sun, 17 Aug 2008)

Log Message:
-----------
Little performance fix; was recalculating some data unneccesarily

Modified Paths:
--------------
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c

Modified: branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c	2008-08-17 17:16:49 UTC (rev 16151)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c	2008-08-17 17:18:25 UTC (rev 16152)
@@ -1207,10 +1207,9 @@
 	mdisps = CustomData_get_layer(&me->fdata, CD_MDISPS);
 
 	if(mdisps) {
-		SubsurfModifierData smd;
 		const int lvl = MultiresDM_get_lvl(dm);
 		const int totlvl = MultiresDM_get_totlvl(dm);
-		DerivedMesh *orig, *subco_dm;
+		DerivedMesh *orig;
 		
 		mvert = CDDM_get_verts(dm);
 		medge = MultiresDM_get_mesh(dm)->medge;
@@ -1220,10 +1219,9 @@
 
 		if(lvl < totlvl) {
 			/* Propagate disps upwards */
-			DerivedMesh *final;
-			MVert *verts_new;
+			DerivedMesh *final, *subco_dm;
+			MVert *verts_new = NULL, *cur_lvl_orig_verts = NULL;
 			MultiresModifierData mmd;
-			MVert *cur_lvl_orig_verts = NULL;
 			
 			/* Regenerate the current level's vertex coordinates without sculpting */
 			mmd.totlvl = totlvl;
@@ -1241,18 +1239,13 @@
 
 			multires_subdisp(orig, me, final, lvl, totlvl, dm->getNumVerts(dm), dm->getNumEdges(dm),
 					 dm->getNumFaces(dm), 1);
-		}
-		else {
-			/* Regenerate the current level's vertex coordinates without displacements */
-			memset(&smd, 0, sizeof(SubsurfModifierData));
-			smd.levels = lvl - 1;
-			subco_dm = subsurf_make_derived_from_derived_with_multires(orig, &smd, NULL, 0, NULL, 0, 0);
 
-			multiresModifier_disp_run(dm, CDDM_get_verts(subco_dm), 1);
+			subco_dm->release(subco_dm);
 		}
+		else
+			multiresModifier_disp_run(dm, MultiresDM_get_subco(dm), 1);
 		
 		orig->release(orig);
-		subco_dm->release(subco_dm);
 	}
 }
 





More information about the Bf-blender-cvs mailing list