Commit Graph
372 Commits
Author SHA1 Message Date
itsmattkc 690bdb6581 timeline: make sure track length is updated if a block is disconnected 2020-04-27 14:01:44 +10:00
itsmattkc ac3f49a845 nodes: moved matrix input on "video input" elsewhere
Rather than plugging a matrix into the video input node, the matrix is now
multiplied by the video input using a math node. This is probably more
sensible from a user perspective.

This also means the renderer is tolerant of texture sizes that are not equal
to the sequence size, however most nodes will downsample the texture to the
sequence size (and if not, it will be downsampled once it is cached). Textures
will still *always* be in reference space and the sequence's format. This seems
like the best compromise between backend and frontend congruity.
2020-04-27 04:11:24 +10:00
itsmattkc f61321d68b nodes/timeline: correctly detect when tracks are removed from the graph
Fixes several segfaults that could result from this occurring.
2020-04-27 01:01:12 +10:00
itsmattkc 53ae25a7cb nodes: optimize node graph changes by only updating from inputs that changed
A huge optimization that ensures only the parts of a node graph that have
changed get pushed to the renderer. For thread-safety, the node graph is
copied elsewhere so that users can make changes asynchronously and the graph
can update when its threads are ready. Up until now, if an input value changed,
every node's values would be re-copied, or worse, if a connection was changed,
the entire graph would be recopied. This has been negligible in testing since
we've been largely testing with small graphs, but for massive projects, it's
important that this be as optimized as possible.
2020-04-26 04:16:15 +10:00
Simran Brucherseifer 5da9848de7 Upgrade shaders from GLSL 110 to 150 (OpenGL 3.2) 2020-04-22 11:28:33 +02:00
itsmattkc 258f83d5d3 node: fixed bug that failed to load some default values from shader xml 2020-04-22 18:13:53 +10:00
itsmattkc db117e0780 mathnode: increased decimal places
Also includes general improvements to the slider widget such as an optional
"autotrim" function to cut off trailing zeroes, a "format" string that's easier
to internationalize, and general tidiness.
2020-04-22 17:49:32 +10:00
itsmattkc 9db82ddc2e timeinput: fixed broken ID 2020-04-20 18:55:52 +10:00
itsmattkc cb14af326c removed opacity node
This node has been superseded by the math node since it essentially functions
as a multiply.
2020-04-20 17:48:35 +10:00
itsmattkc 9d9825d8e1 trackviewitem: receive signal when mute is changed from another source 2020-04-19 16:26:48 +10:00
itsmattkc 410f3d25dc fixed menu bugs introduced in f2bff5f150
Turns out setting a QMenu parent *not* in the constructor leads to very strange
behavior. All parents are now set in the constructor.
2020-04-19 16:19:08 +10:00
itsmattkc f2bff5f150 menu: ensure all addMenu() calls are followed with setParent() calls
Ensures memory taken by creating a new menu is freed.
2020-04-19 01:26:54 +10:00
itsmattkc a796cb2c13 nodeparamview: separated the NodeParamView body into a separate widget for nesting
Will allow display of NodeInputArrays.
2020-04-18 23:28:11 +10:00
itsmattkc d3b71e6576 nodes: color management when setting color parameters is now preserved 2020-04-18 17:43:37 +10:00
itsmattkc f73c41d3fa various: implemented multiple project support
This required various changes to various parts of the infrastructure (mostly
using paths to finding the "root project" of any given object throughout).
Now theoretically infinite projects can be opened and accounted for at any
given time.
2020-04-18 01:50:47 +10:00
itsmattkc 832cc986b7 timeline/block: reimplemented enabling/disabling blocks 2020-04-17 02:16:04 +10:00
itsmattkc 2f80be437a node: fixed issue with "taking" values from input tables
As opposed to simply leaving all values in the table, nodes can now "take"
values that they use to free up memory (e.g. "taking" input buffers if they're
used to produce an output buffer).

This is a fairly large change, expect regressions.
2020-04-16 23:12:05 +10:00
itsmattkc b4795c0222 blur: merged box and gaussian blurs into one node
While these are two separate blur effects, merging them into one node will
allow quick swapping of blur methods.
2020-04-16 13:17:30 +10:00
itsmattkc 290c8724c4 Merge pull request #1131 from luzpaz/typos-followup
Fix typos cont.
2020-04-16 12:21:45 +10:00
itsmattkc ca071beb33 Merge branch 'master' of https://github.com/olive-editor/olive 2020-04-16 12:21:09 +10:00
itsmattkc cb6c054b8d trigonometrynode: implemented trigonometry node 2020-04-15 02:41:20 +10:00
itsmattkc c761403ba4 mathnode: override texture x matrix op 2020-04-15 02:07:48 +10:00
itsmattkc a0a7d106dc mathnode: implemented add/subtract/multiply/divide/power functions
Includes implementing combobox UI for the NodeParamViewWidgetBridge.
2020-04-15 01:52:24 +10:00
itsmattkc e5ac9d48a6 mathnode: added path for math between a texture and a matrix 2020-04-14 23:07:00 +10:00
itsmattkc 9f89f57090 track: when length changes, force the new area to invalidate
The track limits cache invalidation signals to the length of the track. On some
platforms, if a block length was changed to the point that it changed the
track length, the track length would change AFTER the cache invalidation and
therefore never end up getting rendered.

This commit ensures that when a track's length changes, the new section is
invalidated regardless of ordering.
2020-04-07 02:34:59 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc c4b11c7bd1 nodevalue: return a null qvariant instead of 0 if there is no matching value in the table 2020-04-04 19:04:44 +11:00
itsmattkc a21e7b1e77 nodeinput: implemented color
Implements converting color to and from string, keyframing color, and
conversion between the class and its keyframe tracks.
2020-04-04 04:19:24 +11:00
itsmattkc f1423c169c nodeparam: move ValueToBytes color from QColor to our new Color class 2020-04-04 04:18:43 +11:00
itsmattkc 0752b75682 mathnode: disable method keyframing and connecting
There's probably no situation where these would need keyframing/connecting.
2020-04-04 04:12:16 +11:00
itsmattkc c9c9bd5174 metareader: use NodeInput's StringToValue/ValueToString when reading default values from XML 2020-04-04 04:11:20 +11:00
itsmattkc 11f962d6b3 media nodes: moved video/audioinput category to media base
They both have the same category, so they can share the same code in their base.
2020-04-03 23:28:03 +11:00
itsmattkc 3dd91a1429 timenode: implemented timenode to allow values to be connected to time 2020-04-03 23:27:38 +11:00
itsmattkc f3290003be colordialog/wheel/gradient: implemented basic UI components for color picking 2020-04-02 13:02:30 +11:00
itsmattkc 1363d2b94c mathnode: expanded math node
Implemented handling of various different types.
2020-04-01 05:21:50 +11:00
itsmattkc 6f0d72c05d renderer: switched audio rendering over to planar buffers
While planar audio cannot be used for playback, it's much easier for processing.
This should lead to cleaner and easier to write code in the future.
2020-03-31 18:01:20 +11:00
itsmattkc 18c36155d7 Merge branch 'master' into mathnode 2020-03-31 02:39:46 +11:00
itsmattkc a855dea8de timeline/project: block serializations to and from xml now include links
Fixes issue where blocks would become unlinked after copy/paste or save/load.
2020-03-31 02:38:14 +11:00
itsmattkc 2bda306866 timeline/various: implemented block copy/paste
Implemented the ability to copy/paste blocks/clips in the timeline. This did
require some large scale changes and reworking of the copy/paste system
introduced a few commits ago, but should be largely functional now.
2020-03-31 02:19:05 +11:00
itsmattkc a143b64ac7 block: don't send cache invalidation signals from length changes
Minor optimization.
2020-03-30 15:11:32 +11:00
itsmattkc 2544c5e832 mathnode: added support for adding samples together 2020-03-29 03:29:18 +11:00
itsmattkc 7100d00060 nodes: made changes to the node system to allow for context sensitive shader code
Primarily implemented for the math node so a new shader can be generated and
compiled based on what inputs the node is receiving.
2020-03-29 03:11:30 +11:00
itsmattkc 52acb272bf mathnode: added parameters 2020-03-29 00:22:44 +11:00
itsmattkc 48d8c8f242 Merge branch 'master' into mathnode 2020-03-28 18:10:38 +11:00
itsmattkc 7bca61608a node: added qstringliterals to node IDs
Minor code optimization.
2020-03-28 18:02:34 +11:00
itsmattkc 938527b9fe mathnode: began math node 2020-03-28 17:51:35 +11:00
itsmattkc 3399227b3a keyframeview: implemented transforming keyframe times to and from sequence time
Since the node graph can have transform cross nodes, input keyframes may occur
at a different times requiring transforming between sequence time and media
time. This commit implements such a mechanism in all UI classes that need it.
2020-03-26 19:17:46 +11:00
itsmattkc c5d3c4ff36 node: implemented convenience functions for transforming time
Implements a function that calculates the time transformation(s) only between
one node and another.
2020-03-26 00:26:13 +11:00
luz.paz 4e1cd870a9 Fix typos cont. 2020-03-21 13:46:38 -04:00
itsmattkc e5ac72fa9d Merge branch 'master' into typos 2020-03-19 12:16:09 +11:00