Forums > MaxMSP

Large matrix performance issues?

June 7, 2012 | 7:28 am

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!


June 7, 2012 | 10:22 am

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
June 7, 2012 | 10:50 am

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.


June 7, 2012 | 11:55 am

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:

– Pasted Max Patch, click to expand. –

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!


June 7, 2012 | 11:56 am

trust me! i’ve searched!



dtr
June 7, 2012 | 1:01 pm

> 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.


June 7, 2012 | 1:17 pm

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



dtr
June 7, 2012 | 1:57 pm

please do…

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


June 7, 2012 | 2:59 pm

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

– Pasted Max Patch, click to expand. –

and adjusted it a little!


June 8, 2012 | 9:26 am

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
June 8, 2012 | 10:18 am

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


June 8, 2012 | 10:50 am

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

Sending the patch.

– Pasted Max Patch, click to expand. –

Luis Marques



dtr
June 8, 2012 | 12:38 pm

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?


June 8, 2012 | 3:36 pm

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



dtr
June 8, 2012 | 4:00 pm

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


June 10, 2012 | 2:38 am

Yes, without all pwindows framerate is about 30fps which is good. But that’s not the point, because the movies were resized to 320×240 at the output of jit.qt.movie. What I really want to find is a effective way to process large matrices (1920×1080) 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
June 10, 2012 | 1:59 pm

Some questions:

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


June 10, 2012 | 2:47 pm

I record videos using jitter and JPEG codec.
In this patch I got 30fps without all pwindows. Load and process 1920×1080 videos the framerate is significantly lower (5fps/10fps). Although, resizing and processing 320×240 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
June 10, 2012 | 3:07 pm

- 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.


June 11, 2012 | 4:31 pm

Hi.

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

Thanks

Luis Marques


Viewing 20 posts - 1 through 20 (of 20 total)