diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index ad70e00a33c..f596085df51 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -239,7 +239,7 @@ static int can_pbvh_draw(Object *ob, DerivedMesh *dm) if(deformed) return 0; - return (cddm->mvert == me->mvert) || ob->sculpt->kb; + return dm->deformedOnly || ob->sculpt->kb; } static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm) diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 1730cea7343..792e61807b9 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -3382,18 +3382,13 @@ static void sculpt_flush_update(bContext *C) ARegion *ar = CTX_wm_region(C); MultiresModifierData *mmd = ss->multires; - if (!ss->cache) { - if(mmd) - multires_mark_as_modified(ob); - } - + if(mmd) + multires_mark_as_modified(ob); if(ob->derivedFinal) /* VBO no longer valid */ GPU_drawobject_free(ob->derivedFinal); - if (!ss->cache || !mmd) - DAG_id_tag_update(&ob->id, OB_RECALC_DATA); - if(ss->modifiers_active) { + DAG_id_tag_update(&ob->id, OB_RECALC_DATA); ED_region_tag_redraw(ar); } else { diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index cd93ae6f77b..ca1737fdf87 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -193,7 +193,7 @@ static void sculpt_undo_restore(bContext *C, ListBase *lb) if((mmd=sculpt_multires_active(scene, ob))) multires_mark_as_modified(ob); - tag_update= ((Mesh*)ob->data)->id.us > 1 || !mmd; + tag_update= ((Mesh*)ob->data)->id.us > 1; if(ss->modifiers_active) { Mesh *mesh= ob->data;