GPencil: Add option to disable masks in view layer
This patch adds an option in the Layers > Relations panel called "Disable Masks in Render". When checked, no masks on this layer are included in the render. Example: | {F10087680} | {F10087681} | See T88202 for why this is needed. Reviewed By: antoniov Maniphest Tasks: T88202 Differential Revision: https://developer.blender.org/D11234
This commit is contained in:
parent
a6f3bb36df
commit
e459a25e6c
@ -856,7 +856,11 @@ class GreasePencilLayerRelationsPanel:
|
||||
|
||||
col = layout.row(align=True)
|
||||
col.prop_search(gpl, "viewlayer_render", scene, "view_layers", text="View Layer")
|
||||
|
||||
|
||||
col = layout.row(align=True)
|
||||
# Only enable this property when a view layer is selected.
|
||||
col.enabled = bool(gpl.viewlayer_render)
|
||||
col.prop(gpl, "disable_masks_viewlayer")
|
||||
|
||||
class GreasePencilLayerDisplayPanel:
|
||||
|
||||
|
@ -2624,6 +2624,11 @@ static bool gpencil_is_layer_mask(ViewLayer *view_layer, bGPdata *gpd, bGPDlayer
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Skip if masks are disabled for this view layer. */
|
||||
if (gpl->flag & GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER) {
|
||||
continue;
|
||||
}
|
||||
|
||||
LISTBASE_FOREACH (bGPDlayer_Mask *, mask, &gpl->mask_layers) {
|
||||
if (STREQ(gpl_mask->info, mask->name)) {
|
||||
return true;
|
||||
|
@ -274,7 +274,13 @@ GPENCIL_tLayer *gpencil_layer_cache_add(GPENCIL_PrivateData *pd,
|
||||
const bool override_vertcol = (pd->v3d_color_type != -1);
|
||||
const bool is_vert_col_mode = (pd->v3d_color_type == V3D_SHADING_VERTEX_COLOR) ||
|
||||
GPENCIL_VERTEX_MODE(gpd) || pd->is_render;
|
||||
bool is_masked = (gpl->flag & GP_LAYER_USE_MASK) && !BLI_listbase_is_empty(&gpl->mask_layers);
|
||||
const bool is_viewlayer_render = pd->is_render && (gpl->viewlayername[0] != '\0') &&
|
||||
STREQ(pd->view_layer->name, gpl->viewlayername);
|
||||
const bool disable_masks_render = is_viewlayer_render &&
|
||||
(gpl->flag & GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER);
|
||||
bool is_masked = disable_masks_render ? false :
|
||||
(gpl->flag & GP_LAYER_USE_MASK) &&
|
||||
!BLI_listbase_is_empty(&gpl->mask_layers);
|
||||
|
||||
float vert_col_opacity = (override_vertcol) ?
|
||||
(is_vert_col_mode ? pd->vertex_paint_opacity : 0.0f) :
|
||||
|
@ -560,6 +560,8 @@ typedef enum eGPDlayer_Flag {
|
||||
GP_LAYER_USE_MASK = (1 << 13), /*TODO: DEPRECATED */
|
||||
/* Ruler Layer */
|
||||
GP_LAYER_IS_RULER = (1 << 14),
|
||||
/* Disable masks in viewlayer render */
|
||||
GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER = (1 << 15),
|
||||
} eGPDlayer_Flag;
|
||||
|
||||
/** #bGPDlayer.onion_flag */
|
||||
|
@ -2114,6 +2114,12 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
|
||||
"ViewLayer",
|
||||
"Only include Layer in this View Layer render output (leave blank to include always)");
|
||||
|
||||
prop = RNA_def_property(srna, "disable_masks_viewlayer", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Disable Masks in Render", "Exclude the mask layers when rendering the viewlayer");
|
||||
RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update");
|
||||
|
||||
/* blend mode */
|
||||
prop = RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "blend_mode");
|
||||
|
Loading…
Reference in New Issue
Block a user