VSE: Over Drop effect was not doing anything useful, map it to Alpha Over
Behavior of it was exactly the same as Alpha Over for the last 18 years (since
327d413eb3 in 2006 March), so just remap it to regular alpha over on file read.
Pull Request: https://projects.blender.org/blender/blender/pulls/134342
This commit is contained in:
committed by
Aras Pranckevicius
parent
e2b1f1f818
commit
4f0fd32d6f
@@ -864,11 +864,6 @@ class SEQUENCER_MT_add_effect(Menu):
|
||||
text="Multiply",
|
||||
text_ctxt=i18n_contexts.id_sequence,
|
||||
).type = 'MULTIPLY'
|
||||
col.operator(
|
||||
"sequencer.effect_strip_add",
|
||||
text="Over Drop",
|
||||
text_ctxt=i18n_contexts.id_sequence,
|
||||
).type = 'OVER_DROP'
|
||||
col.operator(
|
||||
"sequencer.effect_strip_add",
|
||||
text="Alpha Over",
|
||||
@@ -1102,7 +1097,7 @@ class SEQUENCER_MT_strip(Menu):
|
||||
|
||||
if strip_type in {
|
||||
'CROSS', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
||||
'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'WIPE', 'GLOW',
|
||||
'GAMMA_CROSS', 'MULTIPLY', 'WIPE', 'GLOW',
|
||||
'TRANSFORM', 'COLOR', 'SPEED', 'MULTICAM', 'ADJUSTMENT',
|
||||
'GAUSSIAN_BLUR',
|
||||
}:
|
||||
@@ -1286,7 +1281,7 @@ class SEQUENCER_MT_context_menu(Menu):
|
||||
|
||||
if strip_type in {
|
||||
'CROSS', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
||||
'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'WIPE', 'GLOW',
|
||||
'GAMMA_CROSS', 'MULTIPLY', 'WIPE', 'GLOW',
|
||||
'TRANSFORM', 'COLOR', 'SPEED', 'MULTICAM', 'ADJUSTMENT',
|
||||
'GAUSSIAN_BLUR',
|
||||
}:
|
||||
@@ -1483,7 +1478,7 @@ class SEQUENCER_PT_strip(SequencerButtonsPanel, Panel):
|
||||
|
||||
if strip_type in {
|
||||
'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', 'MULTIPLY',
|
||||
'OVER_DROP', 'GLOW', 'TRANSFORM', 'SPEED', 'MULTICAM',
|
||||
'GLOW', 'TRANSFORM', 'SPEED', 'MULTICAM',
|
||||
'GAUSSIAN_BLUR', 'COLORMIX',
|
||||
}:
|
||||
icon_header = 'SHADERFX'
|
||||
@@ -1575,7 +1570,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
|
||||
return strip.type in {
|
||||
'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
||||
'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP',
|
||||
'CROSS', 'GAMMA_CROSS', 'MULTIPLY',
|
||||
'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED',
|
||||
'MULTICAM', 'GAUSSIAN_BLUR', 'TEXT', 'COLORMIX',
|
||||
}
|
||||
@@ -1708,7 +1703,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
layout.prop(strip, "wrap_width", text="Wrap Width")
|
||||
|
||||
col = layout.column(align=True)
|
||||
if strip_type in {'CROSS', 'GAMMA_CROSS', 'WIPE', 'ALPHA_OVER', 'ALPHA_UNDER', 'OVER_DROP'}:
|
||||
if strip_type in {'CROSS', 'GAMMA_CROSS', 'WIPE', 'ALPHA_OVER', 'ALPHA_UNDER'}:
|
||||
col.prop(strip, "use_default_fade", text="Default Fade")
|
||||
if not strip.use_default_fade:
|
||||
col.prop(strip, "effect_fader", text="Effect Fader")
|
||||
@@ -2453,7 +2448,7 @@ class SEQUENCER_PT_adjust_video(SequencerButtonsPanel, Panel):
|
||||
'MOVIE', 'IMAGE', 'SCENE', 'MOVIECLIP', 'MASK',
|
||||
'META', 'ADD', 'SUBTRACT', 'ALPHA_OVER',
|
||||
'ALPHA_UNDER', 'CROSS', 'GAMMA_CROSS', 'MULTIPLY',
|
||||
'OVER_DROP', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR',
|
||||
'WIPE', 'GLOW', 'TRANSFORM', 'COLOR',
|
||||
'MULTICAM', 'SPEED', 'ADJUSTMENT', 'COLORMIX',
|
||||
}
|
||||
|
||||
@@ -2490,7 +2485,7 @@ class SEQUENCER_PT_adjust_color(SequencerButtonsPanel, Panel):
|
||||
'MOVIE', 'IMAGE', 'SCENE', 'MOVIECLIP', 'MASK',
|
||||
'META', 'ADD', 'SUBTRACT', 'ALPHA_OVER',
|
||||
'ALPHA_UNDER', 'CROSS', 'GAMMA_CROSS', 'MULTIPLY',
|
||||
'OVER_DROP', 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR',
|
||||
'WIPE', 'GLOW', 'TRANSFORM', 'COLOR',
|
||||
'MULTICAM', 'SPEED', 'ADJUSTMENT', 'COLORMIX',
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ extern "C" {
|
||||
|
||||
/* Blender file format version. */
|
||||
#define BLENDER_FILE_VERSION BLENDER_VERSION
|
||||
#define BLENDER_FILE_SUBVERSION 1
|
||||
#define BLENDER_FILE_SUBVERSION 2
|
||||
|
||||
/* Minimum Blender version that supports reading file written with the current
|
||||
* version. Older Blender versions will test this and cancel loading the file, showing a warning to
|
||||
|
||||
@@ -3748,6 +3748,26 @@ static void version_geometry_normal_input_node(bNodeTree &ntree)
|
||||
}
|
||||
}
|
||||
|
||||
static bool strip_effect_overdrop_to_alphaover(Strip *strip, void * /*user_data*/)
|
||||
{
|
||||
if (strip->type == STRIP_TYPE_OVERDROP_REMOVED) {
|
||||
strip->type = STRIP_TYPE_ALPHAOVER;
|
||||
}
|
||||
if (strip->blend_mode == STRIP_TYPE_OVERDROP_REMOVED) {
|
||||
strip->blend_mode = STRIP_TYPE_ALPHAOVER;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void version_sequencer_update_overdrop(Main *bmain)
|
||||
{
|
||||
LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
|
||||
if (scene->ed != nullptr) {
|
||||
SEQ_for_each_callback(&scene->ed->seqbase, strip_effect_overdrop_to_alphaover, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void blo_do_versions_400(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||
{
|
||||
if (!MAIN_VERSION_FILE_ATLEAST(bmain, 400, 1)) {
|
||||
@@ -5828,6 +5848,10 @@ void blo_do_versions_400(FileData *fd, Library * /*lib*/, Main *bmain)
|
||||
}
|
||||
}
|
||||
|
||||
if (!MAIN_VERSION_FILE_ATLEAST(bmain, 405, 2)) {
|
||||
version_sequencer_update_overdrop(bmain);
|
||||
}
|
||||
|
||||
/* Always run this versioning; meshes are written with the legacy format which always needs to
|
||||
* be converted to the new format on file load. Can be moved to a subversion check in a larger
|
||||
* breaking release. */
|
||||
|
||||
@@ -2810,7 +2810,6 @@ TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
|
||||
case STRIP_TYPE_ADD:
|
||||
case STRIP_TYPE_SUB:
|
||||
case STRIP_TYPE_MUL:
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
case STRIP_TYPE_ALPHAOVER:
|
||||
case STRIP_TYPE_ALPHAUNDER:
|
||||
case STRIP_TYPE_COLORMIX:
|
||||
|
||||
@@ -1554,10 +1554,6 @@ static std::string sequencer_add_effect_strip_get_description(bContext * /*C*/,
|
||||
case STRIP_TYPE_MUL:
|
||||
return TIP_(
|
||||
"Add a multiply blend mode effect strip for two selected strips with video content");
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
return TIP_(
|
||||
"Add an alpha over drop blend mode effect strip for two selected strips with video "
|
||||
"content");
|
||||
case STRIP_TYPE_WIPE:
|
||||
return TIP_("Add a wipe transition strip for two selected strips with video content");
|
||||
case STRIP_TYPE_GLOW:
|
||||
|
||||
@@ -2673,7 +2673,6 @@ const EnumPropertyItem sequencer_prop_effect_types[] = {
|
||||
{STRIP_TYPE_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", "Alpha Under effect strip type"},
|
||||
{STRIP_TYPE_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", "Gamma Cross effect strip type"},
|
||||
{STRIP_TYPE_MUL, "MULTIPLY", 0, "Multiply", "Multiply effect strip type"},
|
||||
{STRIP_TYPE_OVERDROP, "OVER_DROP", 0, "Alpha Over Drop", "Alpha Over Drop effect strip type"},
|
||||
{STRIP_TYPE_WIPE, "WIPE", 0, "Wipe", "Wipe effect strip type"},
|
||||
{STRIP_TYPE_GLOW, "GLOW", 0, "Glow", "Glow effect strip type"},
|
||||
{STRIP_TYPE_TRANSFORM, "TRANSFORM", 0, "Transform", "Transform effect strip type"},
|
||||
|
||||
@@ -363,7 +363,6 @@ static void color3ubv_from_seq(const Scene *curscene,
|
||||
case STRIP_TYPE_MUL:
|
||||
case STRIP_TYPE_ALPHAOVER:
|
||||
case STRIP_TYPE_ALPHAUNDER:
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
case STRIP_TYPE_GLOW:
|
||||
case STRIP_TYPE_MULTICAM:
|
||||
case STRIP_TYPE_ADJUSTMENT:
|
||||
@@ -387,9 +386,6 @@ static void color3ubv_from_seq(const Scene *curscene,
|
||||
else if (strip->type == STRIP_TYPE_ALPHAUNDER) {
|
||||
rgb_byte_set_hue_float_offset(r_col, 0.19);
|
||||
}
|
||||
else if (strip->type == STRIP_TYPE_OVERDROP) {
|
||||
rgb_byte_set_hue_float_offset(r_col, 0.22);
|
||||
}
|
||||
else if (strip->type == STRIP_TYPE_COLORMIX) {
|
||||
rgb_byte_set_hue_float_offset(r_col, 0.25);
|
||||
}
|
||||
|
||||
@@ -745,7 +745,8 @@ typedef enum StripType {
|
||||
STRIP_TYPE_ALPHAUNDER = 12,
|
||||
STRIP_TYPE_GAMCROSS = 13,
|
||||
STRIP_TYPE_MUL = 14,
|
||||
STRIP_TYPE_OVERDROP = 15,
|
||||
STRIP_TYPE_OVERDROP_REMOVED =
|
||||
15, /* Removed (behavior was the same as alpha-over), only used when reading old files. */
|
||||
/* STRIP_TYPE_PLUGIN = 24, */ /* Deprecated */
|
||||
STRIP_TYPE_WIPE = 25,
|
||||
STRIP_TYPE_GLOW = 26,
|
||||
|
||||
@@ -801,8 +801,6 @@ static StructRNA *rna_Strip_refine(PointerRNA *ptr)
|
||||
return &RNA_GammaCrossStrip;
|
||||
case STRIP_TYPE_MUL:
|
||||
return &RNA_MultiplyStrip;
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
return &RNA_OverDropStrip;
|
||||
case STRIP_TYPE_MULTICAM:
|
||||
return &RNA_MulticamStrip;
|
||||
case STRIP_TYPE_ADJUSTMENT:
|
||||
@@ -2018,7 +2016,6 @@ static const EnumPropertyItem blend_mode_items[] = {
|
||||
{STRIP_TYPE_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""},
|
||||
{STRIP_TYPE_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""},
|
||||
{STRIP_TYPE_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""},
|
||||
{STRIP_TYPE_OVERDROP, "OVER_DROP", 0, "Over Drop", ""},
|
||||
{0, nullptr, 0, nullptr, nullptr},
|
||||
};
|
||||
|
||||
@@ -2087,7 +2084,6 @@ static void rna_def_strip(BlenderRNA *brna)
|
||||
{STRIP_TYPE_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""},
|
||||
{STRIP_TYPE_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""},
|
||||
{STRIP_TYPE_MUL, "MULTIPLY", 0, "Multiply", ""},
|
||||
{STRIP_TYPE_OVERDROP, "OVER_DROP", 0, "Over Drop", ""},
|
||||
{STRIP_TYPE_WIPE, "WIPE", 0, "Wipe", ""},
|
||||
{STRIP_TYPE_GLOW, "GLOW", 0, "Glow", ""},
|
||||
{STRIP_TYPE_TRANSFORM, "TRANSFORM", 0, "Transform", ""},
|
||||
@@ -3621,7 +3617,6 @@ static EffectInfo def_effects[] = {
|
||||
rna_def_multicam,
|
||||
0},
|
||||
{"MultiplyStrip", "Multiply Strip", "Multiply Strip", nullptr, 2},
|
||||
{"OverDropStrip", "Over Drop Strip", "Over Drop Strip", nullptr, 2},
|
||||
{"SpeedControlStrip",
|
||||
"SpeedControl Strip",
|
||||
"Sequence strip to control the speed of other strips",
|
||||
|
||||
@@ -790,7 +790,6 @@ void RNA_api_strips(StructRNA *srna, const bool metastrip)
|
||||
{STRIP_TYPE_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""},
|
||||
{STRIP_TYPE_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""},
|
||||
{STRIP_TYPE_MUL, "MULTIPLY", 0, "Multiply", ""},
|
||||
{STRIP_TYPE_OVERDROP, "OVER_DROP", 0, "Over Drop", ""},
|
||||
{STRIP_TYPE_WIPE, "WIPE", 0, "Wipe", ""},
|
||||
{STRIP_TYPE_GLOW, "GLOW", 0, "Glow", ""},
|
||||
{STRIP_TYPE_TRANSFORM, "TRANSFORM", 0, "Transform", ""},
|
||||
|
||||
@@ -211,9 +211,6 @@ SeqEffectHandle get_sequence_effect_impl(int strip_type)
|
||||
case STRIP_TYPE_ALPHAOVER:
|
||||
alpha_over_effect_get_handle(rval);
|
||||
break;
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
over_drop_effect_get_handle(rval);
|
||||
break;
|
||||
case STRIP_TYPE_ALPHAUNDER:
|
||||
alpha_under_effect_get_handle(rval);
|
||||
break;
|
||||
|
||||
@@ -100,7 +100,6 @@ void gaussian_blur_effect_get_handle(SeqEffectHandle &rval);
|
||||
void glow_effect_get_handle(SeqEffectHandle &rval);
|
||||
void mul_effect_get_handle(SeqEffectHandle &rval);
|
||||
void multi_camera_effect_get_handle(SeqEffectHandle &rval);
|
||||
void over_drop_effect_get_handle(SeqEffectHandle &rval);
|
||||
void solid_color_effect_get_handle(SeqEffectHandle &rval);
|
||||
void speed_effect_get_handle(SeqEffectHandle &rval);
|
||||
void sub_effect_get_handle(SeqEffectHandle &rval);
|
||||
|
||||
@@ -361,24 +361,6 @@ static ImBuf *do_colormix_effect(const SeqRenderData *context,
|
||||
return dst;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Over-Drop Effect */
|
||||
|
||||
/* Before Blender 2.42 (2006), over-drop effect used to have some
|
||||
* sort of drop shadow with itself blended on top. However since then
|
||||
* (commit 327d413eb3c0c), it is effectively just alpha-over with swapped
|
||||
* inputs and thus the effect "fade" factor controlling the other input. */
|
||||
|
||||
static ImBuf *do_overdrop_effect(const SeqRenderData *context,
|
||||
Strip *strip,
|
||||
float timeline_frame,
|
||||
float fac,
|
||||
ImBuf *src1,
|
||||
ImBuf *src2)
|
||||
{
|
||||
return do_alphaover_effect(context, strip, timeline_frame, fac, src1, src2);
|
||||
}
|
||||
|
||||
static void copy_effect_default(Strip *dst, const Strip *src, const int /*flag*/)
|
||||
{
|
||||
dst->effectdata = MEM_dupallocN(src->effectdata);
|
||||
@@ -411,11 +393,6 @@ void alpha_over_effect_get_handle(SeqEffectHandle &rval)
|
||||
rval.early_out = early_out_mul_input1;
|
||||
}
|
||||
|
||||
void over_drop_effect_get_handle(SeqEffectHandle &rval)
|
||||
{
|
||||
rval.execute = do_overdrop_effect;
|
||||
}
|
||||
|
||||
void alpha_under_effect_get_handle(SeqEffectHandle &rval)
|
||||
{
|
||||
rval.init = init_alpha_over_or_under;
|
||||
|
||||
@@ -1811,16 +1811,7 @@ ImBuf *seq_render_strip(const SeqRenderData *context,
|
||||
|
||||
static bool seq_must_swap_input_in_blend_mode(Strip *strip)
|
||||
{
|
||||
bool swap_input = false;
|
||||
|
||||
/* bad hack, to fix crazy input ordering of
|
||||
* those two effects */
|
||||
|
||||
if (ELEM(strip->blend_mode, STRIP_TYPE_ALPHAOVER, STRIP_TYPE_ALPHAUNDER, STRIP_TYPE_OVERDROP)) {
|
||||
swap_input = true;
|
||||
}
|
||||
|
||||
return swap_input;
|
||||
return ELEM(strip->blend_mode, STRIP_TYPE_ALPHAOVER, STRIP_TYPE_ALPHAUNDER);
|
||||
}
|
||||
|
||||
static StripEarlyOut strip_get_early_out_for_blend_mode(Strip *strip)
|
||||
@@ -1849,6 +1840,7 @@ static ImBuf *seq_render_strip_stack_apply_effect(
|
||||
{
|
||||
ImBuf *out;
|
||||
SeqEffectHandle sh = strip_effect_get_sequence_blend(strip);
|
||||
BLI_assert(sh.execute != nullptr);
|
||||
float fac = strip->blend_opacity / 100.0f;
|
||||
int swap_input = seq_must_swap_input_in_blend_mode(strip);
|
||||
|
||||
|
||||
@@ -137,8 +137,6 @@ static const char *give_seqname_by_type(int type)
|
||||
return CTX_DATA_(BLT_I18NCONTEXT_ID_SEQUENCE, "Alpha Over");
|
||||
case STRIP_TYPE_ALPHAUNDER:
|
||||
return CTX_DATA_(BLT_I18NCONTEXT_ID_SEQUENCE, "Alpha Under");
|
||||
case STRIP_TYPE_OVERDROP:
|
||||
return CTX_DATA_(BLT_I18NCONTEXT_ID_SEQUENCE, "Over Drop");
|
||||
case STRIP_TYPE_COLORMIX:
|
||||
return CTX_DATA_(BLT_I18NCONTEXT_ID_SEQUENCE, "Color Mix");
|
||||
case STRIP_TYPE_WIPE:
|
||||
|
||||
Reference in New Issue
Block a user