Commit Graph
51 Commits
Author SHA1 Message Date
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 d6247078b4 improved various functions to support nodeinputarrays 2019-12-06 03:42:53 +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 07cb0bc44a disconnect input signals when destroying
Fixes a "pure virtual method" crash. The inputs will try to send invalidate
cache signals through the node while it's being destroyed if these are left
connected. There's no purpose to sending invalidate cache signals since any
nodes affected by this one will automatically invalidate the cache from its
outputs being disconnected and the node being destroyed so this shouldn't
cause issues.
2019-12-02 01:32:16 +11:00
itsmattkc 24091f9810 explicitly destroy NodeParams in Node destructor
NodeParams used to be destroyed automatically through the QObject system, but
now that NodeParams perform actions that access the parent Node object in
their destructor, the NodeParam destructor needs to be called before the Node
has been fully destroyed. By destroying explicitly in the Node destructor we
accomplish this.
2019-12-02 00:14:33 +11:00
itsmattkc da680094bf created NodeInputArray parameter type
It seems unwise to let NodeInputs take more than one value, but at times
it makes sense to create a list or array of inputs. This class will create
sub-parameters as an easy way to provide variable inputs while also enforcing
one connection per input parameter.

This is also the primary motivation for the previous commit (disambiguating
when a NodeParam's parent is a Node vs some other type).
2019-12-01 00:01:25 +11:00
itsmattkc b233aa5319 added signal for an edge changing that can ripple through the graph
Useful for detecting when a graph needs recompiling, in tandem with the
"InvalidateCache()" signal when necessary, this signal ripples through the
nodes when any of the connections change which will likely need handling by
the renderer.
2019-11-23 08:51:15 +09:00
itsmattkc bc9b7bc4f0 add mode for copying values only and not connections
Sometimes we'll be copying nodes without wanting to copy their connections,
since we'll want to connect them to equivalent copies rather than connecting
them to the same nodes the originals were connected to. We now have an extra
parameter to distinguish such operations.
2019-11-23 01:51:36 +09: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 3b224c7638 multithreaded download and files that probably should have been in the last
commit

For testing the new iteration, the texture cache disk download was written
into the main thread instead of into the separate threads. Now they're back
in separate threads again.

Also I think some of these files probably should have been in the previous
commit.
2019-11-06 09:14:20 +11:00
itsmattkc 663ae56ac4 more coherent render threading for now
Once again, conceptually this system should work, however it does not seem to
be the most efficient and it wouldn't surprise me if the multithreading was
eventually upgraded to an even more coherent system one day. However for
"core principles" this should be fairly decent.
2019-11-03 04:05:43 +11:00
itsmattkc 788502cd11 removed another unnecessary node function 2019-11-02 18:12:54 +11: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 77bcb70dac started porting renderer to new portable form 2019-10-31 19:14:58 +11:00
itsmattkc 401aff52a8 attempts at folding opencl support in 2019-10-28 18:21:20 +11:00
itsmattkc 5f86b9b9c7 nodes are given a time range 2019-10-22 14:58:06 +11:00
itsmattkc 3411e45774 preliminary support for multiple timeline sections 2019-10-05 07:33:27 +10:00
itsmattkc 9806c772ac improved sequence creation 2019-09-27 03:38:21 +10:00
itsmattkc 9fa22938b9 work towards making timeline actions all undoable 2019-09-23 23:00:15 +10:00
itsmattkc 16a4897236 minor improvements 2019-09-17 21:25:00 +10:00
itsmattkc a38d257800 added more threading locks 2019-09-11 00:01:42 +10:00
itsmattkc 9ff4a81ec8 partially functional transform 2019-09-09 18:11:04 +10:00
itsmattkc ba7a10177f fixed various caching issues when rapidly changing values 2019-09-09 04:07:51 +10:00
itsmattkc c2e59b0855 alpha over and opacity nodes are now functional 2019-09-06 15:45:12 +10:00
itsmattkc 12bc5839a6 fixed various caching issues 2019-09-02 22:58:44 +10:00
itsmattkc 3a9af58344 adjusted invalidatecache function 2019-09-02 20:11:42 +10:00
itsmattkc b563b9e783 began node hashing for improved cache 2019-09-02 12:06:24 +10:00
itsmattkc f2972651af several adjustments to node caching system 2019-09-02 11:29:50 +10:00
itsmattkc 7dc2290496 shift renderer prototype to new node structure 2019-08-28 02:40:44 +10:00
itsmattkc 5afe7d523c shifted to new dependency structure 2019-08-28 01:24:50 +10:00
itsmattkc b9ce02a0ec separated setting time and processing node functions 2019-08-27 23:38:24 +10:00
itsmattkc 438e7081f9 foundations for background caching 2019-08-24 22:16:01 +10:00
itsmattkc 7d9d12ee0b began support of timeline tracks/channels 2019-08-15 23:40:22 +10:00
itsmattkc 4f4737a395 added some more timeline functions 2019-08-13 21:50:39 +10:00
itsmattkc 02ea535c8a added IDs to parameters for serialization 2019-08-13 17:22:32 +10:00
itsmattkc dc4a460e32 node importing down 2019-08-11 21:13:16 +10:00
itsmattkc 149f3fa907 timelineview is now a true view of the blocks at all times 2019-08-11 21:01:37 +10:00
itsmattkc c6dfab4caf use decoder ID in media node 2019-08-08 15:52:53 +10:00
itsmattkc f3b60369aa use IDs for multiple decoders 2019-08-08 15:38:58 +10:00
itsmattkc badcade0b6 added base 'block' node 2019-07-27 02:50:22 -07:00
itsmattkc 9f6d0f9dc7 documented new node classes 2019-07-17 03:05:25 -04:00
itsmattkc a78cc3950a various node UI improvements 2019-07-16 13:25:38 -04:00
itsmattkc 44668e144c code cleanup and better text display 2019-07-15 13:07:17 -04:00
itsmattkc 3ec133f254 can visually see connections between parameters in the node view 2019-07-15 12:43:56 -04:00
itsmattkc 837d43fe07 moved various classes from root to common folder 2019-07-15 03:58:39 -04:00
itsmattkc dc2101938e began node viewer for dag insight 2019-07-15 03:52:44 -04:00
itsmattkc f2d11662c9 finished prototype of nodes providing a texture to a viewer 2019-07-13 03:13:59 -04:00
itsmattkc d76691a9ef began draft of internal node rendering structure 2019-07-10 23:06:09 -04:00
itsmattkc 08a75b58dd fleshed out node edges 2019-07-10 03:22:53 -05:00