itsmattkc
efd90d5c8f
renderer: use shared backend when caching
...
I think there was an earlier commit with a similar name but turns out
I'd only done foundational work in that commit and never actually
properly set it up. Of course once I did, there were several issues that
needed fixing to make it work correctly, but now it works as expected.
Heavily optimizes larger projects by allowing cache jobs to only copy
what has changed.
2020-07-10 18:39:47 +10:00
itsmattkc
36dd06d2dc
viewer: set video and audio caches to children of the viewer
...
Ensures their thread gets changed along with the viewer. The project
gets loaded/created in a background thread so the GUI can remain
responsive, and is then moved to the main thread for intended event
handling. However if the caches aren't parented, the hierarchy breaks
and the caches remain in a thread whose event loop is quickly destroyed.
Now that they're parented, events can be properly queued on them once
again.
2020-07-10 18:34:16 +10:00
itsmattkc
90bc678377
nodeinputarray: delete sub-params immediately instead of queuing
...
Queuing the destructor caused a potential desync in the node graph that
disconnected blocks after they were reconnected elsewhere. Destroying
immediately keeps this logic synchronized.
2020-07-10 18:26:30 +10: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
a4acf5f99e
nodes: hash strings as their value rather than the struct
...
Erroneously hashed strings incorrectly so the actual string contents
weren't what was being hashed.
2020-07-10 02:39:09 +10:00
itsmattkc
cb93b6bfa1
text: keep text confined within text-safe area
2020-07-07 13:16:41 +10:00
itsmattkc
a45f514f68
renderer: share render backend for auto-cache tasks
...
Since auto-cache events start and stop fairly frequently (and are somewhat
heavy to create/destroy), we can save a lot of cycles over time by sharing
the same backend between them all.
2020-07-06 14:22:17 +10:00
itsmattkc
2207a915a6
viewernode: check if timebase/size have actually changed before signalling
...
Minor optimization.
2020-06-23 05:15:48 +10:00
itsmattkc
65ccac1dfe
renderer: fixed bug that would render frames even after hash matching
...
Also enables the -Wshadow GCC warning to warn against the code bug that
caused this issue (and has caused other issues like it in the past).
2020-06-19 20:25:05 +10:00
itsmattkc
ab74c1579e
mathnode: temporarily disable identity matrix detection
...
This code was faulty and needs extra functionality elsewhere to
actually work correctly.
2020-06-19 02:44:26 +10:00
itsmattkc
57f858dd92
nodetable: correctly update with time
2020-06-18 16:30:57 +10:00
itsmattkc
a871c5081b
nodeparamtable: bare bones table view for node inputs
2020-06-17 17:48:07 +10:00
itsmattkc
41b04d976c
nodes/clips: use node label as clip name and allow changing multiple labels at once
...
Merges the "clip name" and "node label" into the same entity.
2020-06-16 16:23:05 +10:00
itsmattkc
282824ac49
volume: base off math node
...
Shares code with math node rather than having it twice.
2020-06-13 18:13:07 +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
5c5f09a20c
renderer: added generate job
...
For nodes that produce an image on the CPU before sending it to the GPU.
2020-06-13 03:01:23 +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
7b9764254d
math: generate alpha channel only if multiplying a texture by a matrix
2020-06-12 03:44:23 +10:00
itsmattkc
6b7925302f
polygon: generate texture with alpha channel
2020-06-12 03:44:07 +10:00
itsmattkc
e2e8a6859c
renderer: updated audio to work with minor node overhaul
2020-06-12 03:28:43 +10:00
itsmattkc
a6a5c113ca
nodeinput: added convenience function for determining if a value is expected to change over time
2020-06-12 03:27:52 +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
430561e2ac
sequence: made divider a sequence parameter rather than a viewer parameter
...
Doing this makes the preview resolution an explicit project setting rather
than a temporary UI setting. This will allow more consistency when caching.
2020-06-08 14:41:35 +10:00
itsmattkc
593316876f
track: save and load track heights to and from project files
2020-06-05 16:12:00 +10:00
itsmattkc
b143b39869
track: provide control over invalidation when setting length
2020-06-05 15:21:11 +10:00
itsmattkc
de3288893d
renderer: move waveform generation into worker and mutex the waveform
...
Addresses scheduling issues where a backend might be closed (or even
destroyed) before it processes a waveform signal from a worker. Requires
extra multithreading code.
2020-06-05 15:18:14 +10:00
itsmattkc
ddf63b39e1
viewer: don't invalidated zero-length ranges
...
A zero-length range doesn't represent any amount of time and has no need
to actually invalidate anything.
2020-06-05 15:15:59 +10:00
itsmattkc
5eeef76b62
waveform: shift track waveform alongside cache
2020-06-04 23:32:50 +10:00
itsmattkc
0e87762afa
waveforms: moved waveform to track rather than block
...
This is a much more robust and thread-safe system of storing the waveforms.
2020-06-04 18:03:21 +10:00
itsmattkc
12be8f72f1
node: disconnect all parameters before destroying them
...
Fixes a common segfault where destroying a node may ripple a disconnect
signal up the graph and trigger something to try to access its
(now-destroyed) parameters.
2020-06-03 03:40:31 +10:00
itsmattkc
f2050a0342
timeline: optimized rippling workarea, rippling to in/out, and the ripple tool
...
Use cache shift functionality introduced in previous commit to optimize
timeline usage.
2020-06-02 04:24:12 +10:00
itsmattkc
11bfe61208
cache: began base implementation of "shifting" the cache
...
Should be a fairly important optimization to make.
2020-06-02 01:38:12 +10:00
itsmattkc
644fb7cec8
block: fixed buggy cache invalidation behavior when resizing blocks
2020-06-01 17:39:08 +10:00
itsmattkc
1fce380cc6
timeline: automate waveform resizing
...
Now each UndoCommand won't have to handle it (unless it can introduce
specific optimizations).
2020-06-01 14:54:14 +10:00
itsmattkc
a62960ecc0
track: block length changed signals until the cache can be invalidated
...
Optimization, prevents unnecessary processing.
2020-06-01 13:08:08 +10:00
itsmattkc
c2e47a296c
timeline: heavily optimized and improved nearly all timeline optimizations
...
Features a lot of timeline-related cache optimizations as well as general
optimizations and improvements in timeline behavior. Should improve
usability significantly.
2020-06-01 04:42:59 +10:00
itsmattkc
acee6c5958
timeline: reworked ripple/edit to behavior and documented some track behavior
2020-05-31 01:21:08 +10:00
itsmattkc
c1ed84b90e
viewer: receive audio invalidation signal
...
Invalidates and runs cache task correctly even if there are no video
nodes connected.
2020-05-30 02:50:30 +10:00
itsmattkc
8b872e7c29
track: smarter block detection code
...
Improves on the code before it in reliability (perhaps at the expense of some
cycles).
2020-05-25 22:12:25 +10:00
itsmattkc
bf9aa139b1
nodes: improved detection of length changes signalled from the viewer node
2020-05-24 18:11:26 +10:00
itsmattkc
930248ce07
viewer: don't listen for added tracks to invalidate the cache
...
Fixes segfault when adding new tracks.
2020-05-23 02:32:01 +10:00
itsmattkc
f8bd3c1905
nodeinputarray: use deletelater rather than delete
...
Slightly safer code.
2020-05-23 02:31:40 +10:00
itsmattkc
558773538d
cache: fixed audio with new system
2020-05-18 17:16:28 +10:00
itsmattkc
b74ea1a8ba
renderer: reimported audio rendering functions
2020-05-18 12:52:25 +10:00
itsmattkc
814bbe8c22
fixed various segfaults in decoder and renderer
2020-05-18 02:40:58 +10:00
itsmattkc
a0f2035240
cache: fixed segfault if a block was ever disconnected
2020-05-16 00:31:24 +10:00
itsmattkc
53a2956350
cache: added cache task that can be manually invoked
2020-05-15 18:36:02 +10:00