tornavis/source/blender/editors
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 Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
armature Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
asset Cleanup: CMake: Modernize bf_intern_clog dependencies 2023-11-24 17:12:24 +01:00
curve Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
curves Cleanup: declare values for enums that may be written into blend files 2023-11-29 17:37:04 +11:00
datafiles UI: Icons for Horizontal and Vertical Split 2023-11-15 20:16:49 +01:00
geometry Geometry Nodes: extract global data passed to a geometry nodes invocation to separate struct 2023-11-29 13:22:20 +01:00
gizmo_library Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
gpencil_legacy Cleanup: CMake: Modernize bf_imbuf dependencies 2023-11-25 23:37:24 +01:00
grease_pencil Cleanup: declare values for enums that may be written into blend files 2023-11-29 17:37:04 +11:00
include UI: Improve menu dropshadow 2023-11-24 22:50:20 +01:00
interface Cleanup: replace MAX2 with std::max 2023-11-29 17:11:09 +11:00
io Fix uninitialized use_scene_unit for STL export 2023-11-27 10:59:54 +11:00
lattice Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
mask Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
mesh Cleanup: make hash sizes static, remove references to smallhash 2023-11-29 15:13:05 +11:00
metaball Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
object Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
physics Cleanup: Store BVH and shrinkwrap data with C++ types 2023-11-28 16:40:43 -05:00
render Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
scene Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
screen Cleanup: CMake: Modernize bf_imbuf dependencies 2023-11-25 23:37:24 +01:00
sculpt_paint Cleanup: Use C++ arrays to store subdiv ccg data 2023-11-29 12:39:33 -05:00
sound Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
space_action Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
space_api Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
space_buttons Cleanup: avoid STR_ELEM expanding into multiple function calls 2023-11-29 16:33:01 +11:00
space_clip Cleanup: CMake: Modernize bf_imbuf dependencies 2023-11-25 23:37:24 +01:00
space_console Cleanup: CMake: Modernize bf_blenfont dependencies 2023-11-24 18:29:09 +01:00
space_file Move `BKE_main_idmap` and `BKE_main_namemap` to be fully cpp headers. 2023-11-27 18:09:27 +01:00
space_graph Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
space_image Cleanup: CMake: Modernize bf_imbuf dependencies 2023-11-25 23:37:24 +01:00
space_info Cleanup: Use references instead of pointers in subdiv_ccg.cc 2023-11-29 11:40:10 -05:00
space_nla Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
space_node Cleanup: declare values for enums that may be written into blend files 2023-11-29 17:37:04 +11:00
space_outliner Move `BKE_main_idmap` and `BKE_main_namemap` to be fully cpp headers. 2023-11-27 18:09:27 +01:00
space_script Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
space_sequencer VSE: speedup timeline drawing, and improve waveform display 2023-11-29 20:25:21 +01:00
space_spreadsheet Cleanup: CMake: Modernize bf_functions dependencies 2023-11-28 01:14:15 +01:00
space_statusbar Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
space_text Fix #115444: Revert "Refactor: Text Editor Formatted Output" 2023-11-27 01:41:26 +01:00
space_topbar Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
space_userpref Cleanup: Move several blenkernel headers to C++ 2023-11-16 11:41:55 +01:00
space_view3d Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
transform Fix #115570: Crash when using snap to volume and clipping region 2023-11-29 12:33:08 -03:00
undo Cleanup: CMake: Modernize bf_intern_clog dependencies 2023-11-24 17:12:24 +01:00
util Cleanup: Move four blenkernel headers to C++ 2023-11-28 16:05:12 -05:00
uvedit Cleanup: CMake: Modernize bf_depsgraph dependencies 2023-11-25 22:51:59 +01:00
CMakeLists.txt Fix: Expose GPv3 RNA only in experimental 2023-09-27 15:46:18 +02:00