Claims
- 1. A deferred graphics pipeline processor comprising:
a command fetch and decode unit, a geometry unit, a mode extraction unit and a polygon memory, a sort unit and a sort memory, a setup unit, a cull unit, a mode injection unit, a fragment unit, a texture unit, a Phong lighting unit, a pixel unit, and a backend unit coupled to a frame buffer.
- 2. A deferred graphics pipeline processor comprising:
(a) a command fetch and decode unit communicating inputs of data and/or command from an external computer via a communication channel and converting said inputs into a series of packets, said packets including information items selected from the group consisting of colors, surface normals, texture coordinates, rendering information, lighting, blending modes, and buffer functions; (b) a geometry unit receiving said packets and performing coordinate transformations, decomposition of all polygons into actual or degenerate triangles, viewing volume clipping, and optionally per-vertex lighting and color calculations needed for Gouraud shading; (c) a mode extraction unit and a polygon memory associated with said polygon unit, said mode extraction unit receiving a data stream from said geometry unit and separating said data stream into vertices data which are communicated to a sort unit and non-vertices data which is sent to said polygon memory for storage; (d) a sort unit and a sort memory associated with said sort unit, said sort unit receiving vertices from said mode extraction unit and sorts the resulting points, lines, and triangles by tile, and communicating said sorted geometry by means of a sort block output packet representing a complete primitive in tile-by-tile order, to a setup unit; (e) a setup unit receiving said sort block output packets and calculating spatial derivatives for lines and triangles on a tile-by-tile basis one primitive at a time, and communicating said spatial derivatives in packet form to a cull unit; (f) a cull unit receiving one tile worth of data at a time and having a Magnitude Comparison Content Addressable Memory (MCCAM) Cull sub-unit and a Subpixel Cull sub-unit, said MCCAM Cull sub-unit being operable to discard primitives that are hidden completely by previously processed geometry, and said Subpixel Cull sub-unit processing the remaining primitives which are partly or entirely visible, and determines the visible fragments of those remaining primitives, said Subpixel Cull sub-unit outputting one stamp worth of fragments at a time; (g) a mode injection unit receiving inputs from said cull unit and retrieving mode information including colors and material properties from said Polygon Memory and communicating said mode information to one or more of a fragment unit, a texture unit, a Phong unit, a pixel unit, and a backend unit; at least some of said fragment unit, said texture unit, said Phong unit, said pixel unit, or said backend unit including a mode cache for cache recently used mode information; said mode injection unit maintaining status information identifying the information that is already cached and not sending information that is already cached, thereby reducing communication bandwidth; (h) a fragment unit for interpolating color values for Gouraud shading, interpolating surface normals for Phong shading and texture coordinates for texture mapping, and interpolating surface tangents if bump maps representing texture as a height field gradient are in use; said fragment unit performing perspective corrected interpolation using barycentric coefficients; (i) a texture unit and a texture memory associated with said texture unit; said texture unit applying texture maps stored in said texture memory, to pixel fragments; said textures being MIP-mapped and comprising a series of texture maps at different levels of detail, each map representing the appearance of the texture at a given distance from an eye point; said texture unit performing tri-linear interpolation from said texture maps to produce a texture value for a given pixel fragment that approximate the correct level of detail; said texture unit communicating interpolated texture values to said Phong unit on a per-fragment basis; (j) a Phong lighting unit for performing Phong shading for each pixel fragment using material and lighting information supplied by said mode injection unit, said texture colors from said texture unit, and said surface normal generated by said fragment unit to determine the fragment's apparent color; said Phong block optionally using said interpolated height field gradient from said texture unit to perturb the fragment's surface normal before shading if bump mapping is in use; and (k) a pixel unit receiving one stamp worth of fragments at a time, referred to as a Visible Stamp Portion, where each fragment has an independent color value, and performing pixel ownership test, scissor test, alpha test, stencil operations, depth test, blending, dithering and logic operations on each sample in each pixel, and after accumulating a tile worth of finished pixels, blending the samples within each pixel to antialias the pixels, and communicating said antialiased pixels to a Backend unit; (l) said backend unit coupled to said pixel unit for receiving a tile's worth of pixels at a time from said pixel unit, and storing said pixels into a frame buffer.
- 3. A method for rendering a graphics image, said method comprising:
performing a fragment operation on a fragment on a per-pixel basis; and performing a fragment operation on said fragment on a per-sample basis.
- 4. The method of claim 3, wherein said step of performing on a per-pixel basis comprises
performing one of the following fragment operations on a per-pixel basis: scissor test, stipple test, alpha test, color test.
- 5. The method of claim 3, wherein said step of performing on a per-sample basis comprises
performing one of the following fragment operations on a per-sample basis: Z test, blending, dithering.
- 6. The method of claim 3, further comprising the step of:
programmatically selecting whether to perform a stencil test on a per-pixel or a per-sample basis, and wherein between said steps, the following step is performed: performing said stencil test on said selected basis.
- 7. The method of claim 3, wherein said step of performing on a per-sample basis comprises
programmatically selecting a set of subdivisions of a pixel as samples for use in said fragment operation on a per-sample basis, and wherein said method further comprises
then programmatically selecting a different set of subdivisions of a pixel as samples for use in a second fragment operation on a per-sample basis; and then performing said second fragment operation on a fragment on a per-sample basis, using said programmatically selected samples.
- 8. The method of claim 3, wherein said step of performing on a per-sample basis comprises
programmatically selecting a set of subdivisions of a pixel as samples for use in said fragment operation on a per-sample basis; programmatically assigning different weights to two samples in said set; and
performing said fragment operation on said fragment on a per-sample basis, using said programmatically selected and differently weighted samples.
- 9. A method for rendering a graphics image, said method comprising:
performing one of the following fragment operations on a fragment on a per-pixel basis: scissor test, stipple test, alpha test, color test; programmatically selecting whether to perform a stencil test on a per-pixel or a per-sample basis, and performing said stencil test on said selected basis; and programmatically selecting a set of subdivisions of a pixel as samples for use in a fragment operation on a per-sample basis; programmatically assigning different weights to two samples in said set; and performing one of the following fragment operations on a per-sample basis, using said programmatically selected and differently weighted samples: Z test, blending, dithering; then programmatically selecting a different set of subdivisions of a pixel as samples for use in a second fragment operation on a per-sample basis; and then performing said second fragment operation on a fragment on a per-sample basis, using said programmatically selected samples.
- 10. A method for rendering a graphics image, said method comprising:
programmatically selecting whether to perform a stencil test on a per-pixel or a per-sample basis, and performing said stencil test on said selected basis.
- 11. A computer-readable medium for data storage wherein is located a computer program for causing a graphics-rendering system to render an image by
performing a fragment operation on a fragment on a per-pixel basis; and performing a fragment operation on said fragment on a per-sample basis.
- 12. A computer-readable medium for data storage wherein is located a computer program for causing a graphics-rendering system to render an image by
performing one of the following fragment operations on a fragment on a per-pixel basis: scissor test, stipple test, alpha test, color test; programmatically selecting whether to perform a stencil test on a per-pixel or a per-sample basis, and performing said stencil test on said selected basis; and programmatically selecting a set of subdivisions of a pixel as samples for use in a fragment operation on a per-sample basis, performing one of the following fragment operations on a per-sample basis, using said programmatically selected samples: Z test, blending, dithering; then programmatically selecting a different set of subdivisions of a pixel as samples for use in a second fragment operation on a per-sample basis; and then performing said second fragment operation on a fragment on a per-sample basis, using said programmatically selected samples.
RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser. No. 09/377,503, filed Aug. 20, 1999, which is hereby incorporated by reference and which claims the benefit under 35 USC Section 119(e) of U.S. Provisional Patent Application Serial No. 60/097,336 filed Aug. 20, 1998 and entitled GRAPHICS PROCESSOR WITH DEFERRED SHADING; and claims the benefit under 35 USC Section 120 of U.S. patent application Ser. No. 09/213,990 filed Dec. 17, 1998 entitled HOW TO DO TANGENT SPACE LIGHTING IN A DEFERRED SHADING ARCHITECTURE; each of which is hereby incorporated by reference.
[0002] This application is also related to the following U.S. patent applications, each of which are incorporated herein by reference:
[0003] Ser. No. 09/213,990, filed Dec. 17, 1998, entitled HOW TO DO TANGENT SPACE LIGHTING IN A DEFERRED SHADING ARCHITECTURE;
[0004] Ser. No. 09/378,598, filed Aug. 20, 1999, entitled APPARATUS AND METHOD FOR PERFORMING SETUP OPERATIONS IN A 3-D GRAPHICS PIPELINE USING UNIFIED PRIMITIVE DESCRIPTORS;
[0005] Ser. No. 09/378,633, filed Aug. 20, 1999, now U.S. Pat. No. 6,552,723 entitled SYSTEM, APPARATUS AND METHOD FOR SPATIALLY SORTING IMAGE DATA IN A THREE-DIMENSIONAL GRAPHICS PIPELINE;
[0006] Ser. No. 09/378,439, filed Aug. 20, 1999, entitled GRAPHICS PROCESSOR WITH PIPELINE STATE STORAGE AND RETRIEVAL, now U.S. Pat. No. 6,525,737;
[0007] Ser. No. 09/378,408, filed Aug. 20, 1999, entitled METHOD AND APPARATUS FOR GENERATING TEXTURE, now U.S. Pat. No. 6,288,730;
[0008] Ser. No. 09/379,144, filed Aug. 20, 1999, entitled APPARATUS AND METHOD FOR GEOMETRY OPERATIONS IN A 3D GRAPHICS PIPELINE;
[0009] Ser. No. 09/372,137, filed Aug. 20, 1999, entitled APPARATUS AND METHOD FOR FRAGMENT OPERATIONS IN A 3D GRAPHICS PIPELINE;
[0010] Ser. No. 09/378,391, filed Aug. 20, 1999, entitled Method And Apparatus For Performing Conservative Hidden Surface Removal In A Graphics Processor With Deferred Shading, now U.S. Pat. No. 6,476,807;
[0011] Ser. No. 09/378,299, filed Aug. 20, 1999, entitled DEFERRED SHADING GRAPHICS PIPELINE PROCESSOR, now U.S. Pat. No. 6,229,553; and
[0012] Ser. No. 10/358,134, filed Feb. 3, 2003, entitled GRAPHICS PROCESSOR WITH DEFERRED SHADING, hereby incorporated by reference, which is a continuation of Ser. No. 09/378,637, filed Aug. 20, 1999, entitled DEFERRED SHADING GRAPHICS PIPELINE PROCESSOR, hereby incorporated by reference, which claims the benefit of the filing date of U.S. Provisional Application Serial No. 60/097,336, filed Aug. 20, 1999.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60097336 |
Aug 1998 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09377503 |
Aug 1999 |
US |
Child |
10458493 |
Jun 2003 |
US |