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:
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
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue