# US 2018/0322682 A1 · Method and apparatus for rendering perspective-correct images for a tilted multi-display environment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322682 A1
- Document ID: US20180322682A1
- Status: Published application
- Kind: A1
- Application number: 15/652,109
- Filed: 2017-07-17
- Published: 2018-11-08
- Earliest claimed: 2017-05-05
- Assignees: NVIDIA Corporation
- Applicants: Nvidia Corporation
- Inventors: Rouslan Dimitrov; Yury Uralsky; Lars Nordskog; Dmitriy Zhdan
- Web page: https://patentgrep.com/patent/US20180322682A1

## CPC

- G06F 3/1446: {display composed of modules, e.g. video walls}
- G06F 3/1431: {using a single graphics controller}
- G06T 15/005: {General purpose rendering architectures}
- G06T 15/205: {Image-based rendering}
- G09G 5/14: Display of multiple viewports
- G09G 5/373: for modifying the size of the graphic pattern
- G09G 5/395: Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen (G09G5/399 takes precedence)
- G09G 2320/0693: Calibration of display systems
- G09G 2340/04: Changes in size, position or resolution of an image
- G09G 2340/0442: Handling or displaying different aspect ratios, or changing the aspect ratio
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

Techniques for rendering images on multiple tilted displays concurrently to mitigate perspective distortion are disclosed herein. According to one described approach, viewports are assigned to a center monitor and two peripheral monitors. Scene data for the viewports is calculated, and geometric primitives are generated for the viewports based on the scene data. Image transformation is performed based on a modified perspective value to modify geometry of the geometric primitives based on tilt angles of the displays, and the geometric primitives are rasterized using the modified geometry.

## Claims

### Claim 1

A method of generating a multi-screen rendering for a titled multi-monitor display system, said method comprising:
assigning viewports to a center monitor, a first peripheral monitor, and a second peripheral monitor based on a location and orientation of a virtual camera, wherein the first peripheral monitor and the second peripheral monitor are tilted at an angle relative to the center monitor, and wherein the viewports are defined within a common plane that is perpendicular to a direction of view of said virtual camera;
determining scene data for the viewports;
generating geometric primitives for the viewports based on the scene data for the center monitor, the first peripheral monitor, and the second peripheral monitor using a single pass of a geometry engine;
performing image transformation on the geometric primitives using respective transformation engines for the center monitor, the first peripheral monitor, and the second peripheral monitor, wherein the image transformation is based on the angle relative to the center monitor and a distance between the virtual camera and the plane, and wherein the image transformation outputs geometric primitives with modified geometry to prevent image distortion of geometric primitives rendered on the first peripheral monitor and the second peripheral monitor; and
rasterizing the geometric primitives using the modified geometry.

### Claim 2 (depends on 1)

The method as described in claim 1, wherein the geometric primitives comprise vertices in three-dimensional space represented by X, Y, and Z, and a perspective value represented by W, and wherein the transformation engines compute a new perspective value W′ based on the formula W′=AX+BY+W.

### Claim 3 (depends on 2)

The method as described in claim 2, wherein A and B are computed for the first peripheral monitor and the second peripheral monitor based on the angle relative to the center monitor and a distance between a user and the center monitor.

### Claim 4 (depends on 3)

The method as described in claim 3, wherein W′ is used to perform a perspective divide on the vertices to generate normalized screen coordinates represented by X′, Y′, and Z′.

### Claim 5 (depends on 4)

The method as described in claim 4, wherein the transformation engines outputs modified geometry for the geometric primitives using the screen coordinates X″, Y″, and Z″.

### Claim 6 (depends on 5)

The method as described in claim 5, wherein the screen coordinates X″, Y″, and Z″ are determined by multiplying the normalized screen coordinates by a scale value and adding an offset value.

### Claim 7 (depends on 6)

The method as described in claim 6, wherein the scale value and the offset value are determined based on attributes of a respective viewport.

### Claim 8

A method of generating a multi-screen rendering, said method comprising:
with respect to a three dimensional represented space comprising three dimensional defined objects therein, using a single pass of a geometry engine of a graphics processor to generate a projection, in 2 dimensions, of said space as viewed from a camera on multiple viewports, said multiple viewports defined within a common plane that is perpendicular to a direction of view of said camera and wherein said common plane is located a distance, D, from said camera;
said geometry engine outputting triangles corresponding to tilted viewports of said multiple viewports to respective triangle transformation engines wherein triangles corresponding to each tilted viewport are send to a corresponding triangle transformation engine, wherein each respective triangle transformation engine adjusts input triangles based on: 1) a tilt angle of a corresponding viewport; 2) said distance D; and 3) a location in 3D space of said corresponding viewport to generate output corrected triangles that are perspective corrected for each tilted viewport;
outputting corrected triangles from said triangle transformation engines to a rasterizer for generating a frame buffer bitmap for each viewport of said multiple viewports; and
rendering frame buffers from said rasterizer onto said multiple viewports.

### Claim 9 (depends on 8)

A method as described in claim 8 wherein said geometry engine outputs triangles having vertices in the format: (X, Y, Z and W).

### Claim 10 (depends on 9)

A method as described in claim 9 wherein a respective triangle transformation engine performs the following transformations on triangle vertices input thereto for a respective viewport:
W′=AX+BY+W
X′=X/W′
Y′=Y/W′
Z′=Z/W′
X″=X′ scale x+offset x
Y″=Y′ scale y+offset y,
wherein X″ and Y″ are viewport screen coordinates of said respective viewport, and A and B are based on a tilt angle of said respective viewport and D, and wherein scale x, offset x, scale y, and offset y are based on a location in said space of said respective viewport.

### Claim 11 (depends on 8)

The method as described in claim 8 further comprising performing calibration on said multiple viewports to determine said D and any tilt angle of any viewport of said multiple viewports wherein said performing calibration comprises:
a) projecting a geometric pattern onto said multiple viewports;
b) receiving a user input to alter a correspondence to D to vary said D;
c) receive a user input to alter a correspondence to a tilt angle of a viewport to vary said tilt angle; and
d) re-projecting an altered geometric pattern onto said multiple viewports responsive to variations in said D and said tilt angle;
e) repeating said b)-d); and
f) capturing said D and said tilt angle responsive to a user calibration end input.

### Claim 12 (depends on 11)

The method as described in claim 11, further comprising determining a field of view of a central display device based on said D and a size of said central display device.

### Claim 13 (depends on 11)

The method as described in claim 11 wherein said D is input via a head tracking detector.

### Claim 14

An apparatus for generating a multi-screen rendering for a titled multi-monitor display system, said apparatus comprising:
a processor and memory configured to execute instructions of an application that renders three-dimensional environments; and
a graphics processing unit communicatively coupled to the processor and the memory, wherein the graphics processing unit is configured to perform a method of generating a multi-screen rendering for the titled multi-monitor display system, said method comprising:
assigning viewports to a center monitor, a first peripheral monitor, and a second peripheral monitor based on a location and orientation of a virtual camera, wherein the first peripheral monitor and the second peripheral monitor are tilted at an angle relative to the center monitor, wherein the viewports are defined within a common plane that is perpendicular to a direction of view of said virtual camera, and wherein the center monitor, the first peripheral monitor, and the second peripheral monitor are communicatively coupled to the graphics processing unit;
determining scene data for the viewports;
generating geometric primitives for the viewports based on the scene data for the center monitor, the first peripheral monitor, and the second peripheral monitor using a single pass of a geometry engine;
performing image transformation on the geometric primitives using respective transformation engines for the center monitor, the first peripheral monitor, and the second peripheral monitor, wherein the image transformation is based on the angle relative to the center monitor and a distance between the virtual camera and the plane, and wherein the image transformation outputs geometric primitives with modified geometry to prevent image distortion of geometric primitives rendered on the first peripheral monitor and the second peripheral monitor; and
rasterizing the geometric primitives using the modified geometry.

### Claim 15 (depends on 14)

The apparatus as described in claim 14, wherein the geometric primitives comprise vertices in three-dimensional space represented by X, Y, and Z, and a perspective value represented by W, and wherein the transformation engines compute a new perspective value W′ based on the formula W′=AX+BY+W.

### Claim 16 (depends on 15)

The apparatus as described in claim 15, wherein A and B are computed for the first peripheral monitor and the second peripheral monitor based on the angle relative to the center monitor and a distance between a user and the center monitor.

### Claim 17 (depends on 16)

The apparatus as described in claim 16, wherein W′ is used to perform a perspective divide on the vertices to generate normalized screen coordinates represented by X′, Y′, and Z′.

### Claim 18 (depends on 17)

The apparatus as described in claim 17, wherein the transformation engines outputs modified geometry for the geometric primitives using the screen coordinates X″, Y″, and Z″.

### Claim 19 (depends on 18)

The apparatus as described in claim 18, wherein the screen coordinates X″, Y″, and Z″ are determined by multiplying the normalized screen coordinates by a scale value and adding an offset value.

### Claim 20 (depends on 19)

The apparatus as described in claim 19, wherein the scale value and the offset value are determined based on attributes of a respective viewport.
