Forum

Performance Issues - Cascaded Mixing

Hi all,
I have a project for visualisaton of different pictures.
Because I want to mix the pictures together I work with cascaded “Mix” Nodes, in order to have smoth flow.
I work with arround 15 FHD Pictures in .jpg format, loaded by “FileTexture(DX9)” Node. Otherwise there is some logic arround for picture arrangement and a boygroup-network, but don´t think this kills the Performance.
I let PerfMeter run and it shows only 7-13 Frames, CPU is 100% … [Intel Xeon E-2224G]
Looks like the processes are complete on CPU, maybee that´swhy?
How can I get more performant visuals. with pictures? are there any ways?
I have to transfer this project to small minicomputers with Celeron N3060 4GBRAM …
So a cheap way is important…
Thank you in advance for your answers!
Best,
Gerd

hi gerd,

welcome to the community!

press STRG+F9 to show the timing of your nodes. higher numbers mean higher cpu load. when you find the culprit, maybe post the core of the problem here. then it will be easier for people to help you.

cheers

generally this isn’t a great idea, post your patch, pretty sure there is many thing to optimize…

Thanks Schlonzo,
DebugMode is great!
in first picture you see the complete patch, there is one subpatch with more than ~1000 - 3000. this is patch with cascaded mixing

Here a view to the subpatch:

what would be a better way?

Do you want to mix multiple textures together or just mix between two different textures at a time?

just two different at a time. like a diashow

looking at your patch it seems you do not really utilize the concept of spreads.
for example take a dir node, read your texture folder and feed the spread of paths into a texture node. then it will output a spread of textures.

then use one mix node and patch a logic which texture gets fed in on which side of the mix (input1; input2), and how you interpolate (1 -> 2 or 2 -> 1).

use getslice(node) to pick your texture from the spread

1 Like

Ahh! Yes taht helps a lot! looks much more compact now. 06-3_faster
but with the logic in visprog. it´s confusing in begining
is there a side with good examples?
That you a lot!

The problem with this approach, that Mix has renderer under the hood, every time you render a separate pass you loose perf.

Normally you have to build some state machine that would take only two textures out of whole array, let’s say Texture A and Texture B.

So texture A is one you gonna blend texture B to, and after blend finishes your texture B becomes texture A and you get new item in B

also i’ve would recommend to switch to dx11

about places to lern look around forum there was plenty of threads about this

Thank you for all your help this helps a lot! So logic working good, but there is one problem.
Why is it not possible to connect “pause” with “pause2” ? 006-3_faster_2

You cannot control an object with itself in the same frame (mainloop fps). Use a framedelay node, (then as a precaution avoid nil) to connect pause2 to pause. Keep in mind that your whole patch will execute one more frame when pause2 is activated. The signal will get received in the next frame by pause.

This practice is ok for simple things like that but avoid using framedelay for more complex logic. Firmata UI is your friend.

1 Like

I guess you meant Automata UI

@gurke
There is also this really old contribution by @david:

@bjoern I tried slideshow before, but was not realy satisfied with it.
@schlonzo Automata Ui is quite powerfull, but I thought although quite complex.
I think for more comlpex systems it´s realy good?!

On my taste complex stuff works better in case you really need it, you can patch your own automata with multiflipflop and a peak spread, it works quite ok in many cases… in any case you got the point with your patch. Yes there are few ways to implement this logic, depending on the end result, you might look for different approach…
There is just too many ways to solve same task… Anyways seems all you need more practice…

1 Like