IP Library Granted Patent US 6,954,211
Granted Patent B2
US 6,954,211 · App. 10/610,662 · Granted Oct 11, 2005

Hardware-accelerated anti-aliased graphics

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 6,954,211
App. No.
10/610,662
Granted
Oct 11, 2005
Kind
B2
Abstract

In order to render a primitive, the primitive is subdivided into trapezoids and triangles. The subdivision occurs using scanline-aligned lines. These simple scanline-aligned regions are further subdivided so that the primitive is divided into simple scanline-boundaried trapezoids and other complex scan shapes. The simple scanline-boundaried trapezoids are rasterized. One rasterization method uses a texture map containing slope-based coverage information to edge areas. Gouraud shading may be used to provide the anti-aliasing effects on the scanline-boundaried trapezoids. The simple scanline-boundaried trapezoids may also be rasterized using a software rasterizer. Complex scans are rasterized using a software rasterizer. As data is already rasterized, it is thereby efficiently transferred to the GPU.

Claims (97)

1. A method for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

(A) dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said trapezoid rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said trapezoidal region,

(2) creating a second edge area corresponding to a fourth edge of said trapezoidal region; and

(3) shading said first edge area and said second edge area by (a) applying a texture to said first edge area and (b) applying said texture to said second edge area, where said texture comprises a lookup table for the coverage for a particular pixel where an edge has a specified slope and is a specified distance from said particular pixel, and

(C) rasterizing each other region in said graphics primitive using a rasterizer.

2. The method of claim 1 where said coverage comprises analytic coverage.

3. The method of claim 2 where said rasterizer computes analytic coverage for each of said each other regions.

4. The method of claim 1 where said coverage in said lookup table corresponds to a first sampling method, and where said rasterizer computes coverage according to said first sampling method.

5. A method for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

(A) dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said trapezoid rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said trapezoidal region,

(2) creating a second edge area corresponding to a fourth edge of said trapezoidal region; and

(3) shading said first edge area and said second edge area, where said shading said first edge area and said second edge area comprises:

(a) tessellating said first edge area and said second edge area into primitives, where each primitive comprises at least three vertices; and

(b) assigning a transparency value to each of said vertices where said transparency value for a given vertex of a primitive of a given edge area indicates increased transparency proportional to a distance of said given vertex to a corresponding edge to said given edge area, and

(C) rasterizing each other region in said graphics primitive using a rasterizer.

6. The method of claim 5 , where said transparency value additionally is based on a slope of said corresponding edge.

7. A method for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

(A) dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said trapezoid rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said trapezoidal region, where said creating a first edge area comprises calculating a width for said first edge area according to a function where for a given edge area, said function returns the result one plus the absolute value of the reciprocal of the slope of the edge corresponding to said edge area,

(2) creating a second edge area corresponding to a fourth edge of said trapezoidal region, where said creating a second edge area comprises calculating a width for said second edge area according to said function; and

(3) shading said first edge area and said second edge area, and

(C) rasterizing each other region in said graphics primitive using a rasterizer.

8. A computer-readable medium for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said computer-readable medium with instructions to perform acts comprising:

(A) decomposing said graphics primitive into at least one constituent region, said constituent regions including at least one region of a first type, where said first type of region comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said first type of constituent regions according to a first rasterization method, said first rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said constituent region;

(2) creating a second edge area corresponding to a fourth edge of said constituent region; and

(3) shading said first edge area and said second edge area, said shading comprising: applying a texture to said first edge area: and applying said texture to said second edge area, where said texture comprises a lookup table for the coverage for a particular pixel where an edge has a specified slope and is a specified distance from said particular pixel; and

(C) rasterizing each other constituent region using a rasterizer.

9. The computer-readable medium of claim 8 where said coverage comprises analytic coverage.

10. The computer-readable medium of claim 9 where said rasterizer computes analytic coverage for each of said each other regions.

11. The computer-readable medium of claim 8 where said coverage in said lookup table corresponds to a first sampling method, and where said rasterizer computes coverage according to said first sampling method.

12. A computer-readable medium for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said computer-readable medium with instructions to perform acts comprising:

(A) decomposing said graphics primitive into at least one constituent region, said constituent regions including at least one region of a first type, where said first type of region comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said first type of constituent regions according to a first rasterization method, said first rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said constituent region;

(2) creating a second edge area corresponding to a fourth edge of said constituent region; and

(3) shading said first edge area and said second edge area where said shading said first edge area and said second edge area comprises:

(a) tessellating said first edge area and said second edge area into primitives, where each primitive comprises at least three vertices; and

(b) assigning a transparency value to each of said vertices where said transparency value for a given vertex of a primitive of a given edge area indicates increased transparency proportional to a distance of said given vertex to a corresponding edge to said given edge area; and

(C) rasterizing each other constituent region using a rasterizer.

13. The computer-readable medium of claim 12 , where said transparency value additionally is based on a slope of said corresponding edge.

14. A computer-readable medium for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said computer-readable medium with instructions to perform acts comprising:

(A) decomposing said graphics primitive into at least one constituent region, said constituent regions including at least one region of a first type, where said first type of region comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) rasterizing at least one of said first type of constituent regions according to a first rasterization method, said first rasterization method comprising:

(1) creating a first edge area corresponding to a third edge of said constituent region; where said creating a first edge area comprises calculating a width for said first edge area according to a function, where for a given edge area, said function returns the result one plus the absolute value of the reciprocal of the slope of the edge corresponding to said edge area;

(2) creating a second edge area corresponding to a fourth edge of said constituent region, where said creating a second edge area comprises calculating a width for said second edge area according to said function; and

(3) shading said first edge area and said second edge area; and

(C) rasterizing each other constituent region using a rasterizer.

15. The processing unit for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said processing unit comprising:

(A) means for dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) means for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, comprising:

(1) means for calculating a first edge area corresponding to a third edge of said trapezoidal region;

(2) means for calculating a second edge area corresponding to a fourth edge of said trapezoidal region; and

(3) means for shading said first edge area and said second edge area, said means comprising means for applying a texture to said first edge area and means for applying said texture to said second edge area; where said texture comprises a lookup table for the coverage for a particular pixel where an edge has a specified slope and is a specified distance from said particular pixel; and

(C) rasterizer means for rasterizing each other region in said graphics primitive.

16. The processing unit of claim 15 where said coverage comprises analytic coverage.

17. The processing unit of claim 16 where said rasterizer means compute analytic coverage for each of said each other regions.

18. The processing unit of claim 15 where said coverage in said lookup table corresponds to a first sampling method, and where said rasterizer computes coverage according to said first sampling method.

19. A processing unit for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said processing unit comprising:

(A) means for dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) means for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, comprising:

(1) means for calculating a first edge area corresponding to a third edge of said trapezoidal region;

(2) means for calculating a second edge area corresponding to a fourth edge of said trapezoidal region; and

(3) means for shading said first edge area and said second edge area; where said means for shading said first edge area and said second edge area comprises:

(a) means for tessellating said first edge area and said second edge area into primitives, where each primitive comprises at least three vertices; and

(b) means for assigning a transparency value to each of said vertices where said transparency value for a given vertex of a primitive of a given edge area indicates increased transparency proportional to a distance of said given vertex to a corresponding edge to said given edge area; and

(C) rasterizer means for rasterizing each other region in said graphics primitive.

20. The processing unit of claim 19 , where said transparency value additionally is based on a slope of said corresponding edge.

21. A processing unit for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said processing unit comprising:

(A) means for dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

(B) means for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, comprising:

(1) means for calculating a first edge area corresponding to a third edge of said trapezoidal region, where said means for creating a first edge area comprises means for calculating a width for said first edge area according to a function where for a given edge area, said function returns the result one plus the absolute value of the reciprocal of the slope of the edge corresponding to said edge area;

(2) means for calculating a second edge area corresponding to a fourth edge of said trapezoidal region, where means for creating a second edge area comprises means for calculating a width for said second edge area according to said function; and

(3) means for shading said first edge area and said second edge area; and

(C) rasterizer means for rasterizing each other region in said graphics primitive.

22. A system for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

a graphics primitive decomposer for accepting graphics primitive information and dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

a scanline-boundaried trapezoidal region rasterizer operably connected to said graphics primitive decomposer for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said scanline-boundaried trapezoidal region rasterizer creating a first edge area corresponding to a third edge of said trapezoidal region, creating a second edge area corresponding to a fourth edge of said trapezoidal region, and shading said first edge area and said second edge area, said shading comprising application of a texture to said first edge area where said texture comprises a lookup table for the coverage for a particular pixel where said corresponding edge for an edge area has a specified slope and is a specified distance from said particular pixel; and

application of said texture to said second edge area; and

a rasterizer operably connected to said graphics primitive decomposer for rasterizing each other region in said graphics primitive.

23. The system of claim 22 , where said coverage comprises analytic coverage.

24. The system of claim 23 , where said rasterizer computes analytic coverage.

25. The system of claim 22 , where said coverage in said lookup table corresponds to a first sampling method, and where said rasterizer computes coverage according to said first sampling method.

26. A system for rasterizing graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

a graphics primitive decomposer for accepting graphics primitive information and dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

a scanline-boundaried trapezoidal region rasterizer operably connected to said graphics primitive decomposer for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said scanline-boundaried trapezoidal region rasterizer creating a first edge area corresponding to a third edge of said trapezoidal region, creating a second edge area corresponding to a fourth edge of said trapezoidal region, and shading said first edge area and said second edge area where said shading of said first edge area and said second edge area comprises: (a) tessellating said first edge area and said second edge area into primitives, where each primitive comprises at least three vertices; and (b) assigning a transparency value to each of said vertices where said transparency value for a given vertex of a primitive of a given edge area indicates increased transparency proportional to a distance of said given vertex to a corresponding edge to said given edge area; and a rasterizer operably connected to said graphics primitive decomposer for rasterizing each other region in said graphics primitive.

27. The system of claim 26 , where said transparency value additionally is based on a slope of said corresponding edge.

28. A system for rasterizing a graphics primitive for a framebuffer comprising at least two scanlines, said method comprising:

a graphics primitive decomposer for accepting graphics primitive information and dividing said graphics primitive into at least one region, said regions comprising at least one scanline-boundaried trapezoidal region, where each of said scanline-boundaried trapezoidal regions comprises a trapezoidal region where a first edge of said trapezoidal region falls on a first boundary between two scanlines and where a second edge of said trapezoidal region falls on a second boundary between two scanlines;

a scanline-boundaried trapezoidal region rasterizer operably connected to said graphics primitive decomposer for rasterizing at least one of said scanline-boundaried trapezoidal regions according to a trapezoid rasterization method, said scanline-boundaried trapezoidal region rasterizer creating a first edge area corresponding to a third edge of said trapezoidal region where said creating a first edge area comprises calculating a width for said first edge area according to a function where for a given edge area, said function returns the result one plus the absolute value of the reciprocal of the slope of the edge corresponding to said edge area, and said scanline-boundaried trapezoidal region rasterizer further creating a second edge area corresponding to a fourth edge of said trapezoidal region, where said creating a second edge area comprises calculating a width for said second edge area according to said function, and said scanline-boundaried trapezoidal region rasterizer further shading said first edge area and said second edge area; and

a rasterizer operably connected to said graphics primitive decomposer for rasterizing each other region in said graphics primitive.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2003
From: ZHOU, KUN
To: MICROSOFT CORPORATION
Reel/Frame 014258/0151 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2003
From: MICHAIL, ASHRAF; SWEDBERG, GREGORY D.; SECCHIA, ADRIAN
To: MICROSOFT CORPORATION
Reel/Frame 014258/0157 →