[Bf-blender-cvs] [d5213d70b7e] fracture_modifier: performance improvement for packing many islands, avoided unnecessary listbase findlink
Martin Felke
noreply at git.blender.org
Wed Jun 14 00:02:33 CEST 2017
Commit: d5213d70b7ec4d477db2530b9e2d30ae18ba3528
Author: Martin Felke
Date: Wed Jun 14 00:02:15 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rBd5213d70b7ec4d477db2530b9e2d30ae18ba3528
performance improvement for packing many islands, avoided unnecessary listbase findlink
===================================================================
M source/blender/blenkernel/intern/fracture.c
===================================================================
diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 63d649b466a..2a9e13c0515 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -2790,6 +2790,7 @@ int BKE_fracture_update_visual_mesh(FractureModifierData *fmd, Object *ob, bool
int i = 0, j = 0;
MDeformVert *dvert = NULL;
Mesh *me = (Mesh*)ob->data;
+ Shard *s, *t;
if (dm)
{
@@ -2813,16 +2814,19 @@ int BKE_fracture_update_visual_mesh(FractureModifierData *fmd, Object *ob, bool
CustomData_merge(&dm->loopData, &me->ldata, CD_MASK_MLOOPUV, CD_CALLOC, dm->getNumLoops(dm));
CustomData_merge(&dm->polyData, &me->pdata, CD_MASK_MTEXPOLY, CD_CALLOC, dm->getNumPolys(dm));
+ s = fmd->frac_mesh->shard_map.first;
+ t = fmd->pack_storage.first;
+
//update existing island's vert refs, if any...should have used indexes instead :S
for (mi = fmd->meshIslands.first; mi; mi = mi->next)
{
MVert *pvert = mi->physics_mesh->getVertArray(mi->physics_mesh);
float inv_size[3] = {1.0f, 1.0f, 1.0f};
- Shard *s = BLI_findlink(&fmd->frac_mesh->shard_map, mi->id);
- Shard *t = BLI_findlink(&fmd->pack_storage, mi->id);
+ //Shard *s = BLI_findlink(&fmd->frac_mesh->shard_map, mi->id);
+ //Shard *t = BLI_findlink(&fmd->pack_storage, mi->id);
- if (!s)
- continue;
+ //if (!s)
+ // continue;
//CustomData_copy_data(&dm->loopData, &me->ldata, loopstart, loopstart, s->totloop);
//CustomData_copy_data(&dm->polyData, &me->pdata, polystart, polystart, s->totpoly);
@@ -2939,6 +2943,14 @@ int BKE_fracture_update_visual_mesh(FractureModifierData *fmd, Object *ob, bool
polystart += totpoly;
matstart += mi->totcol;
loopstart += s->totloop;
+
+ if (s) {
+ s = s->next;
+ }
+
+ if (t) {
+ t = t->next;
+ }
}
return vertstart;
More information about the Bf-blender-cvs
mailing list