[Bf-blender-cvs] [b3bc9e4] master: Fix T38598: RGBA images don't blend well in VSE with Cross Effect Strip

Sergey Sharybin noreply at git.blender.org
Fri Feb 21 09:03:51 CET 2014


Commit: b3bc9e4f775ed285d1431086c4cb86b3e2a8e0c2
Author: Sergey Sharybin
Date:   Fri Feb 21 14:01:12 2014 +0600
https://developer.blender.org/rBb3bc9e4f775ed285d1431086c4cb86b3e2a8e0c2

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.

===================================================================

M	source/blender/blenkernel/intern/sequencer.c

===================================================================

diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index c25b3da..86cf04e 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -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;
 }




More information about the Bf-blender-cvs mailing list