Image warp 4 distinct curved projection screens

Hello, I’m a projection designer and I’m willing to use Nvidia technology for an installation I have to manage.
I have a 4 projector setup that will project images on 4 different curved projection screens.
I will have for shure adjust the geometry for each one of the projector to correct distortions on its own screen and I’d like to drive the 4 1920x1080 displays with a single Quadro card.
Which Nvidia card could suit my need? A Quadro P4000 or a NVS810?
Will I need also a discrete software solution to manage the Warp&Blend technology of Nvidia cards or Is there an integrate software driver solution?
Many thanks for any help.
My best

Hi Igor,

We recommend using the Quadro P4000 for your setup.

NVIDIA does not provide standalone application for edge-blending or warping projectors.

These are a list of companies that can provide that solution:

  • Scalable Desktop -
  • Desktop Warper –
  • VIOSO – Anyblend software -
  • Immersaview – Sim Visuals -

Ryan Park

Hello Ryan,
Thanks a lot for the heads up. I contacted the companies you mentioned.
I’ve got another queston regarding the NVAPI.
One of those companies assumes that I can not warp each output indipendently using the NVAPI tecnology.
I need to be able to warp each output indipendently with it’s own grid but I think that the NVAPI implementation should give me this capability.
Can you tell me if it’s possible to achieve a 4 different warp setup on a single Quadro GPU?
I’m asking because I’m having different indications so I need more clarity from the developers of the technology I intend to use.

Many thanks

Hi Igor,

The NVAPI can apply a different WARP mesh to each display output.

In Programmatic terms the pseudo code would look something like this:

// In the NVAPI samples the info.cpp code has examples of how to do this step.
Identify number of displays attached i.e. layout.number_displays
Identify the displayID for each display.
// Calculate Warp Mesh for each display.  The mesh will be an array of vertices.  This step is generally bespoke per developer.
// Apply the warp mesh per display
        for (int i = 0; i < layout.number_displays; i++)
               // Select the Warp data for the layout.
               // This call does the Warp
               error = NvAPI_GPU_SetScanoutWarping(layout.displays[i].display_Id, &warpingData, &maxNumVertices, &sticky);
               if (error != NVAPI_OK)
                       NvAPI_GetErrorMessage(error, estring);
                       printf("NvAPI_GPU_SetScanoutWarping: %s\n", estring);

NVAPI SDK has samples showing how to find the displayID for each display.

Calculating the WARP mesh is something that the software developer would do. WARP mesh could be predefined shape based on the model of a screen; interactive mechanism for moving warp coordinates to match the screen or some cases developers use a camera based solution to automatically calculate the shape of the display.

The last step is just associating the Warp Mesh with the displayID and using the NvAPI_GPU_SetScanoutWarping api call. Not shown in the code above is swapping out the Warp data for each displayID but this is straightforward after the mesh has been captured.

It’s up to developers on how they specifically implement Warp API into their application.

Ryan Park

Hello Ryan, thanks a lot for the clear reply.
This solves a lot of my doubts.

I’ve found another software solution implementing NVAPI that seems the right one for me.
I’m not shure if I can post it here but seems a lot promising and cost effective.

My best

Hi igorrenzetti,

I would be interested in the software solution that you found! please post it or write me a PM, thanks!

I will post it here, as it could be useful for others.
It’s Immersive Display Pro
Way cheaper of other solutions and it also makes use of the NVapi.
Hope it helps somebody.