IP Library Granted Patent US 9,633,469
Granted Patent B2
US 9,633,469 · App. 13/844,093 · Granted Apr 25, 2017

Conservative rasterization of primitives using an error term

Inventors: Eric Brian Lum (San Jose, CA); Walter Robert Steiner (Flagler Beach, FL); Henry Packard Moreton (Woodside, CA); Justin L. Cobb (Toney, AL); Barry Nolan Rodgers (Madison, AL); Yury Uralsky (Santa Clara, CA); Timo Oskari Aila (Tuusula, FI); Tero Tapani Karras (Helsinki, FI)
Assignee: NVIDIA Corporation
G06T15/10G06T3/403G06T11/203
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,633,469
App. No.
13/844,093
Granted
Apr 25, 2017
Kind
B2
Abstract

A system, method, and computer program product are provided for conservative rasterization of primitives using an error term. In use, an edge equation is determined for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive. Each edge of the primitive is shifted to enlarge the primitive by modifying coefficients of the edge equation defining the edge by an error term that is a predetermined amount. Pixels that intersect the primitive are then determined using the enlarged primitive.

Claims (47)

1. A method for rasterizing a primitive, comprising:

determining an edge equation for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive;

shifting each edge of the primitive to enlarge the primitive by modifying at least two coefficients of the edge equation defining the edge by an error term that is a first predetermined amount;

additionally shifting each edge of the primitive to further enlarge the primitive by further modifying the at least two coefficients of the edge equation defining the edge by a second predetermined amount, wherein the second predetermined amount is equal to the first predetermined amount; and

determining pixels that intersect the primitive, using the enlarged primitive.

2. The method of claim 1 , wherein the coefficients of each edge equation are computed from vertices of the primitive that have been snapped to a fixed number of fractional bits.

3. The method of claim 2 , wherein the first predetermined amount is one half of a distance by which the edge of the primitive has been snapped.

4. The method of claim 1 , wherein when the first amount is a power of 2, modifying the at least two coefficients of the edge equation by the error term includes shifting coefficients of the edge equation based on the predetermined amount.

5. The method of claim 1 , further comprising:

determining a bounding box for the edges of the primitive; and

shifting each edge of the bounding box to enlarge the bounding box.

6. The method of claim 5 , wherein each edge of the bounding box is shifted by:

modifying each edge of the bounding box by the error term that is the first predetermined amount.

7. The method of claim 5 , further comprising determining that a pixel does not intersect the primitive when the pixel intersects the enlarged primitive and the pixel does not intersect the enlarged bounding box.

8. The method of claim 1 , wherein the coefficients of the edge equation are fixed point values.

9. A method for rasterizing a primitive comprising:

determining an edge equation for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive;

shifting each edge of the primitive to enlarge the primitive by modifying at least two coefficients of the edge equation defining the edge by an error term that is a first predetermined amount;

additionally shifting each edge of the primitive to further enlarge the primitive by further modifying the at least two coefficients of the edge equation defining the edge by a second predetermined amount, wherein the second predetermined amount is a predetermined fraction of a size of a pixel; and

determining pixels that intersect the primitive, using the enlarged primitive.

10. The method of claim 9 , wherein the second predetermined amount by which the coefficients are modified is one half of the size of the pixel.

11. A method for rasterizing a primitive, comprising:

determining an edge equation for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive;

shifting each edge of the primitive to enlarge the primitive by modifying at least two coefficients of the edge equation defining the edge by an error term that is a first predetermined amount;

additionally shifting each edge of the primitive to further enlarge the primitive by further modifying the at least two coefficients of the edge equation defining the edge by a second predetermined amount, wherein the first predetermined amount is less than the second predetermined amount; and

determining pixels that intersect the primitive, using the enlarged primitive.

12. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, perform a method to rasterize a primitive, the method comprising:

determining an edge equation for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive;

shifting each edge of the primitive to enlarge the primitive by modifying at least two coefficients of the edge equation defining the edge by an error term that is a first predetermined amount;

additionally shifting each edge of the primitive to further enlarge the primitive by further modifying the at least two coefficients of the edge equation defining the edge by a second predetermined amount, wherein the second predetermined amount is equal to the first predetermined amount; and

determining pixels that intersect the primitive, using the enlarged primitive.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the coefficients of the edge equation are fixed point values.

14. The non-transitory computer-readable storage medium of claim 12 , further comprising:

determining a bounding box for the edges of the primitive;

shifting each edge of the bounding box to enlarge the bounding box; and

determining that a pixel does not intersect the primitive when the pixel intersects the enlarged primitive and the pixel does not intersect the enlarged bounding box.

15. A system comprising:

a processor configured for:

determining an edge equation for each edge of a primitive, the edge equation having coefficients defining the edge of the primitive;

shifting each edge of the primitive to enlarge the primitive by modifying at least two coefficients of the edge equation defining the edge by an error term that is a first predetermined amount;

additionally shifting each edge of the primitive to further enlarge the primitive by further modifying the at least two coefficients of the edge equation defining the edge by a second predetermined amount, wherein the second predetermined amount is equal to the first predetermined amount; and

determining pixels that intersect the primitive, using the enlarged primitive.

16. The system of claim 15 , wherein the coefficients of the edge equation are fixed point values.

17. The system of claim 15 , wherein the processor is further configured to:

determine a bounding box for the edges of the primitive;

shift each edge of the bounding box to enlarge the bounding box; and

determine that a pixel does not intersect the primitive when the pixel intersects the enlarged primitive and the pixel does not intersect the enlarged bounding box.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2013
From: LUM, ERIC BRIAN; STEINER, WALTER ROBERT; MORETON, HENRY PACKARD; COBB, JUSTIN L.; RODGERS, BARRY NOLAN; URALSKY, YURY; AILA, TIMO OSKARI; KARRAS, TERO TAPANI
To: NVIDIA CORPORATION
Reel/Frame 031468/0895 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2013
From: LUM, ERIC BRIAN; STEINER, WALTER ROBERT; MORETON, HENRY PACKARD; COBB, JUSTIN L.; RODGERS, BARRY NOLAN; URALSKY, YURY; AILA, TIM OSKARI; KARRAS, TERO TAPANI
To: NVIDIA CORPORATION
Reel/Frame 031240/0033 →
Continuity (1)
Related Publication 20140267238A1 · Sep 18, 2014