patch [#32195] MASKS: Canonical Porter Duff algorithm for merge missing.

from Troy Sobotka (sobotka)

This gives nicer blending then 'ADD', setting as default for new masks.
This commit is contained in:
Campbell Barton 2012-07-28 11:36:01 +00:00
parent f405d8fa53
commit 3ec212fd71
4 changed files with 7 additions and 1 deletions

@ -156,6 +156,7 @@ MaskLayer *BKE_mask_layer_new(Mask *mask, const char *name)
mask->masklay_tot++;
masklay->blend = MASK_BLEND_MERGE;
masklay->alpha = 1.0f;
return masklay;

@ -1251,6 +1251,9 @@ float BKE_maskrasterize_handle_sample(MaskRasterHandle *mr_handle, const float x
}
switch (layer->blend) {
case MASK_BLEND_MERGE:
value += value_layer * (1.0f - value);
break;
case MASK_BLEND_ADD:
value += value_layer;
break;

@ -173,7 +173,8 @@ enum {
MASK_BLEND_DARKEN = 3,
MASK_BLEND_MUL = 4,
MASK_BLEND_REPLACE = 5,
MASK_BLEND_DIFFERENCE = 6
MASK_BLEND_DIFFERENCE = 6,
MASK_BLEND_MERGE = 7
};
/* masklay->blend_flag */

@ -573,6 +573,7 @@ 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_ADD, "ADD", 0, "Add", ""},
{MASK_BLEND_SUBTRACT, "SUBTRACT", 0, "Subtract", ""},
{MASK_BLEND_LIGHTEN, "LIGHTEN", 0, "Lighten", ""},