Commit Graph
2416 Commits
Author SHA1 Message Date
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