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
itsmattkc
0c6ec926b6
started base transition type
...
Like the base "Block" type, the "Transition" type will not be a node used on its
own, it will have to be derived. This type defines some basic behavior for a
transition (e.g. how much it overlaps its "from" and "to" blocks).
2019-12-07 02:49:30 +11:00
itsmattkc
eac89cd685
fixed qobject warning emitted when TrackOutputs are destroyed
2019-12-07 02:02:44 +11:00
itsmattkc
b2910757a0
use compiler optimizations when building
2019-12-07 02:02:32 +11:00
itsmattkc
351d4a246e
use NodeInputArray for tracks as well
...
These were introduced for the new Block system and make just as much sense for
the Track system. They've now been implemented for both.
2019-12-06 20:34:19 +11:00
itsmattkc
9140479940
Merge branch 'master' into track-arrays
2019-12-06 19:42:26 +11:00
itsmattkc
f6064b40df
hold worker busy state in renderbackend rather than in renderworker
...
Workers run in different threads and the backends can poll whether the worker
is currently busy or not. However the previous iteration has the worker (and an
atomic int) provide the busy state which could easily desync with the main
thread (since all workers run in different threads). By holding the busy states
in the main thread, the main thread will always be able to poll the busy state
accurately.
2019-12-06 19:38:57 +11:00
itsmattkc
5227e10f39
render one frame per thread for increased parallelism
...
If the nodes are now stateless, there's nothing stopping the renderer from
rendering multiple frames at once. Earlier since the nodes held some of their
input/output data (and that data could change per frame), it was not possible
to render multiple frames at once without conflicts. Now that the node state is
held in render threads, they can do whatever they want at any time.
2019-12-06 15:37:31 +11:00
itsmattkc
33f73e0e90
reimplemented color management and alpha association in new renderer system
...
Color management is now as functional as it was before.
2019-12-06 13:33:53 +11:00
itsmattkc
927e2252f3
fixed bug where several frames being cached at the same time would lead to most
...
of them returning blank
2019-12-06 13:32:02 +11:00