Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-02-21 12:01:12 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-02-21 12:03:33 +0400
commitb3bc9e4f775ed285d1431086c4cb86b3e2a8e0c2 (patch)
tree796d901a237cd1956fa1781dc34650c3d8b0d409 /source/blender/blenkernel/intern
parent6c32192850357be2df171fd384c06678c0f57121 (diff)
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.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r--source/blender/blenkernel/intern/sequencer.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index c25b3da15eb..86cf04eded8 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;
}