Commit Graph
2402 Commits
Author SHA1 Message Date
itsmattkc 764fbb74c1 improved appearance of transitions in timeline 2019-12-14 02:57:31 +11:00
itsmattkc bc5e7349ef don't automatically create gaps if one already exists that can be resized
Rather than constantly create gaps, we can more intelligently determine whether
a gap can be extended to take the place of a block being removed, etc.
2019-12-14 00:44:41 +11:00
itsmattkc 323718bc11 moved timeline undoable commands to using the new NodeAddCommand
Previous iteration used some "magic code" that added clips automatically to the
timeline. This was functional but ultimately outside of the undo commands'
control meaning nodes could be infinitely added and abandoned. This makes the
add process part of the undo command which means it's all undoable as the user
would expect.
2019-12-14 00:04:57 +11:00
itsmattkc 18bf126574 implemented deleting nodes in the nodeview (undoable) 2019-12-13 04:12:00 +11:00
itsmattkc 186973ff20 implemented final connections to allow creating new nodes in the nodeview 2019-12-13 03:06:12 +11:00
itsmattkc 934eea5f40 completed node 'add' menu 2019-12-13 02:55:09 +11:00
itsmattkc 5b0513efed started node factory class for making nodes at runtime 2019-12-13 02:30:31 +11:00
itsmattkc f15683b593 allow gaps and transitions to be selected in the timeline
This will be useful for various reasons, however the behavior of selecting
gaps and transitions will need to be regulated harder than clips in the near
future.
2019-12-13 01:55:41 +11:00
itsmattkc 62120f4943 cross dissolve: improved algorithm
Multiplying by alpha twice turned out to be unnecessary.
2019-12-12 19:04:28 +11:00
itsmattkc 526f07ba08 implemented demonstrative dip to black transition 2019-12-12 19:00:49 +11:00
itsmattkc e1f4821b5a timeline tool will now create dual transitions
The previous commit was mostly cosmetic, this commit updates the node
connections so it's actually functional too.
2019-12-12 16:21:05 +11:00
itsmattkc 1ba254ae87 implemented creating dual and single transitions
The user can now create transitions on each side as well as transitions between
blocks.
2019-12-12 15:50:08 +11:00
itsmattkc 76c0399b75 implemented base transition support
While very much incomplete, transitions can now be created and will render
correctly.
2019-12-12 15:21:39 +11:00
itsmattkc 7b92b21df2 reimplemented "add" tool
Tool for adding empty/non-media clips in the timeline. Also basis of the
transition tool.
2019-12-11 19:54:53 +11:00
itsmattkc 7ae37511a2 fixed segfault when selecting graphics items that aren't actually block items 2019-12-11 19:31:18 +11:00
itsmattkc 79c2953662 implemented track locking in the timeline widget 2019-12-11 16:34:38 +11:00
itsmattkc 7117616635 allow track muting 2019-12-11 13:54:40 +11:00
itsmattkc da98793a6b fixed segfault if pipeline returned an empty texture 2019-12-11 13:54:19 +11:00
itsmattkc 3d3e40d431 minor code cleanup and fixed opengl thread desync issue 2019-12-11 03:20:23 +11:00
itsmattkc f5d66436fa attempt to use fbo clear function 2019-12-10 21:32:21 +11:00
itsmattkc 91c7d8aa4d implemented texture cache for performance
Creating and destroying textures is a slow process, particularly when we can
re-use them throughout most of the render chain. We now keep them stored so
they can be re-used which improves performance substantially.
2019-12-10 14:53:47 +11:00
itsmattkc 6ac33d8dc4 created simple texture cache object ready for implementation into the workers 2019-12-10 13:24:12 +11:00
itsmattkc 1f5ae6f9bd use mutexes to prevent threads from interfering with each other while sharing shaders 2019-12-10 01:45:39 +11:00
itsmattkc da3ff98774 alphaover: return black if no textures are enabled
Not doing this appeared to corrupt the composited buffer somehow and return a
black image if there were two empty texture connections daisychained together
on two AlphaOver instances.
2019-12-10 01:33:48 +11:00
itsmattkc 92776b877d implement texture null check flag on shaders
Sets a flag if the texture being sent to the shader is null
2019-12-10 01:20:57 +11:00
itsmattkc c35a6d009d removed unnecessary debug messages 2019-12-10 00:57:28 +11:00
itsmattkc 3bfe333878 replaced QString uses with QStringLiteral
Minor code optimization according to Qt documentation.
2019-12-10 00:42:31 +11:00
itsmattkc f46b1245c4 reduced the output of some nodes
Some nodes don't need to provide all their inputs merged as outputs.
2019-12-10 00:37:06 +11:00
itsmattkc 2fb4047e6f moved all shader code out of C++ source and into external shader files
General code cleanup and easier maintenance.
2019-12-10 00:10:00 +11:00
itsmattkc 3dc563b697 removed double buffered textures
These functions never ended up getting used, and have the potential to become
confusing in implementation.
2019-12-09 23:59:00 +11:00
itsmattkc 26b3993b9d made vast improvements to rendering engine and node structure
This was many changes that were largely fundamentally related. They included:
- More const modifiers to enforce read only node graphs
- Support for fragment and vertex shaders from the nodes
- Support for node code loaded externally (embedded into the binary)
- Fixed issue preventing two textures from being used in a shader
- Removed several unused functions and cleaned up code
- Fixed video media node misreading its matrix input
2019-12-09 23:50:52 +11:00
itsmattkc daafcbfc95 began external shader files that can be compiled into the program
Helps write shaders rather than embedding them into the C++ code.
2019-12-09 23:49:44 +11:00
itsmattkc 5819b451fd enforce read-only/stateless structure of new rendering system
Most if not all Node references are const now, so their state is entirely
held in the renderers rather than the Nodes themselves.
2019-12-09 23:48:25 +11:00
itsmattkc 5affc37699 added custom category and data types to transition base class 2019-12-09 23:46:50 +11:00
itsmattkc c1b96927a2 this files were actually renamed in an earlier commit but i forgot to add them 2019-12-09 23:46:15 +11:00
itsmattkc 3f76f4cb00 correctly identify openimageio data as alpha associated
Also added note for potential concern regarding alpha association.
2019-12-09 23:45:16 +11:00
itsmattkc cc8aeea672 started pair of transition derivatives
These will serve as stock transitions and as a reference implementation for
hardware accelerated transitions.
2019-12-09 23:44:27 +11:00
itsmattkc 0448451bc2 fixed alpha over algorithm and node recursion issue 2019-12-09 23:43:47 +11:00
itsmattkc 4bb874a154 fix sigfpe on timecode function if the timebase isn't valid 2019-12-09 23:43:03 +11:00
itsmattkc 110c479954 Merge branch 'master' into transitions 2019-12-08 21:48:19 +11:00
itsmattkc 58bcbca4c5 wrote mechanisms that allow the tracks to be resized from the trackview 2019-12-08 15:14:43 +11:00
itsmattkc 2207aa3fd5 moved slider's focusable line edit to a separate distinct reusable widget
Some of the widgets designed for Slider have uses elsewhere so now they have
been moved to allow more generic usage.
2019-12-08 15:13:55 +11:00
itsmattkc 50f4e8767d wrangled QWidgets to allow for resizable tracks with track headers 2019-12-08 05:13:43 +11:00
itsmattkc dd8d1e84b0 small visual improvements to the timeline's timecode label 2019-12-08 00:24:50 +11:00
itsmattkc 00c06e3e6b update timeslider's label automatically when the timebase changes 2019-12-08 00:14:45 +11:00
itsmattkc d6fe49aad3 started trackview widgets for timeline view 2019-12-08 00:12:46 +11:00
itsmattkc 0080e01af6 use drop-frame timecode by default 2019-12-08 00:12:19 +11:00
itsmattkc f2013a6f3d created time slider UI widget
Based on the integer slider, this can be used to interactively control time.
2019-12-08 00:11:47 +11:00
itsmattkc 2fe03debec reimplement string timecode to frame number conversion 2019-12-08 00:10:43 +11:00
itsmattkc 94be06e33e use O2 optimization for now due to performance and stability concerns 2019-12-08 00:10:02 +11:00