Large matrix performance issues?

MubiQ's icon

Hi all!

I have a show approaching in which a visualisation will be projected onto a hi def 1280 720 screen. The issue is that the project requires video, however i have found that matrices of these dimensions grind the performance down to a halt! I am usng a small number of jit.gl.gridshapes simultaneously, but surely there must be a method of over/underlaying video that wont cause that much destruction?!?

I have a macbook pro with 8 gig of ram 2gHz i7 processor and the ATI Radeon 9460 (i think) so id be surprised if it cant cope? Any advice is really welcome at this stage!

spectro's icon

Not a Jitter master here, but some (probably obvious) considerations: Are you creating matrixes of HD size to combine the gridshapes and video? That will be slow... It's faster to render directly to OpenGL, adding video via Jit.gl.videoplane. Also, unless the resolution of your video is actually 1280 * 720, you can scale the image up if needed. Also if you've already done that and/or still need to squeeze yet more performance, look at uyvy colormode for the video...

dtr's icon

What's your rendering flow like? Post a patch maybe? As spectro says, do everything in OpenGL (and keep it there, no readback to matrices!) and you should be fine. With video and 3D it's very easy to destroy framerate if not taking care of these things.

See Jitter tutorial 49 for UYVY and jit.gl.videoplane.

MubiQ's icon

well heres the issue:

my patch includes opengl and currently everything is being rendered on videoplanes straight to window. the issue is that amongst having a few jit.gl.gridshapes floating about, i'm actually using some dynamically resizing gl circles as video masks to allow another video to come through. the method i'm using is derived from this:

Max Patch
Copy patch and select New From Clipboard in Max.

however as you can see, the mask is generated using a matrix. is there any other effective way around video masking that doesesnt use a matrix?

cheers! i'm in a real pickle here!

MubiQ's icon

trust me! i've searched!

dtr's icon

> is there any other effective way around video masking that doesesnt use a matrix?

sure, draw you mask shape in GL, over the videoplane etc. set blend_enable and the correct blend_mode and you should get similar results.

not sure but i wouldn't be surprised if an andrew benson jitter recipe does this kind of stuff.

MubiQ's icon

actually, i reckon i might have cracked the ideal method! i'll post if anyone is interested!

dtr's icon

please do...

come to think of it: you can do the alphaglue thing with shader and textures as well.

MubiQ's icon
Max Patch
Copy patch and select New From Clipboard in Max.

well.. i say "i've cracked it".. what i meant was i found this:

and adjusted it a little!

Luis Marques's icon

Hi,

I tried to do the same, unfortunately without success... Processing large matrix will cause fps to drop, significantly.
Anyway, any new ideas how to make large matrix process lighter?

Luis Marques

dtr's icon

There's many approaches, depends on what you wanna do. Do you have a patch/description?

Luis Marques's icon

I'm looking for an effective way to playback 2 HD (1920x1080) movies, and process one of them in OpenGL. I got satisfactory results when I resize the videos to 320x40. However loses high quality when I blend the videos after process one of them.

Max Patch
Copy patch and select New From Clipboard in Max.

Sending the patch.

Luis Marques

dtr's icon

For starters, get rid of all the pwindows. The pwindow after each of your slabs forces Max to copy the texture (GPU) back to a matrix (CPU) for displaying. How does it run without all of those?

MubiQ's icon

thanks for that, i've actually already got rid of the pwindows, and we're running beautifully. cheers!

dtr's icon

see that's what i meant with "it's very easy to destroy framerate if not taking care of these things" ;)

Luis Marques's icon

Yes, without all pwindows framerate is about 30fps which is good. But that's not the point, because the movies were resized to 320x240 at the output of jit.qt.movie. What I really want to find is a effective way to process large matrices (1920x1080) without the need to resize the movies before process them. Resize causes loss of quality, I'm trying to avoid that loss.

Luis Marques

dtr's icon

Some questions:

- what codec are your movies?
- is your CPU maxed out when running this?
- have you tried in UYVY mode?

Luis Marques's icon

I record videos using jitter and JPEG codec.
In this patch I got 30fps without all pwindows. Load and process 1920x1080 videos the framerate is significantly lower (5fps/10fps). Although, resizing and processing 320x240 videos got a good framerate but, do not make the playback natural, without mentioning the loss of quality.
UYVY could be an option, I just have to try it.

dtr's icon

- is your CPU maxed out when running this?

I'm asking this to know if the bottleneck is on the CPU or GPU side.

> UYVY could be an option, I just have to try it.

Please do.

Btw, you have interp, fsaa and other settings on your jit.window. Try removing all that. Might be some fps choppers in there.

Luis Marques's icon

Hi.

Your tips did work!
I got 30fps whit 1920x1080 videos plus processing!

Thanks

Luis Marques