diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-04-15 21:14:01 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-04-15 21:32:16 +0300 |
commit | 6675fd6b52554cf4ed63d5a740dfe60525cf1f3a (patch) | |
tree | bef9182349afb714136bdb2ebb55aef65df07d5c /source/blender/blenkernel/intern/paint.c | |
parent | 7f4b6a345e59bd4b05c8cab08d0c618eea9f827d (diff) |
dyntopo: don't allocate tessfaces while sculpting
Tessellation data isn't used for drawing or sculpting.
This frees up some memory ~approx 10% in own tests.
Also slight spee-up since it avoids calculating it in the first place.
Diffstat (limited to 'source/blender/blenkernel/intern/paint.c')
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index b45e6b81ec8..fd5d14b6cfc 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -566,13 +566,9 @@ void paint_calculate_rake_rotation(UnifiedPaintSettings *ups, Brush *brush, cons void BKE_sculptsession_free_deformMats(SculptSession *ss) { - if (ss->orig_cos) MEM_freeN(ss->orig_cos); - if (ss->deform_cos) MEM_freeN(ss->deform_cos); - if (ss->deform_imats) MEM_freeN(ss->deform_imats); - - ss->orig_cos = NULL; - ss->deform_cos = NULL; - ss->deform_imats = NULL; + MEM_SAFE_FREE(ss->orig_cos); + MEM_SAFE_FREE(ss->deform_cos); + MEM_SAFE_FREE(ss->deform_imats); } /* Write out the sculpt dynamic-topology BMesh to the Mesh */ @@ -772,7 +768,12 @@ void BKE_sculpt_update_mesh_elements(Scene *scene, Sculpt *sd, Object *ob, } /* BMESH ONLY --- at some point we should move sculpt code to use polygons only - but for now it needs tessfaces */ - BKE_mesh_tessface_ensure(me); + if (ss->bm) { + BKE_mesh_tessface_clear(me); + } + else { + BKE_mesh_tessface_ensure(me); + } if (!mmd) ss->kb = BKE_keyblock_from_object(ob); else ss->kb = NULL; |