Coordinated multi-monitor fullscreen

kcoul's icon

I will admit I have not yet tried this as I am waiting for hardware.

But I am looking for preliminary advice on the following scenario.
I intend to build one (or two) high powered PCs with the following graphics card:
https://www.pny.com/NVIDIA_NVS_810_for_Eight_DP_Displays

As you can see it is an unusual model supporting eight simultaneous displays.

I would like to use two of the eight outputs for matching flat monitors, to make a VJ user interface/preview panel (typical production switching and/or VJ style).

From the other 6 displays, I would like to send to an array of 6 projectors projecting onto full 360 projection cylinder screen array, like what you see at the bottom of this page:
http://avstumpfl.com/en/projection-screens/custom-made/curve/curve/

So I face the same kind of problem in two different ways, I need to coordinate a single render seamlessly across multiple displays.

I will focus on the 2-monitor preview first. Although I am trying 1-monitor preview as well, I worry that the preview will be too small since it needs to be 6 times wider than normal relative to the height. The best you can get is 2560x240 or more commonly 1920x180, which would be very hard to see vertically.

So constraint for 2-monitor preview is that the two screens are side-by-side and of the same make/model. I'd like to hit Escape and have the preview line up perfectly along the two monitors. Will this be difficult for me?

Next I will work on a Virtual Reality preview using Graham's Kinect object but ironically this is the simplest of the tools for previewing. I can just map onto a cylinder surface inside of the VR world and the rest will take care of itself.

Finally I will have to coordinate a 6-output display to panoramic visual. I believe if I use the right array of projectors, they can compensate for projecting to concave surfaces themselves, or else I can apply a projection map shader of some kind before the GPU writes the frame buffers to correct, if using projectors not capable of this.

But similarly, I need to have ability to identify the discrete GPU outs and wire up slices of a single panoramic render across all the outputs.

I am looking for any advice regarding these challenges!

Thanks!
PS - Looking forward to sharing the results of these projects in 2017 and beyond :)

kcoul's icon

PPS - Does anyone know if I would be making a mistake with a potentially underpowered graphics card for not just 8 simultaneous displays but also potentially a fair amount of load for the GPU?

Maybe I would be better off getting 2x NVidia GTX 980, 980 Ti, Titan (X, Z, Black....), *not* in SLI? (I think with SLI you can't output from more than 4 displays)

Spa's icon

yep underpowerred card. not only for 3d but also video at this resolution.
Max does not use the SLI neither and does not have slave synchronisation like vvvv

Or you do everything in 1 card with 2 matrox triplehead on windows
or you use another software.

kcoul's icon

Thanks Spa.

My understanding is that you wouldn't want to use SLI anyway because it just combines the computing power of both GPUs without allowing twice the number of outputs.

I want to have modest computing from both GPUs (let's say, playback of 360 video files, but just long rectangular (cylindrical) files, i.e. 11520x1080).

For CG I think I would pre-render these files rather than real-time render.

So really I am looking at building a media playback engine with multi-monitor support, and seeing what's the furthest this can go.
Would Max really not be able to see the outputs of both cards if you had two GTX 980 in Windows? Would the Matrox Triplehead be the only solution? (because I will go that way if it is truly needed)

kcoul's icon

One other clarification: I shouldn't need multiple video synchronization like with vvvv, as the final output I'm desiring is just a single video to be played back with transport sync (i.e. start/stop/playback from 00:00:0000 etc)

In other words, playback of rectangular video which is much wider horizontally than it is tall, to a variety of output modes:
1-screen preview (1920x180 or 2560x240)
2-screen preview (3840x360 or 5120x480)
VR preview (cylindrical surface texture around POV camera)

6-screen production playback (11520x1080)

If the video resolution to be played back were actually 11520x1080, I would want it to playback across the 6 screens arranged in a single horizontal strip. For the preview modes, I'd want it to downsample the resolution to fit into the preview viewport.

Spa's icon

If you want a clean junction beetween your 6 projections, you will need overlaps (one projection fade into the next one.
So your final viewable resolution will be smaller than your total pixels.
Example if each projection is 1920x1080 and they overlap on 320pixels.
your final view (your movie) will be: (6*1920) - (5*320)

Making a good overlapping projection is not easy. the minimum movement of the screen create bad overlaps.

Try with 2 overlapping proj to test it first, but not on a wall, but on your (not perfectly fix) curved screen.
you will realise that you need to create precise geometric (mesh) deformations for each projections.

You will certainly have to cut and synchronise your huge movie, and max is not so good at it.
I dont think you can play 11520×1080 with jit.gl.hap or VIDLL. (+ you want preview window...)
if you do it with max, whitout splitting in multiple synchronised players, i think you will have a hard time getting a good fps.

If you only want to play 1 movie, i will tell you to use a good 'out of the box' player with splitting and mapping solution.

PS: i remenber that you can use only 1 Triplehead DP on OsX, but 2 in Windows.
and Triplehead only output 2x 1920x1080 (but do 3x 1280*800)

SLI is simply not seen and not used by Jitter, so you use only 1 card.
Thats why im telling you to look at other software with synchronisation of sources and outputs.

kcoul's icon

Thanks SPA. Yes, I don't need it to be Jitter necessarily, in fact many of the VJs I know are all preferring I write some sort of output plugin for something like VDMX, Resolume or TouchDesigner instead.

I know other people have solved this problem or else AV Stumpfl would have no one to sell these screens to:
http://avstumpfl.com/en/projection-screens/custom-made/curve/curve/

And yes, agreed about the need to overlap, I do realize I should have compensated for that in my resolution estimations above.
For others following this thread, here are some good white papers on the topic:
(Figure 1): http://www.merl.com/publications/docs/TR2003-26.pdf
(Figure 2/3): http://www.merl.com/publications/docs/TR2005-079.pdf

I realize that this may be coming out of very specialized niche and into the mainstream now, so I am on the early side of this transition.
SPA, or anyone else, what other software would you recommend?

kcoul's icon

In a way, it would be fantastic to somehow compute on a regular GPU or two like a 980, but then push the video to this card for the 'edge overlap' feature. I'm waiting to hear back from Matrox for what they'd recommend currently.

kcoul's icon

I don't think I mentioned the need to simultaneously preview, however, so I'm wondering if Max in Windows could make simultaneous use of IGPU for that purpose, as otherwise I'd have to gang together two C680s.

These are the only cards Matrox sells that will do the higher resolutions per output which might be needed for best results in this kind of application.

kcoul's icon

It looks like another option is Quadro Sync, which might be the way to go via Mosaic...

on the software side for video VIOSO might make the most sense, Max can always be the "glue code" controller of everything via OSC/MIDI etc..
https://avstumpfl.com/en/media-control-systems/wings-av-components/wings-vioso/wings-vioso/
http://www.vioso.com/products_wingsvioso.php

Looks like I am closing in on a solution finally... of course I did not expect Max to have rich support for multi-output coordination but perhaps more to act like a bridge between the graphics and audio sides of the productions..

alain's icon

Hello,
Someone knows if Matrox C680 works well with Max (Windows) ?

Thanks !