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