itsmattkc
7d910e8a4f
added function to convert a string to a data type
...
Used for external node XML parsing.
2019-12-15 02:36:15 +11:00
itsmattkc
ce8c77754d
add embedded external shaders to the node factory
2019-12-15 02:34:47 +11:00
itsmattkc
5b85303b2b
named the clip/block parameters added a few commits ago
2019-12-15 02:34:13 +11:00
itsmattkc
be3ff4bcea
added ExternalNode class to CMakeLists
2019-12-15 02:33:08 +11:00
itsmattkc
b276df2940
implemented node derivative that loads all metadata/code from an external file
...
Implemented the ability to load a node externally. This XML data could also
eventually be copy/pasted between instances of Olive alongside XML data for
other nodes and their connections to allow copying entire node trees.
2019-12-15 02:31:48 +11:00
itsmattkc
0b7782e129
added support for multiple node iterations
...
Optimizes various effects, particularly blurs.
2019-12-15 00:39:28 +11:00
itsmattkc
23905f1eee
added external blur files to the shader resource file
2019-12-15 00:38:36 +11:00
itsmattkc
b5b6ffa0a1
reimplemented blur shaders with new format xml metadata
...
These could be reimplemented almost wholesale, however the code has been
cleaned up and documented and the XML metadata has been updated to support
international translations.
2019-12-15 00:37:44 +11:00
itsmattkc
a4f24e22d3
correct transition connections when a clip is split
...
When a clip is split and has an out transition, the transition should be
connected to the second clip rather than the original clip.
2019-12-14 23:19:50 +11:00
itsmattkc
ecfaa7b79d
fixed bug where Node::InputTimeAdjustment isn't honored in footage retrieval
...
This bug broke frame retrieval from the decoder when the clip in point was
trimmed. This commit fixes it.
2019-12-14 23:17:21 +11:00
itsmattkc
a9f59b54de
ensures copied graph is updated when values are copied
...
While the copied graph doesn't pick up InvalidateCache signals, some node
processing relies on NodeInput update signals to update their internals
correctly.
2019-12-14 23:16:30 +11:00
itsmattkc
c0802c05ad
make block values input parameters rather than class members
...
This allows these values (length and media in) to be modified in the node
graph and for all the automated node input functions to work with them.
2019-12-14 23:15:23 +11:00
itsmattkc
72f2d06ab3
fixed timecodes showing negative numbers between tokens
2019-12-14 23:13:37 +11:00
itsmattkc
2f04a53054
implemented deleting clips in the timeline
...
Also fixed bugs in the Node::GetExclusiveDependencies function and in the
NodeInputArray::RemoveAt function to make this functionality work.
2019-12-14 17:10:06 +11:00
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