IP Library Granted Patent US 9,342,891
Granted Patent B2
US 9,342,891 · App. 14/028,421 · Granted May 17, 2016

Stencil then cover path rendering with shared edges

Inventors: Mark J. Kilgard (Austin, TX); Jeffrey A. Bolz (Austin, TX)
Assignee: NVIDIA Corporation
G06T7/0079G06T3/0012G06T11/40
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,342,891
App. No.
14/028,421
Granted
May 17, 2016
Kind
B2
Abstract

One embodiment of the present invention includes techniques for rasterizing primitives that include edges shared between paths. For each edge, a rasterizer unit selects and applies a sample rule from multiple sample rules. If the edge is shared, then the selected sample rule causes each group of coverage samples associated with a single color sample to be considered as either fully inside or fully outside the edge. Consequently, conflation artifacts caused when the number of coverage samples per pixel exceeds the number of color samples per pixel may be reduced. In prior-art techniques, reducing such conflation artifacts typically involves increasing the number of color samples per pixel to equal the number of coverage samples per pixel. Advantageously, the disclosed techniques enable rendering using algorithms that reduce the ratio of color to coverage samples, thereby decreasing memory consumption and memory bandwidth use, without causing conflation artifacts associated with shared edges.

Claims (40)

1. A computer-implemented method for rasterizing geometric primitives, the method comprising:

determining a rasterization state associated with a plurality of geometric primitives;

selecting a first sample rule from a plurality of sample rules based on the rasterization state, wherein the first sample rule determines coverage of a plurality of coverage samples based on the position of a first coverage sample included in the plurality of samples;

determining whether the first coverage sample is considered to be inside a first edge of a first geometric primitive included in the plurality of geometric primitives based on the first sample rule; and

determining, via a graphics processing pipeline, whether the first coverage sample is considered to be covered by the first geometric primitive based on whether the first coverage sample is considered to be inside the first edge.

2. The method of claim 1 , wherein both the first coverage sample and a second coverage sample are associated with a first color sample.

3. The method of claim 2 , wherein the positions of both the first coverage sample and the second coverage sample are programmable.

4. The method of claim 3 , further comprising determining whether the second coverage sample is considered to be inside the first edge.

5. The method of claim 4 , wherein determining whether the second coverage sample is considered to be inside the first edge comprises:

updating the position of the second coverage sample from an original position to the position of the first coverage sample based on the first sample rule; and

calculating whether the position of the second coverage sample resides within the geometric primitive relative to the first edge.

6. The method of claim 2 , further comprising determining whether the second coverage sample is considered to be covered by the first geometric primitive based on whether the first coverage sample is considered to be covered by the first geometric primitive.

7. The method of claim 2 , further comprising compositing a color value for the first color sample based on whether the first coverage sample and the second coverage sample are considered to be covered by the first geometric primitive.

8. The method of claim 1 , wherein the plurality of geometric primitives comprises a first path that is being rendered.

9. The method of claim 8 , wherein the rasterization state indicates that at least one edge of the first path is shared with a second path that is being rendered.

10. A non-transitory computer-readable storage medium including instructions that, when executed by a processing unit, cause the processing unit to rasterize geometric primitives by performing the steps of:

determining a rasterization state associated with a plurality of geometric primitives;

selecting a first sample rule from a plurality of sample rules based on the rasterization state, wherein the first sample rule determines coverage of a plurality of coverage samples based on the position of a first coverage sample included in the plurality of coverage samples; and

processing the first coverage sample based on the first sample rule.

11. The non-transitory computer-readable storage medium of claim 10 , wherein both the first coverage sample and a second coverage sample are associated with a first color sample.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the positions of both the first coverage sample and the second coverage sample are programmable.

13. The non-transitory computer-readable storage medium of claim 12 , further comprising determining whether the second coverage sample is considered to be inside the first edge.

14. The non-transitory computer-readable storage medium of claim 13 , wherein determining whether the second coverage sample is considered to be inside the first edge comprises:

updating the position of the second coverage sample from an original position to the position of the first coverage sample based on the first sample rule; and

calculating whether the position of the second coverage sample resides within the geometric primitive relative to the first edge.

15. The non-transitory computer-readable storage medium of claim 11 , further comprising determining whether the second coverage sample is considered to be covered by the first geometric primitive based on whether the first coverage sample is considered to be covered by the first geometric primitive.

16. The non-transitory computer-readable storage medium of claim 11 , further comprising compositing a color value for the first color sample based on whether the first coverage sample and the second coverage sample are considered to be covered by the first geometric primitive.

17. The non-transitory computer-readable storage medium of claim 10 , wherein the plurality of geometric primitives comprises a first path that is being rendered.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the rasterization state indicates that at least one edge of the first path is shared with a second path that is being rendered.

19. A computing device configured to rasterize geometric primitives, the computing device comprising:

a memory;

a processing unit coupled to the memory and configured to implement at least a portion of a graphics processing pipeline, wherein the at least a portion of the graphics processing pipeline is configured to:

determine a rasterization state associated with a plurality of geometric primitives;

select a first sample rule from a plurality of sample rules based on the rasterization state, wherein the first sample rule determines coverage of a plurality of coverage samples based on the position of a first coverage sample included in the plurality of samples; and

process the first coverage sample based on the first sample rule.

20. The computing device of claim 19 , wherein the positions of both the first coverage sample and a second coverage sample are programmable, and the system further comprises a device driver coupled to the processing unit, wherein the device driver updates the position of the second coverage sample from an original position to the position of the first coverage sample based on the first sample rule.

21. The computing device of claim 19 , wherein a second coverage sample is considered to be covered by the first geometric primitive based on applying a sample mask to the second coverage sample, and the sample mask reflects whether the first coverage sample is considered to be covered by the first geometric primitive.

22. The computing device of claim 19 , wherein the at least a portion of the graphics processing pipeline is further configured to:

process the first coverage sample by determining whether the first coverage sample is considered to be inside a first edge of a first geometric primitive included in the plurality of geometric primitives based on the first sample rule; and

determine whether the first coverage sample is considered to be covered by the first geometric primitive based on whether the first coverage sample is considered to be inside the first edge.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2013
From: KILGARD, MARK J.; BOLZ, JEFFREY A.
To: NVIDIA CORPORATION
Reel/Frame 031231/0463 →
Continuity (2)
Provisional Application 61799948 · Mar 15, 2013
Related Publication 20140267375A1 · Sep 18, 2014