Fix #134634: Overlay: Mask not drawing on top of render result/viewer
Logical error in the overlay engine. Moved mask drawing before the early exit for viewer/render results. Pull Request: https://projects.blender.org/blender/blender/pulls/134660
This commit is contained in:
@@ -528,16 +528,6 @@ class MeshUVs : Overlay {
|
||||
const ToolSettings *tool_setting = state.scene->toolsettings;
|
||||
const SpaceImage *space_image = reinterpret_cast<const SpaceImage *>(state.space_data);
|
||||
::Image *image = space_image->image;
|
||||
const bool is_tiled_image = image && (image->source == IMA_SRC_TILED);
|
||||
const bool is_viewer = image && ELEM(image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE);
|
||||
/* Only disable UV drawing on top of render results.
|
||||
* Otherwise, show UVs even in the absence of active image. */
|
||||
enabled_ = !is_viewer;
|
||||
|
||||
if (!enabled_) {
|
||||
return;
|
||||
}
|
||||
|
||||
const bool space_mode_is_paint = space_image->mode == SI_MODE_PAINT;
|
||||
const bool space_mode_is_view = space_image->mode == SI_MODE_VIEW;
|
||||
const bool space_mode_is_mask = space_image->mode == SI_MODE_MASK;
|
||||
@@ -546,6 +536,31 @@ class MeshUVs : Overlay {
|
||||
const bool object_mode_is_edit = state.object_mode & OB_MODE_EDIT;
|
||||
const bool object_mode_is_paint = state.object_mode & OB_MODE_TEXTURE_PAINT;
|
||||
|
||||
const bool is_viewer = image && ELEM(image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE);
|
||||
const bool is_tiled_image = image && (image->source == IMA_SRC_TILED);
|
||||
|
||||
/* The mask overlay is always drawn when enabled, even on top of viewers. */
|
||||
{
|
||||
/* Mask Overlay. */
|
||||
show_mask_ = space_mode_is_mask && space_image->mask_info.mask &&
|
||||
space_image->mask_info.draw_flag & MASK_DRAWFLAG_OVERLAY;
|
||||
if (show_mask_) {
|
||||
mask_mode_ = eMaskOverlayMode(space_image->mask_info.overlay_mode);
|
||||
mask_id_ = (Mask *)DEG_get_evaluated_id(state.depsgraph, &space_image->mask_info.mask->id);
|
||||
}
|
||||
else {
|
||||
mask_id_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Only disable UV drawing on top of render results.
|
||||
* Otherwise, show UVs even in the absence of active image. */
|
||||
enabled_ = !is_viewer || show_mask_;
|
||||
|
||||
if (!enabled_) {
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
/* Edit UV Overlay. */
|
||||
show_uv_edit = space_mode_is_uv && object_mode_is_edit;
|
||||
@@ -605,18 +620,6 @@ class MeshUVs : Overlay {
|
||||
(brush->image_brush_type == IMAGE_PAINT_BRUSH_TYPE_CLONE) &&
|
||||
brush->clone.image;
|
||||
}
|
||||
{
|
||||
/* Mask Overlay. */
|
||||
show_mask_ = space_mode_is_mask && space_image->mask_info.mask &&
|
||||
space_image->mask_info.draw_flag & MASK_DRAWFLAG_OVERLAY;
|
||||
if (show_mask_) {
|
||||
mask_mode_ = eMaskOverlayMode(space_image->mask_info.overlay_mode);
|
||||
mask_id_ = (Mask *)DEG_get_evaluated_id(state.depsgraph, &space_image->mask_info.mask->id);
|
||||
}
|
||||
else {
|
||||
mask_id_ = nullptr;
|
||||
}
|
||||
}
|
||||
{
|
||||
/* UDIM Overlay. */
|
||||
/* TODO: Always enable this overlay even if overlays are disabled. */
|
||||
|
||||
Reference in New Issue
Block a user