add new mask blend mode: 'Merge Subtract'. gives better results when using feather on overlapping masks when one subtracts from another.
This commit is contained in:
@@ -158,7 +158,7 @@ MaskLayer *BKE_mask_layer_new(Mask *mask, const char *name)
|
||||
|
||||
mask->masklay_tot++;
|
||||
|
||||
masklay->blend = MASK_BLEND_MERGE;
|
||||
masklay->blend = MASK_BLEND_MERGE_ADD;
|
||||
masklay->alpha = 1.0f;
|
||||
|
||||
return masklay;
|
||||
|
||||
@@ -1282,9 +1282,12 @@ float BKE_maskrasterize_handle_sample(MaskRasterHandle *mr_handle, const float x
|
||||
}
|
||||
|
||||
switch (layer->blend) {
|
||||
case MASK_BLEND_MERGE:
|
||||
case MASK_BLEND_MERGE_ADD:
|
||||
value += value_layer * (1.0f - value);
|
||||
break;
|
||||
case MASK_BLEND_MERGE_SUBTRACT:
|
||||
value -= value_layer * value;
|
||||
break;
|
||||
case MASK_BLEND_ADD:
|
||||
value += value_layer;
|
||||
break;
|
||||
|
||||
@@ -168,14 +168,15 @@ enum {
|
||||
|
||||
/* masklay->blend */
|
||||
enum {
|
||||
MASK_BLEND_ADD = 0,
|
||||
MASK_BLEND_SUBTRACT = 1,
|
||||
MASK_BLEND_LIGHTEN = 2,
|
||||
MASK_BLEND_DARKEN = 3,
|
||||
MASK_BLEND_MUL = 4,
|
||||
MASK_BLEND_REPLACE = 5,
|
||||
MASK_BLEND_DIFFERENCE = 6,
|
||||
MASK_BLEND_MERGE = 7
|
||||
MASK_BLEND_ADD = 0,
|
||||
MASK_BLEND_SUBTRACT = 1,
|
||||
MASK_BLEND_LIGHTEN = 2,
|
||||
MASK_BLEND_DARKEN = 3,
|
||||
MASK_BLEND_MUL = 4,
|
||||
MASK_BLEND_REPLACE = 5,
|
||||
MASK_BLEND_DIFFERENCE = 6,
|
||||
MASK_BLEND_MERGE_ADD = 7,
|
||||
MASK_BLEND_MERGE_SUBTRACT = 8
|
||||
};
|
||||
|
||||
/* masklay->blend_flag */
|
||||
|
||||
@@ -580,7 +580,8 @@ static void rna_def_maskSpline(BlenderRNA *brna)
|
||||
static void rna_def_mask_layer(BlenderRNA *brna)
|
||||
{
|
||||
static EnumPropertyItem masklay_blend_mode_items[] = {
|
||||
{MASK_BLEND_MERGE, "MERGE", 0, "Merge", ""},
|
||||
{MASK_BLEND_MERGE_ADD, "MERGE_ADD", 0, "Merge Add", ""},
|
||||
{MASK_BLEND_MERGE_SUBTRACT, "MERGE_SUBTRACT", 0, "Merge Subtract", ""},
|
||||
{MASK_BLEND_ADD, "ADD", 0, "Add", ""},
|
||||
{MASK_BLEND_SUBTRACT, "SUBTRACT", 0, "Subtract", ""},
|
||||
{MASK_BLEND_LIGHTEN, "LIGHTEN", 0, "Lighten", ""},
|
||||
|
||||
Reference in New Issue
Block a user