diff options
author | Richard Antalik <richardantalik@gmail.com> | 2021-05-19 23:59:33 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2021-05-19 23:59:33 +0300 |
commit | 0b7744f4da666bccf2005ad0d0e77c5ddc73bfd5 (patch) | |
tree | 680fd9939df062cd585aa1d994544a47eaf104b7 /source/blender/sequencer/SEQ_iterator.h | |
parent | 97cf2a9fb1070614a7428974dd763b4de988d272 (diff) |
VSE: Fix rendering inconsistency
Fix issue described in T87678, which was partially a bug and partially
change in intended(at least as far as I can tell) behaior.
Function `evaluate_seq_frame_gen` that was partially responsible for
filtering strips in stack for rendering wasn't working correctly.
Intended functionality seems to be removing all effect inputs from stack
as it is unlikely that user would want these to be blended in. However
there was logic to exclude effects placed into same input, which because
of weak implementation caused, that any effect input, that is effect as
well will be considered to be part of stack to be blended in.
This bug was apparently used to produce effects like glow over original
image.
Even though this is originally unintended, I have kept this logic, but
I have made it explicit.
Another change is request made in T87678 to make it possible to keep
effect inputs as part of stack when they are placed above the effect,
which would imply that blending is intended. This change is again
explicitly defined.
Whole implementation has been refactored, so logic is consolidated
and code should be as explicit as possible and more readable.
`must_render_strip function` may be still quite hard to read, not sure
if I can make it nicer.
Last change is for remove gaps feature code - it used same rendering
code, which may be reason why its logic was split in first place.
Now it uses sequencer iterator, which will definitely be faster than
original code, but I could have used `LISTBASE_FOREACH` in this case.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11301
Diffstat (limited to 'source/blender/sequencer/SEQ_iterator.h')
-rw-r--r-- | source/blender/sequencer/SEQ_iterator.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/source/blender/sequencer/SEQ_iterator.h b/source/blender/sequencer/SEQ_iterator.h index 5f0836f5ca9..c7c2dc275ee 100644 --- a/source/blender/sequencer/SEQ_iterator.h +++ b/source/blender/sequencer/SEQ_iterator.h @@ -72,6 +72,7 @@ struct Sequence *SEQ_iterator_yield(SeqIterator *iterator); SeqCollection *SEQ_collection_create(void); bool SEQ_collection_append_strip(struct Sequence *seq, SeqCollection *data); +bool SEQ_collection_remove_strip(struct Sequence *seq, SeqCollection *data); void SEQ_collection_free(SeqCollection *collection); void SEQ_collection_merge(SeqCollection *collection_dst, SeqCollection *collection_src); void SEQ_collection_expand(struct ListBase *seqbase, @@ -85,6 +86,7 @@ SeqCollection *SEQ_query_by_reference(struct Sequence *seq_reference, struct ListBase *seqbase, SeqCollection *collection)); SeqCollection *SEQ_query_selected_strips(struct ListBase *seqbase); +SeqCollection *SEQ_query_all_strips(ListBase *seqbase); SeqCollection *SEQ_query_all_strips_recursive(ListBase *seqbase); void SEQ_query_strip_effect_chain(struct Sequence *seq_reference, struct ListBase *seqbase, |