diff options
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_multires.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c index 13028953c1c..ae5ac9ac718 100644 --- a/source/blender/modifiers/intern/MOD_multires.c +++ b/source/blender/modifiers/intern/MOD_multires.c @@ -100,10 +100,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, cddm = CDDM_copy(result); - /* copy hidden flag to vertices */ + /* copy hidden/masks to vertices */ if (!useRenderParams) { struct MDisps *mdisps; + struct GridPaintMask *grid_paint_mask; + mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS); + grid_paint_mask = CustomData_get_layer(&me->ldata, CD_GRID_PAINT_MASK); + if (mdisps) { subsurf_copy_grid_hidden(result, me->mpoly, cddm->getVertArray(cddm), @@ -116,6 +120,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, cddm->getPolyArray(cddm), cddm->getNumPolys(cddm)); } + if(grid_paint_mask) { + float *paint_mask = CustomData_add_layer(&cddm->vertData, + CD_PAINT_MASK, + CD_CALLOC, NULL, + cddm->getNumVerts(cddm)); + + subsurf_copy_grid_paint_mask(result, me->mpoly, + paint_mask, grid_paint_mask); + } } result->release(result); |