Page 1 of 2

Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 3:50 am
by Shem Namo
Image
Learn Now FX would like to present:
Nova, A Brand New Particle Background Builder Fuse.

Create Dynamic Abstract Backgrounds with Ease!!

Features include:
  • Creates a Customize-able Particle Background
  • Completely Procedural
  • Works in The Free Version of Davinci Resolve
  • Dynamic User Interface
  • GPU Accelerated
This works in the free version of Davinci Resolve and Fusion.

GPU Accelerated, Compatible with:
  • Metal
  • Cuda
  • OpenCL
Since this Fuse uses DCTL for GPU Acceleration, it only works in Fusion 15+
You can get Nova for FREE on the Learn Now FX Website

I would like to Thank all of my friends here on WSL for teaching me how to code.
I want to give a special thanks to @Midgardsormr , @AndrewHazelden , @intelligent machine ,
@SecondMan , @PeterLoveday , @Aleksander,
@chrisr, @thibaud , and everyone else who helped me learn!!

Thank you,
I really appreciate it!!
@SecondMan, if this is relevant and you have some time, could this pretty please be a part of the WSL banner collection? Thank you :)

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 5:55 am
by intelligent machine
Very cool, David!
I'll check it out for sure.

I'd suggest making a short, highlights teaser video just showcasing the end result of effect variations... for those of us who don't want to sit through an 18+ minute tutorial video to see what it does...and your intro is soooooo Andrew Kramer!

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 6:07 am
by Shem Namo
Thanks Sam!!
That's a great idea!! I'll make sure to make a highlight video ASAP.
and your intro is soooooo Andrew Kramer!
:mrgreen:

Thanks again,
David

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 7:36 am
by ShadowMaker SdR
It looks really cool David. I agree with Sam about doing a highlight reel. The Andrew Kramer thing I don't mind, because it's such a recognizable thing. Whenever I do a tutorial I make sure to say 'a very ex-ci-ting tutorial' at least once. ;-)
One technical thingee though: using the DVE in your tutorial. Why? Everything you do in there, you can do right inside the Text+ tool and if you do that the results will be much cleaner, because you stay in the 'vector realm' when resizing. Now you lose a lot of quality which is a pity for something that's supposed to show off your skills.

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 8:56 am
by Shem Namo
Thanks Sander!!
I'm really glad you guys like it!!

Hmm, I didn't think about that, thanks for the tip!!
I'll make sure to use it the next time around!!

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 11:49 am
by SecondMan
Fun Fuse! Thanks for sharing, David! You've come a long way already :)

I've played around with it and it works well, including the effect mask ;)

I did find an issue with Scatter Solid - you can see it happen at 0.5 if Ease Scattered Solid is kept to its default (it shifts with the latter adjusted).

I'd like to offer a little bit of constructive criticism if you don't mind. I don't know how this is built, so you tell me if any of this is possible, but I very quickly ran into the limit of what this tool can generate. I was looking for ways to adjust particle count, line thickness, turning the connector dots on and off and changing their size, etc. If there would be more control over those individual components, the tool would be made much more general-purpose and work generated with it could be less "oh, that's just that tool I know".
Shem Namo wrote: Tue Jul 07, 2020 3:50 am@SecondMan, if this is relevant and you have some time, could this pretty please be a part of the WSL banner collection? Thank you
Sure, absolutely :) - banner size is 1170x320, try to keep the size reasonable. PM it to me and I'll get it up there!

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 12:15 pm
by SecondMan
One thing - there seems to be no attribution for any of the code anywhere in the Fuse?

You're not forgetting to credit your sources, right, @Shem Namo?

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 12:18 pm
by intelligent machine
After running this in a loop over 300 frames for a little bit and adjusting parameters I get the following error which I'm unable to recover from without closing the comp:
stack traceback:
[C]: in function 'GetParamBlock'
...on Support/Blackmagic Design/Fusion/Fuses/Nova-v1.1.fuse:758: in function <...on Support/Blackmagic Design/Fusion/Fuses/Nova-v1.1.fuse:714>
Nova1 failed at time 164
table overflow

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 12:24 pm
by intelligent machine
Nova Fast Noise:

Image
  1. {
  2.     Tools = ordered() {
  3.         Nova1 = Fuse.Nova {
  4.             CtrlWZoom = false,
  5.             Inputs = {
  6.                 GlobalOut = Input { Value = 300, },
  7.                 Width = Input { Value = 1920, },
  8.                 Height = Input { Value = 1080, },
  9.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
  10.                 Layers = Input { Value = 7, },
  11.                 Zoom = Input {
  12.                     SourceOp = "Nova1Zoom",
  13.                     Source = "Value",
  14.                 },
  15.                 ZoomSpeed = Input { Value = 4.38, },
  16.                 AutoZoom = Input { Value = 1, },
  17.                 ScatterSolid = Input { Value = 0, },
  18.                 EaseScatteredSolid = Input { Value = 0, },
  19.                 BrightencloseLines = Input { Value = 0, },
  20.                 FadeBack = Input { Value = 0.8, },
  21.                 Transform = Input { Value = 1, },
  22.                 Center = Input { Value = { 0.5, 0.461111111111111 }, },
  23.                 Scale = Input { Value = 0.0187, },
  24.                 RotationSpeed = Input { Value = 10, },
  25.                 AutoRotate = Input { Value = 1, },
  26.                 Glow = Input { Value = 1, },
  27.                 Bloom = Input { Value = 1.976, },
  28.             },
  29.             ViewInfo = OperatorInfo { Pos = { 330, 49.5 } },
  30.             Version = 110
  31.         },
  32.         Nova1Zoom = BezierSpline {
  33.             SplineColor = { Red = 254, Green = 144, Blue = 123 },
  34.             NameSet = true,
  35.             KeyFrames = {
  36.                 [0] = { 0, RH = { 100, 133.333333333333 }, Flags = { Linear = true } },
  37.                 [300] = { 400, LH = { 200, 266.666666666667 }, Flags = { Linear = true } }
  38.             }
  39.         }
  40.     },
  41.     ActiveTool = "Nova1"
  42. }

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 12:46 pm
by Shem Namo
Fun Fuse! Thanks for sharing, David! You've come a long way already
Thank you Pieter, those words mean a lot coming from you!! :)
I did find an issue with Scatter Solid - you can see it happen at 0.5 if Ease Scattered Solid is kept to its default (it shifts with the latter adjusted).

I'd like to offer a little bit of constructive criticism if you don't mind. I don't know how this is built, so you tell me if any of this is possible, but I very quickly ran into the limit of what this tool can generate. I was looking for ways to adjust particle count, line thickness, turning the connector dots on and off and changing their size, etc. If there would be more control over those individual components, the tool would be made much more general-purpose and work generated with it could be less "oh, that's just that tool I know".


There's definitely room for improvement, thank you for your constructive criticism. ;)
I'll try to implement these features as soon as I can.
Sure, absolutely :) - banner size is 1170x320, try to keep the size reasonable. PM it to me and I'll get it up there!
Thanks Pieter, I'll send it as a G-Drive link to save bandwidth ;)
One thing - there seems to be no attribution for any of the code anywhere in the Fuse?
This is were I don't know what to do.
I made this tool following a ShaderToy tutorial, I should attribute the code, right? I honestly don't know the law/custom.
After running this in a loop over 300 frames for a little bit and adjusting parameters I get the following error which I'm unable to recover from without closing the comp:
Hmm, that's not good :oops:
I need to fix this ASAP, any ideas what might have caused it?
Are you running Metal, CUDA, or OCL?

Thank you everyone,
I really appreciate your support!!
David

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Tue Jul 07, 2020 1:49 pm
by intelligent machine
Shem Namo wrote: Tue Jul 07, 2020 12:46 pm
After running this in a loop over 300 frames for a little bit and adjusting parameters I get the following error which I'm unable to recover from without closing the comp:
Hmm, that's not good :oops:
I need to fix this ASAP, any ideas what might have caused it?
Are you running Metal, CUDA, or OCL?
Metal

I setup a comp with 50k frames and pasted the tool below into it and let it run until the error appeared in the console. I started receiving the error messages after playing 2140 frames. This test was a continuous play through without looping but the same occurs when looping a short timeline.
table overflow
stack traceback:
[C]: in function 'GetParamBlock'
...on Support/Blackmagic Design/Fusion/Fuses/Nova-v1.1.fuse:758: in function <...on Support/Blackmagic Design/Fusion/Fuses/Nova-v1.1.fuse:714>
Nova1 failed at time 2140


My assumption is a buffer is being initialized and filled and when full it just stops. It needs to be flushed.
I haven't looked over the source code at all. Are particles being destroyed when no longer in view?

BTW
My GPU is a Radeon Pro Vega 64 with 16GB of HBM2 memory.
I'm playing this back in HiQ mode without at full speed and the system activity monitor doesn't show anything unusual with the GPU.

Code: Select all

{
	Tools = ordered() {
		Nova1 = Fuse.Nova {
			CtrlWZoom = false,
			Inputs = {
				GlobalOut = Input { Value = 50000, },
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				Layers = Input { Value = 5, },
				Zoom = Input { Value = 266.5, },
				ZoomSpeed = Input { Value = 1.56, },
				AutoZoom = Input { Value = 1, },
				EvolutionRate = Input { Value = -5.89, },
				ScatterSolid = Input { Value = 0.694, },
				EaseScatteredSolid = Input { Value = 0.375, },
				FadeBack = Input { Value = 0.8, },
			},
			ViewInfo = OperatorInfo { Pos = { 330, 16.5 } },
			Version = 110
		}
	},
	ActiveTool = "Nova1"
}

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Wed Jul 08, 2020 12:14 am
by SecondMan
Shem Namo wrote: Tue Jul 07, 2020 12:46 pmThis is were I don't know what to do.
I made this tool following a ShaderToy tutorial, I should attribute the code, right? I honestly don't know the law/custom.
It's actually really simple, in principle (though practically it can get complex, but I don't think that applies here). You don't have to immediately worry about the legality of it, just think of it this way - you're using something that is made by someone else, so you give them credit for it. It's a way of saying thanks and being respectful of the efforts made by someone else.

Sometimes there's a copyright license attached to a work, like GPL or MIT or CC, which says exactly what you can and cannot do when you create a copy or a derivative of a work. Sometimes there is not, so in that case what I'd do is put a comment in your code that says you're using such and such code from someone and add a link to the original work.

Hope that helps explain it. Enjoy your banner, by the way ;)

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Wed Jul 08, 2020 1:05 pm
by Shem Namo
Thanks for explaining it Pieter, it makes a lot of sense.
I added the comments to the fuse,and I'll publish it as soon as I figure out how to fix the issue Sam encountered.
Enjoy your banner, by the way
Thank you so much, I really appreciate it!!
:cheer: :cheer: :cheer:

@intelligent machine , I tried the setup that you shared and I got the same issue,
I'm trying to fix it and will hopefully update it very soon.

I assume the the particles self destruct once the condition in the for loop becomes invalid.
Isn't that how it usually works?

I just can't figure out why it fails at exactly frame 2135(On my system too).

Thanks for reporting Sam, I really appreciate it!!
By the way, did you create that setup to test the limits of the fuse, or were you going to use the results in a project?

Thanks again,
David

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Wed Jul 08, 2020 4:23 pm
by intelligent machine
Shem Namo wrote: Wed Jul 08, 2020 1:05 pmBy the way, did you create that setup to test the limits of the fuse, or were you going to use the results in a project?
When initially testing features I just played a loop of 300 frames while adjusting parameters while playing. I noticed the errors several times and figured it happens around the same time in playback so I extended out the comp time to play continuously without looping.

It seems to be cumulative, meaning you can work on the comp for an hour and play through it intermittently and eventually it will fail when that limit is reached.

Re: Nova | A FREE Particle Background Builder Fuse for Fusion/Davinci Resolve [GPU Accelerated]

Posted: Thu Jul 09, 2020 9:49 am
by Midgardsormr
Here's some data that might be helpful. I'm not sure what to do with it, but maybe someone who knows a bit more about LuaJIT can shed some light:

I dumped the value of params immediately after assignment and got something that looks like this: cdata<struct 4763>: 0x29799b88. That number right after struct climbs in value on every frame, eventually reaching a value of cdata<struct 65499>: 0x2bf89990. That is suspiciously close to the maximum value of a 16-bit number.

My guess is that the Fuse is storing the params block in a table that gets a new entry on every frame, but it's hidden in the C end of LuaJIT. I tried adding a table constructor of local params = {} right before the line that creates the block, but that had no effect. I have no idea how to manipulate that cdata struct.