Commit Graph
61 Commits
Author SHA1 Message Date
itsmattkc 78e0777c27 fixed title node when using light theme
Fixes #1496
2021-03-22 12:05:36 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc ad4b83a098 new undo system
Also enables undoing when working with node input arrays
2021-01-29 16:10:34 +11:00
itsmattkc 4e5db91c17 keyframeviewbase: cleaned up code and show tooltip values in input's desired format 2021-01-25 11:05:09 +11:00
itsmattkc dfdb375cbf polygon: use string literal 2021-01-22 12:20:41 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc 8a869d0393 use QObject property system now that i know how to signal them 2020-11-27 10:10:24 +11:00
itsmattkc ed6f4eed3e core: changed ortho node ID
Fixes collision where transform and ortho nodes had the same ID. Renames ortho ID and automatically corrects
old projects with the old ID. Bumps the project version as a result.
2020-11-22 22:32:09 +11:00
itsmattkc a6d382f4d4 further improved gizmos 2020-11-22 18:21:24 +11:00
itsmattkc 54cd244801 nodes: added distort nodes
Adds nodes for cropping and transforming
2020-11-22 11:34:37 +11:00
itsmattkc 065fc9e10e miscellaneous shader changes
Since sequence resolution is provided to the nodes now, it no longer needs to be a global in the shaders
Removed some unused shaders
Added default params to ShaderCode to allow skipping types that aren't used
2020-11-22 10:31:37 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 15a29288aa added Q_OBJECT macro to classes that were missing it 2020-11-17 19:13:16 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 0429e70fe0 merged all drawing functions into a single shader processing function 2020-11-10 15:50:13 +11:00
itsmattkc 911b6c2887 textnode: added parameters for default font and font size
Allows text node to be used without having to write HTML (but allows
the option for HTML still).
2020-07-10 02:40:52 +10:00
itsmattkc cb93b6bfa1 text: keep text confined within text-safe area 2020-07-07 13:16:41 +10:00
itsmattkc db8b825876 textnode: implemented vertical align field 2020-06-13 03:42:26 +10:00
itsmattkc 469b1e92d0 nodes: implemented basic text node 2020-06-13 03:01:35 +10:00
itsmattkc af5097bf5f nodes: revert shader ID to string
Much easier to manage this way and fixes a compile issue on several
platforms.
2020-06-12 16:02:29 +10:00
itsmattkc 6b7925302f polygon: generate texture with alpha channel 2020-06-12 03:44:07 +10:00
itsmattkc b3d7158e8e matrix: ensure an identity matrix is created if all values are default 2020-06-12 03:27:36 +10:00
itsmattkc dd7af0e6bd nodes: minor overhaul to functionality
The nodes now have more control over how their accelerated shaders/sample
functions are run, as well as how items are popped off the value tables.
This allows for various optimizations that we didn't have access to before.
2020-06-12 00:54:15 +10:00
itsmattkc 71ec148e76 renderer: moved all shader code into one solidified function
Makes texture-based optimizations easier when they're all in one place.
2020-06-10 01:54:02 +10:00
itsmattkc 2039067fdc renderer/viewer: fixed playback and live updates from value changes 2020-05-15 15:02:30 +10:00
itsmattkc 25b35725f6 nodes: added more default values to nodes 2020-05-09 18:55:42 +10:00
itsmattkc 5b956729b3 gizmos: work towards gizmos in the matrix transform node 2020-05-07 18:12:18 +10:00
itsmattkc 3436740d23 gizmos: consolidated input param dragging code into reusable class 2020-05-07 14:41:50 +10:00
itsmattkc d02e9090b9 implemented core gizmo interaction functionality 2020-05-07 04:45:27 +10:00
itsmattkc 2eb753e99d matrix: comment out broken test code 2020-05-06 23:23:07 +10:00
itsmattkc 67854a2c97 gizmos: use scale instead of matrix transform
Improves appearance of gizmos lines and ensures other controls are drawn in
UI dimensions rather than texture dimensions.
2020-05-06 17:45:44 +10:00
itsmattkc 1ceefb6dba Merge branch 'master' into gizmos 2020-05-06 16:35:40 +10:00
itsmattkc fb625cb76e nodes: removed XML infrastructure 2020-05-06 15:06:37 +10:00
itsmattkc 74d252c5c0 nodes: use defined categories rather than arbitrary string based 2020-05-05 22:12:15 +10:00
itsmattkc c387ce1cd7 polygon node: early crude implementation 2020-05-05 00:22:49 +10:00
itsmattkc cfc5ce24a3 Merge branch 'master' into gizmos 2020-05-02 17:06:49 +10:00
itsmattkc 999e841bc7 nodes: implemented short name
Nodes can provide "short" names for use in the node graph, distinct from their
full names shown everywhere else.
2020-04-29 14:33:57 +10:00
itsmattkc 1cca9de7c5 gizmos: implemented pathway for node to draw on the viewer 2020-04-27 04:34:36 +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 ae7c9597e2 ported solid color generator to external shader 2019-12-15 03:07:10 +11:00
itsmattkc 0b7782e129 added support for multiple node iterations
Optimizes various effects, particularly blurs.
2019-12-15 00:39:28 +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 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 c32a1c8be2 removed last of the NodeOutput dependencies
Since all Nodes have an output that provides all output values now, we now
never need to add an output from a Node derivative. These changes remove the
last of them and disable the ability to add more outputs from a derivative.
2019-12-06 04:21:55 +11:00
itsmattkc d25dda5275 removed all dependence on NodeOutputs
If Nodes only have the one output, we don't need to do so much differentiation
between them. Previous iteration used outputs as like a distinct function
within a Node (e.g. length output would return one result, buffer output would
produce a different result - each run different code to produce their results).
Now in this iteration, it's more accurate to say a Node is just one function
(which seems more appropriate for a node system anyway).
2019-12-06 00:23:26 +11:00
itsmattkc bc0f01d9a3 make nodes more const friendly and prepare their functions for stateless work
Since the nodes won't be holding any rendering data themselves in this system,
we may as well enforce some level of non-write access by setting all the
functions to const. They were already const-friendly, they just weren't
labelled as such.
2019-12-04 20:10:42 +11:00
itsmattkc 492c8f474a added clone functions for nodes
Since nodes are are extremely derivative types, we use a clone/copy function
to produce new types of the derived class easily.
2019-11-22 16:53:30 +09:00
itsmattkc 16ac2fc0e1 sweeping node graph changes for new rendering pipeline
The new rendering pipeline strives to simplify the nodes themselves as much
as possible and move much of the logic to an external rendering engine. This
change removes all of the responsibilities that no longer belong to the
nodes themselves and will soon be folded into the renderer.
2019-11-02 01:39:37 +11:00
itsmattkc 4d96ac9e39 don't police data type connections between nodes
Nodes were previously written to be "strongly typed" in that a parameter's
"type" enforced whether it could be connected to another. All code related
to that has now been removed since not only is it hard to maintain and
likely unnecessary, it's possible the nodes will work differently later on
anyway.
2019-10-25 00:44:14 +11:00