Skip to content

Multi-display concepts#


Multi-display is the concept of using multiple displays such as projectors, screens or LED panels to achieve a particular visual goal.

Multi-display can be achieved with one computer and one graphics card:

But also with one computer and multiple graphics cards, multiple projectors or LED panels:

If you need more physical outputs than you can get on one computer, or if you need more performances, you can use multiple networked computers, which form a Cluster:

Cluster rendering requires that all computers and displays be perfectly synchronized.

For more information see Cluster concepts.

Portability - Create once, use everywhere!#

One goal of MiddleVR is to help you deploy your application on many different systems. If you system is modified, you only have to modify its description in a configuration file.

All the applications using MiddleVR will be automatically reconfigured to adapt to your changes at runtime when the configuration is read.


A Camera is like a real world camera. It captures a view of the virtual world. It can also represent a user's eye position and orientation. You can either use regular cameras or stereoscopic cameras, which will render two slightly different views so as to recreate the 3D perception.

Regular cameras in 3D engines are said to be symmetrical: to compute a correct perspective, they suppose that the viewer is always exactly in front of the center of the screen:

The particularity of a VR camera is that it can be assigned a screen.

A screen is exactly like a window to the virtual world. Once the camera is associated with a screen, its view frustum (pyramid of vision) is always totally constrained by this screen. This means that the view is dependent on the position of the camera but also on the position of the screen. At this point, if the user is not exactly facing the center of the screen, the view frustum will not be symmetrical: the camera is said to be asymmetrical.

In the following pictures, the screen is represented as a gray rectangle. Notice how the camera frustum always matches the screen:

If the camera or the screen moves, the camera frustum will always match the screen.

This is exactly as if you're looking through a window: if the camera is close to the screen, it's like when you stand close to a window: you see a lot of the outside world.

When you go away from the window, your field of view gets narrower. When you move left or right, you see a different part of the world.


A Viewport is simply the layout of cameras on a display. A Viewport is a 2D area on your display where you render a particular Camera.

For example here you can see three different viewports that were each assigned a Camera:

This will result in the following layout in your 3D application:


A Display is only the electronic part of a viewing system: a combination of your graphics card and the pixels in your projector or monitor. A Display knows about the refresh rate and the resolution of your monitor or projector. The actual physical display surface needed to compute the correct perspective is defined by the Screen.


A Screen is the physical representation of a display surface. A display surface can be for example a projection screen, LED panels or a computer monitor. In MiddleVR, a Screen is useful to specify the position, orientation and size of the display surface.

A screen.

A Screen doesn't hold any information about resolution or refresh rate. This information is handled by the Display.

A Screen is used by a Camera to compute the correct perspective.

3D Nodes#

MiddleVR uses a hierarchy of 3D nodes to describe the physical parameters of your system.

This representation is made up of cameras, screens and 3D nodes.

A 3D node represents real world objects, like a screen, or a body part like a user's head, hand, or eyes (i.e. cameras).

In the 3D nodes view, you can configure what your system looks like "in the real world": where are the screens/displays located, what body parts of your user you're tracking, how they're seeing the virtual world.

A basic 3D node is represented as a blue square.

MiddleVR nodes hierarchy#

The hierarchy is the whole "tree" describing your system and users.

The root of the hierarchy represents the physical center of your system. We call it the "SystemCenter".

All the other elements of your system will be positionned in space with respect to this center node.

Coordinate system#

MiddleVR uses a right-handed coordinate system, with X pointing to the right, Y pointing away from the user, towards the screen, and Z pointing up.

The coordinate system of MiddleVR.

Note: It is different than the one from Unity.

Multi-GPU Vs. Nvidia Mosaic#

According to Nvidia, Mosaic is a technology that lets the system views multiple displays as a single unified desktop environment without software customization or performance degradation. However our in-house tests showed that one GPU only was used with Mosaic whereas our Multi-GPU option used significantly every GPU. With deferred-rendering, we even reached x2 better performances between Multi-GPU and Mosaic with two graphics cards.

Nevertheless the Multi-GPU option comes at a price because it forces the use of clustering and so to manage its difficulties (see the cluster section).