tornavis/source/blender/sequencer/intern
Aras Pranckevicius df16f4931e VSE: speedup timeline drawing, and improve waveform display
Sequencer timeline UI repainting is 3x-4x faster now, for complex
timelines. On Sprite Fright Edit data set, with whole timeline visible
(2702 strips), repainting the timeline UI with all overlay options
(waveforms, offsets, thumbnails etc.):

- Windows (Ryzen 5950X, RTX 3080Ti, OpenGL): 62ms -> 18.6ms (16FPS -> 54FPS)
- Mac (M1 Max, Metal): 39.8ms -> 11.5ms (25FPS -> 86FPS)

This is achieved by:

- Avoiding tiny GPU draw calls (i.e. drawing one quad a time), instead
  batch all the quads / lines needed by the timeline display into
  series of about-1000 quads per draw.
- For retiming keys display, batch their keyframe point drawing too.
- For audio waveform overlay display, change it to draw batched quads
  instead of alternating between line strips and triangle strips. This
  actually changes how the waveform looks like (implements #115274)
  and fixes some visual issues with waveforms too.
- For fcurve overlays, also draw them as batched quads.

While at it, this also fixes an issue where while dragging strips over
other strips, their text labels would look as if they are behind the
background strips.

Pull Request: https://projects.blender.org/blender/blender/pulls/115311
2023-11-29 20:25:21 +01:00
..
animation.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
channels.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
clipboard.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
disk_cache.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
disk_cache.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
effects.cc Cleanup: spelling in comments 2023-11-09 09:54:28 +11:00
effects.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
image_cache.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
image_cache.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
iterator.cc VSE: speedup timeline drawing, and improve waveform display 2023-11-29 20:25:21 +01:00
modifier.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
multiview.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
multiview.hh Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
prefetch.cc Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
prefetch.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
proxy.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
proxy.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
proxy_job.cc Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
render.cc Fix #114982: Crash when rendering scene strips 2023-11-23 04:29:09 +01:00
render.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
sequence_lookup.cc VSE: Use C++ containers for strip iteration 2023-11-06 01:36:44 +01:00
sequencer.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
sequencer.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
sound.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
strip_add.cc Fix (unreported): Incorrect calculation of meta strip range 2023-11-20 04:18:18 +01:00
strip_edit.cc VSE: Use C++ containers for strip iteration 2023-11-06 01:36:44 +01:00
strip_relations.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
strip_retiming.cc Cleanup: Make format 2023-11-22 12:50:31 -08:00
strip_select.cc Cleanup: Convert VSE headers from .h to .hh 2023-11-03 01:33:54 +01:00
strip_time.cc Fix (unreported): Incorrect calculation of meta strip range 2023-11-20 04:18:18 +01:00
strip_time.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00
strip_transform.cc Fix (unreported): Incorrect calculation of meta strip range 2023-11-20 04:18:18 +01:00
utils.cc VSE: speedup timeline drawing, and improve waveform display 2023-11-29 20:25:21 +01:00
utils.hh Cleanup: Remove unnecessary struct and typedef keywords from C++ headers 2023-11-14 09:51:41 +01:00