Commit Graph
67 Commits
Author SHA1 Message Date
itsmattkc 526f07ba08 implemented demonstrative dip to black transition 2019-12-12 19:00:49 +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 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 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 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 cc8aeea672 started pair of transition derivatives
These will serve as stock transitions and as a reference implementation for
hardware accelerated transitions.
2019-12-09 23:44:27 +11:00
itsmattkc 4bb874a154 fix sigfpe on timecode function if the timebase isn't valid 2019-12-09 23:43:03 +11:00
itsmattkc 0c6ec926b6 started base transition type
Like the base "Block" type, the "Transition" type will not be a node used on its
own, it will have to be derived. This type defines some basic behavior for a
transition (e.g. how much it overlaps its "from" and "to" blocks).
2019-12-07 02:49:30 +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 79ee3bc3df implemented new block system
Fixes recurring design issue that the Blocks were a frequent exception to the
DAG concept. The Blocks connecting to each others inputs/outputs while not
necessarily being "dependent" on each other to produce an image continually
causes issues while trying to create a rendering code path. This redesign
should provide a more "directed" approach to the directed acyclic graph.
2019-12-02 00:37:03 +11:00
itsmattkc ef18980e7c removed connect/disconnect block functions that are unnecessary now 2019-12-01 01:38:52 +11:00
itsmattkc a478b11fd0 removed "previous_input" param from block
It was becoming inevitable to get rid of this, it was continuously an exception
that had to be made to the DAG concept seeing as blocks are never really
"dependents" on each other, i.e. the images they produce have nothing to do
with other blocks. The only exception is a transition which will also be
easier to accomplish with this slightly different design.
2019-11-30 23:24:01 +11:00
itsmattkc 1bc8a20425 never send signals while nodes are still locked
A signal emitted and received in the same thread will call other functions
before returning to the one that emitted the signal. If these other functions
try to lock a mutex while a mutex is already locked by the emitting function,
we get stuck in a deadlock. These changes ensure that a signal is never emitted
by any function until all the nodes locked by it are unlocked.
2019-11-23 17:04:33 +09:00
itsmattkc 2cfccbfbef copy node graph before rendering
Previous iterations would use mutexes to prevent changing of the graph
mid-render, however several user actions would need to capture these mutexes
causing the main thread to hang until the current render job (frame/range of
samples) was complete. We now copy the nodes necessary as part of the "compile"
process so that the main thread shouldn't need nearly as much blocking while
caching occurs.
2019-11-23 08:53:52 +09:00
itsmattkc 9131b32be4 small code cleanup in block class 2019-11-23 01:56:13 +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 54ecc01dbe clarified some fixme comments 2019-11-19 22:14:11 +09:00
itsmattkc a9660201f1 miscellaneous other changes to make audio rendering work
Many changes were made throughout the codebase to support audio, these are
most of the small changes necessary.

The audio support still is not perfect. I still need to write in resampling
support. After that it should work correctly with all audio types.
2019-11-15 13:57:49 +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 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 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
itsmattkc 7dec79ceaa various changes to rendering flow and structure 2019-10-23 00:42:52 +11:00
itsmattkc 5f86b9b9c7 nodes are given a time range 2019-10-22 14:58:06 +11:00
itsmattkc 5105568291 moved renderer files 2019-10-19 14:02:15 +11:00
itsmattkc 09b3a1970d underline clips that are linked 2019-10-17 11:07:36 +11:00
itsmattkc 276478c6d0 created function that splits and preserves links 2019-10-17 10:51:50 +11:00
itsmattkc a63e8c8719 added link support to blocks 2019-10-16 22:33:52 +11:00
itsmattkc d6483916ac base audio renderer classes created 2019-10-16 13:51:56 +11:00
itsmattkc cf3e8d80d1 implemented 'ripple to' timeline actions 2019-09-24 22:45:30 +10:00
itsmattkc ef39151b53 fixed splitting bug 2019-09-24 14:45:42 +10:00
itsmattkc 9fa22938b9 work towards making timeline actions all undoable 2019-09-23 23:00:15 +10:00
itsmattkc d0d4756129 some ripple behavior fixes 2019-09-21 01:01:15 +10:00
itsmattkc 7b15a63e06 changed refresh system slightly and added include dirs for deps 2019-09-11 19:51:31 +10:00
itsmattkc 1879dac247 minor fixes and debug output 2019-09-11 17:35:45 +10:00
itsmattkc ba7a10177f fixed various caching issues when rapidly changing values 2019-09-09 04:07:51 +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 e87ed9dd3d finished hashing algorithm for cache 2019-09-02 19:51:31 +10:00
itsmattkc f2972651af several adjustments to node caching system 2019-09-02 11:29:50 +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 6b24ac69d6 validations added for moving and trimming 2019-08-22 14:52:52 +10:00
itsmattkc 78d96ecd28 implemented splicing into the timeline 2019-08-20 18:13:34 +10:00