Fix T38598: RGBA images don't blend well in VSE with Cross Effect Strip

The issue was caused by the fact that sequencer used to cross-over effect
result with strips used for this effect, which is really stupid.

Now made it so strips which are used for effect inputs are not in the
render stack to be sure they would only be used by effect itself and
wouldn't be blended in any other way.
This commit is contained in:
Sergey Sharybin 2014-02-21 14:01:12 +06:00
parent 6c32192850
commit b3bc9e4f77
Notes: blender-bot 2023-05-03 10:14:48 +02:00
Referenced by issue #39057, VSE wipe (with transparent 2nd input ) broken in RC1 !
Referenced by issue #38598, RGBA images don't blend well in VSE with Cross Effect Strip
1 changed files with 25 additions and 1 deletions

View File

@ -1158,19 +1158,43 @@ StripElem *BKE_sequencer_give_stripelem(Sequence *seq, int cfra)
static int evaluate_seq_frame_gen(Sequence **seq_arr, ListBase *seqbase, int cfra)
{
Sequence *seq;
int totseq = 0;
Sequence *effect_inputs[MAXSEQ + 1];
int i, totseq = 0, num_effect_inputs = 0;
memset(seq_arr, 0, sizeof(Sequence *) * (MAXSEQ + 1));
seq = seqbase->first;
while (seq) {
if (seq->startdisp <= cfra && seq->enddisp > cfra) {
if ((seq->type & SEQ_TYPE_EFFECT)) {
if (seq->seq1) {
effect_inputs[num_effect_inputs++] = seq->seq1;
}
if (seq->seq2) {
effect_inputs[num_effect_inputs++] = seq->seq2;
}
if (seq->seq3) {
effect_inputs[num_effect_inputs++] = seq->seq3;
}
}
seq_arr[seq->machine] = seq;
totseq++;
}
seq = seq->next;
}
/* Drop strips which are used for effect inputs, we don't want
*them to blend into render stack in any other way than effect
* string rendering.
*/
for (i = 0; i < num_effect_inputs; i++) {
seq = effect_inputs[i];
seq_arr[seq->machine] = NULL;
}
return totseq;
}