diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-04-26 17:17:35 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-04-26 17:17:35 +0300 |
commit | d4827cfa81214f095f4d6a0e644bc2f8328fa77c (patch) | |
tree | 8a8c46ed936371ed5e9b665440a4a74eef98782c /source/blender/draw | |
parent | 86914e713347082aed8d77b663a02068c03b6313 (diff) |
Fix T58966 Sculpted changes dissapear visually when selecting a second object
Display sculpt mesh if there is a sculpt session.
Diffstat (limited to 'source/blender/draw')
4 files changed, 6 insertions, 7 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c index 86a87121683..a7eae2e2a41 100644 --- a/source/blender/draw/engines/eevee/eevee_materials.c +++ b/source/blender/draw/engines/eevee/eevee_materials.c @@ -1615,11 +1615,10 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, const bool do_cull = (draw_ctx->v3d && (draw_ctx->v3d->shading.flag & V3D_SHADING_BACKFACE_CULLING)); const bool is_active = (ob == draw_ctx->obact); - const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; + const bool is_sculpt_mode = (ob->sculpt != NULL); /* For now just force fully shaded with eevee when supported. */ - const bool is_sculpt_mode_draw = is_sculpt_mode && - ((ob->sculpt && ob->sculpt->pbvh) && - (BKE_pbvh_type(ob->sculpt->pbvh) != PBVH_FACES)); + const bool is_sculpt_mode_draw = ob->sculpt && ob->sculpt->pbvh && + BKE_pbvh_type(ob->sculpt->pbvh) != PBVH_FACES; const bool is_default_mode_shader = is_sculpt_mode; /* First get materials for this mesh. */ diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c index efbe33b45da..5d7bdc72546 100644 --- a/source/blender/draw/engines/workbench/workbench_deferred.c +++ b/source/blender/draw/engines/workbench/workbench_deferred.c @@ -935,7 +935,7 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob) WORKBENCH_MaterialData *material; if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) { const bool is_active = (ob == draw_ctx->obact); - const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; + const bool is_sculpt_mode = (ob->sculpt != NULL); const bool use_hide = is_active && DRW_object_use_hide_faces(ob); const int materials_len = MAX2(1, (is_sculpt_mode ? 1 : ob->totcol)); const Mesh *me = (ob->type == OB_MESH) ? ob->data : NULL; diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c index 1117ee0126b..b15131bd9a6 100644 --- a/source/blender/draw/engines/workbench/workbench_forward.c +++ b/source/blender/draw/engines/workbench/workbench_forward.c @@ -566,7 +566,7 @@ void workbench_forward_cache_populate(WORKBENCH_Data *vedata, Object *ob) WORKBENCH_MaterialData *material; if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) { const bool is_active = (ob == draw_ctx->obact); - const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; + const bool is_sculpt_mode = (ob->sculpt != NULL); bool is_drawn = false; if (!is_sculpt_mode && TEXTURE_DRAWING_ENABLED(wpd) && ELEM(ob->type, OB_MESH)) { diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c index 4d583066f44..a0791e4496d 100644 --- a/source/blender/draw/modes/overlay_mode.c +++ b/source/blender/draw/modes/overlay_mode.c @@ -360,7 +360,7 @@ static void overlay_cache_populate(void *vedata, Object *ob) (((ob != draw_ctx->object_edit) && !is_edit_mode) || has_edit_mesh_cage) || ob->type != OB_MESH) { const bool is_active = (ob == draw_ctx->obact); - const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; + const bool is_sculpt_mode = (ob->sculpt != NULL); const bool all_wires = (ob->dtx & OB_DRAW_ALL_EDGES); const bool is_wire = (ob->dt < OB_SOLID); const bool use_coloring = (pd->show_overlays && !is_edit_mode && !is_sculpt_mode && |