Fix T85824: Transition between adjustment regression

When transition effect is placed between 2 adjustment layer strips,
only first adjustment layer was rendered by effect.

Limit timeline_frame range to adjustment strip frame range.

This timeline configuration is technically invalid, because strips
should overlap when using transition effect. This was never restricted
and instead of producing no image, transition effect used first and
last frame of source strip. Many users got used to this "feature" so
I think it make sense to fix this case so it behaves like other strip
types.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D10562
This commit is contained in:
Richard Antalik 2021-03-20 01:33:15 +01:00
parent 8b3f5f755e
commit c81dfa2426
Notes: blender-bot 2023-06-21 19:23:24 +02:00
Referenced by issue #85824, Sequencer : Cross Fade between adjustement layer strips not working since 2.9
1 changed files with 5 additions and 0 deletions

View File

@ -3024,6 +3024,11 @@ static ImBuf *do_adjustment_impl(const SeqRenderData *context, Sequence *seq, fl
seqbasep = SEQ_get_seqbase_by_seq(&ed->seqbase, seq);
/* Clamp timeline_frame to strip range so it behaves as if it had "still frame" offset (last
* frame is static after end of strip). This is how most strips behave. This way transition
* effects that doesn't overlap or speed effect can't fail rendering outside of strip range. */
timeline_frame = clamp_i(timeline_frame, seq->startdisp, seq->enddisp - 1);
if (seq->machine > 1) {
i = seq_render_give_ibuf_seqbase(context, timeline_frame, seq->machine - 1, seqbasep);
}