VSE: Use alpha over as default blend mode
With transform tools, it is expected to see backgroud image when overlay is transformed. Alpha over caused performance to be not optimal when used with opaque media. This should be addressed with D12914 at least partially. There may be some corner cases not addressed. Differential Revision: https://developer.blender.org/D12952
This commit is contained in:
parent
62da6ffe08
commit
165cacc6f0
Notes:
blender-bot
2023-09-13 08:48:34 +02:00
Referenced by issue #111595, VSE: Metadata is shown based on preview render buffer (so can easily be lost e.g. by having the "wrong" strip blend mode -- which happens to be default now)
|
@ -159,7 +159,7 @@ Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, struct SeqLoadDat
|
|||
{
|
||||
Sequence *seq = SEQ_sequence_alloc(
|
||||
seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_SCENE);
|
||||
seq->blend_mode = SEQ_TYPE_CROSS;
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER;
|
||||
seq->scene = load_data->scene;
|
||||
seq->len = load_data->scene->r.efra - load_data->scene->r.sfra + 1;
|
||||
id_us_ensure_real((ID *)load_data->scene);
|
||||
|
@ -180,7 +180,7 @@ Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, struct SeqLoa
|
|||
{
|
||||
Sequence *seq = SEQ_sequence_alloc(
|
||||
seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_MOVIECLIP);
|
||||
seq->blend_mode = SEQ_TYPE_CROSS;
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER;
|
||||
seq->clip = load_data->clip;
|
||||
seq->len = BKE_movieclip_get_duration(load_data->clip);
|
||||
id_us_ensure_real((ID *)load_data->clip);
|
||||
|
@ -201,7 +201,7 @@ Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData
|
|||
{
|
||||
Sequence *seq = SEQ_sequence_alloc(
|
||||
seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_MASK);
|
||||
seq->blend_mode = SEQ_TYPE_CROSS;
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER;
|
||||
seq->mask = load_data->mask;
|
||||
seq->len = BKE_mask_get_duration(load_data->mask);
|
||||
id_us_ensure_real((ID *)load_data->mask);
|
||||
|
@ -230,18 +230,12 @@ Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, struct SeqLoadDa
|
|||
seq->seq2 = load_data->effect.seq2;
|
||||
seq->seq3 = load_data->effect.seq3;
|
||||
|
||||
if (seq->type == SEQ_TYPE_COLOR) {
|
||||
seq->blend_mode = SEQ_TYPE_CROSS;
|
||||
}
|
||||
else if (seq->type == SEQ_TYPE_ADJUSTMENT) {
|
||||
seq->blend_mode = SEQ_TYPE_CROSS;
|
||||
}
|
||||
else if (seq->type == SEQ_TYPE_TEXT) {
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER;
|
||||
}
|
||||
else if (SEQ_effect_get_num_inputs(seq->type) == 1) {
|
||||
if (SEQ_effect_get_num_inputs(seq->type) == 1) {
|
||||
seq->blend_mode = seq->seq1->blend_mode;
|
||||
}
|
||||
else {
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER;
|
||||
}
|
||||
|
||||
if (!load_data->effect.seq1) {
|
||||
seq->len = 1; /* Effect is generator, set non zero length. */
|
||||
|
@ -326,7 +320,7 @@ Sequence *SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqL
|
|||
{
|
||||
Sequence *seq = SEQ_sequence_alloc(
|
||||
seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_IMAGE);
|
||||
seq->blend_mode = SEQ_TYPE_CROSS; /* so alpha adjustment fade to the strip below */
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER; /* so alpha adjustment fade to the strip below */
|
||||
seq->len = load_data->image.len;
|
||||
Strip *strip = seq->strip;
|
||||
strip->stripdata = MEM_callocN(load_data->image.len * sizeof(StripElem), "stripelem");
|
||||
|
@ -587,7 +581,7 @@ Sequence *SEQ_add_movie_strip(
|
|||
}
|
||||
}
|
||||
|
||||
seq->blend_mode = SEQ_TYPE_CROSS; /* so alpha adjustment fade to the strip below */
|
||||
seq->blend_mode = SEQ_TYPE_ALPHAOVER; /* so alpha adjustment fade to the strip below */
|
||||
|
||||
if (anim_arr[0] != NULL) {
|
||||
seq->len = IMB_anim_get_duration(anim_arr[0], IMB_TC_RECORD_RUN);
|
||||
|
|
Loading…
Reference in New Issue