Claims
- 1. A graphics rendering system for forming a finished rendered image, the graphics rendering system comprising:(i) a host computer having host memory coupled thereto and at least one input/output bus, the host computer supplying graphics data, the graphics data comprising graphics primitives; (ii) one or more front end blocks to handle communication with the host computer through the input/output bus, the front end blocks also converting the graphics data into a series of packets; (iii) a plurality of processing blocks connected sequentially in a pipeline, a first of the processing blocks connected to the front end blocks, where each of the processing blocks comprises: (a) at least one data input; (b) at least one data output; (c) a FIFO buffer at the at least one data input; and (d) logic for a packetized data transfer protocol for transferring information from processing block to processing block in packets, the packets each including a header portion and a data portion, the protocol used to sequentially transfer different packets having different forms and various lengths over a single communication channel from a processing block to another processing block while maintaining sequential order of at least some of the transferred information; (iv) a frame buffer; (v) a backend block coupled to the frame buffer and last of said processing blocks, the backend block function comprising controlling the frame buffer and sending the finished rendered image to an output device; and (vi) a communication path coupling said backend block to said first of the processing blocks such that packets sent on said communication path pass through fewer than all of said sequentially connected processing blocks.
- 2. The graphics rendering system in claim 1, wherein the plurality of processing blocks further comprise:a geometry block, coupled to the front end blocks, comprising logic for transformation of vertex coordinates, transformation of vertex normals, and per-vertex lighting.
- 3. The graphics rendering system in claim 2, wherein the geometry block further comprises:logic for receiving one or more types of geometry input packets to transfer information from the front end blocks to the geometry block, the geometry input packets transferring information comprising: transform matrices, material parameters, light parameters, and vertex data.
- 4. The graphics rendering system of claim 1 further comprising:a scene memory, comprised of one or more memory blocks, coupled to one or more of the processing blocks, the scene memory used to store pipeline data, the pipeline data comprising: (1) primitive data; and (2) pipeline state; the scene memory being comprised of at least: (1) a spatial memory block for storing (1a) the part of the primitive data needed for hidden surface removal and (1b) the part of the pipeline state needed for hidden surface removal; and (2) polygon memory block for storing (2a) the part of the primitive data not needed for hidden surface removal and (2b) the part of the pipeline state not needed for hidden surface removal.
- 5. A graphics rendering system according to claim 1, wherein said packets sent on said communication path comprise prefetch packets such that prefetch packets arrive at said backend block earlier than other packets not sent on said communication path.
- 6. A graphics rendering system according to claim 1, wherein at least one of said plurality of processing units is configured to dispatch a first type of packet to another one of said processing units and a second type of packet to a different one of said plurality of processing units.
- 7. A graphics rendering system according to claim 6, wherein said at least one of said plurality of processing units is a unit configured to sort graphics primitives according to tiles, said another one of said processing units is a unit configured to retrieve stored mode information, and said different one of said plurality of processing units is a unit configured to send graphics primitives to one or more other units in tile order.
- 8. A graphics rendering system according to claim 6, wherein said at least one of said plurality of processing units is a unit configured to retrieve stored mode information, said another one of said processing units is a unit configured to interpolate color values, and said different one of said plurality of processing units is a unit configured to perform per-fragment operations.
- 9. A graphics rendering system according to claim 6 wherein said at least one of said plurality of processing units is a unit configured to interpolate color values, said another one of said processing units is a unit configured to perform shading, and said different one of said plurality of processing units is a unit configured to apply texture maps.
- 10. A graphics rendering system according to claim 1, wherein said communication path comprises an interface between two processing units located on the same chip, wherein packets sent on said interface bypass other processing units on said chip.
- 11. A graphics rendering system according to claim 1, wherein said plurality of processing blocks include a unit configured to sort graphics primitives according to tiles, a unit configured to send graphics primitives to one or more other units in tile order, a unit configured to perform hidden surface removal, and a unit configured to retrieve stored mode information, said system further comprising:a first interface between said unit configured to sort and said unit configured to send; a second interface between said unit configured to send and said unit configured to perform hidden surface removal; a third interface between said unit configured to perform hidden surface removal and said unit configured to retrieve stored mode information; and wherein said communication path comprises a fourth interface between said unit configured to sort and unit configured to retrieve stored mode information.
- 12. A graphics rendering system according to claim 11, wherein said unit configured to sort, said unit configured to send, said unit configured to perform hidden surface removal, and said unit configured to retrieve stored mode information are provided on a first semiconductor chip.
- 13. A graphics rendering system according to claim wherein said plurality of processing units are provided on a plurality of semiconductor chips, including said first semiconductor chip, said system further comprising:an interchip communication ring coupling said plurality of chips.
- 14. A graphics rendering method for forming a finished rendered image, the graphics rendering method comprising the steps:(i) receiving data comprising graphics primitives; (ii) converting at least some of the graphics data into a series of packets; (iii) processing the series of packets through a plurality of graphics processes including a backend process, the plurality of graphics processes being sequentially connected in a pipeline, including a first graphics process that receives the converted graphics data and a last graphics process that forms the finished rendered image; and each graphics process comprising the steps: (a) receiving a packet; (b) generating a new packet for use in a packetized data transfer protocol for transferring information from graphics process in packets, the packets each including a header portion and a data portion, the protocol used to sequentially transmit different packets having different forms and various lenghts (c) transmitting the new packet over single communication channel from a graphics process to another graphics process while maintaining sequential order of at least some of the transferred information (d) generating a prefetch packet; (e) transmitting said prefetch packet over a second communication channel to said backend process, wherein said second communication channel is shorter than said single communication channel; (iv) storing the finished rendered image in a frame buffer; and (v) sending the finished rendered image to an output device.
- 15. The graphics rendering method in claim 14, further comprising the steps:receiving commands that stimulate the receiving of additional graphics data via direct memory access; and receiving at least one type of geometry input packet, the geometry input packet transferring information comprising: transform matrices, material parameters, light parameters, and vertex data; storing pipeline data into one or more memories, the pipeline data comprising: (1) primitive data; and (2) pipeline state; and each geometry process further comprising the step of receiving a plurality of types of vertex packets, the plurality of types of vertex packets being differing lengths that are processed at different performance levels; and the storing step further comprising performing a three dimensional (3D) tile read, performing a three dimensional (3D) tile write using pixel ownership and performing a pixel ownership for write enables and overlay detection.
- 16. The graphics rendering method of claim 15 wherein the storing pipeline data step further comprises:(1) storing first pipeline data into a spatial memory, the first pipeline data stored into spatial memory comprising: (1a) the part of the primitive data needed for hidden surface removal and (1b) the part of the pipeline state needed for hidden surface removal; and (2) storing second pipeline data into a polygon memory, the second pipeline data stored into polygon memory comprising: (2a) the part of the primitive data not needed for hidden surface removal and (2b) the part of the pipeline state not needed for hidden surface removal.
- 17. The graphics rendering method in claim 15, wherein the plurality of graphics processes further comprise:a sort process comprising the step: storing vertex packets and mode packets into the spatial memory.
- 18. The graphics rendering method of claim 14, further comprising storing pipeline data into one or more memories, the pipeline data comprising (1) primitive data; and pipeline state.
- 19. The graphics rendering method of claim wherein the plurality of graphics processes further comprise:a cull process comprising the step: performing a hidden surface removal process for culling out parts of the primitives that do not contribute to the finished rendered image and generating visible portions of the primitives; and one or more graphics processes jointly comprising the steps: fragment coloring and fragment blending, the steps performed on the generated visible portions of primitives.
- 20. The graphics rendering method of claim 18 further comprising:the step of storing the finished rendered image further comprising: accessing a portion of the frame buffer as a window consisting of a rectangular grid of pixels, and the window being divided into tiles; and at least some of the plurality of graphics processes comprising steps for performing per tile processing for forming the finished rendered image.
- 21. The graphics rendering method of claim 20, wherein the plurality of graphics processes further comprise:a sort process comprising the steps: (1) maintaining a list of vertices representing the graphic primitives; (2) maintaining a set of tile pointer lists, one tile pointer list for each tile; (3) sorting all the geometry in a frame, and (4) generating primitive packets, each primitive packet representing a complete primitive.
- 22. The graphics rendering method of claim 21, wherein the plurality of graphics processes further comprising:a mode extraction process comprising the steps: collecting temporally ordered state change data; and saving temporally ordered state change in a polygon memory.
- 23. The graphics rendering method of claim 22, wherein the mode extraction process further comprises the steps:accumulating two sets of material and texture data, one set for each of front and back faces of a primitive; and storing, into the polygon memory, only one of the two sets based on a flag indicator for each primitive.
- 24. A graphics rendering method comprising:receiving graphics data; converting at least some of said graphics data into a plurality of packets; performing a mode extraction process comprising: separating said plurality of packets into: (i) spatial information comprising spatial packets, begin frame packets, end frame packets, and clear packets, and (ii) shading information, the shading information comprising color packets, texture packets, and material packets; sending said spatial information to a sorting process; and storing said shading information in a polygon memory.
- 25. A method according to claim 24, wherein said sending comprises sending such that said sorting process receives only said spatial information.
- 26. A method according to claim 24, wherein said sending comprises sending such that said sorting process does not receive said shading information.
- 27. A method according to claim 24, wherein said sorting process is independent of said polygon memory.
- 28. A computer program for use in conjunction with a computer system, the computer program comprising a computer program mechanism embedded therein, the computer program mechanism, comprising:a program module that directs the rendering of a digital representation of a final graphics image from a plurality of graphics primitives, to function in a specified manner, storing the final graphics image into a frame buffer memory, the program module including instructions for: (i) receiving graphics data comprising graphics primitives; (ii) converting at least some of the graphics data into a series of packets; (iii) processing the series of packets through a plurality of graphics processes, the plurality of graphics processes being sequentially connected in a pipeline, including a first graphics process that receives the converted graphics data and a last graphics process that forms the finished rendered image; and each graphics process comprising the steps: (a) receiving a packet; (b) generating a new packet for use in a packetized data transfer protocol for transferring information from graphics process to graphics process in packets, the packets each including a header portion and a data portion, the protocol used to sequentially transmit different packets having different forms and various lengths (c) transmitting the new packet over a single communication channel from a graphics process to another graphics process while maintaining sequential order of at least some of the transferred information; (d) generating a prefetch packet; (e) transmitting said prefetch packet over a second communication channel to said backend process, wherein said second communication channel is shorter than said single communication channel; (iv) storing the finished rendered image in a frame buffer; and (v) sending the finished rendered image to an output device.
- 29. The computer program of claim 28, wherein the graphics processes further comprise:(1) a cull process comprising the steps: (a) performing a hidden surface removal process for culling out parts of the primitives that do not contribute to the finished rendered image; and (b) generating visible portions of the primitives; and (2) one or more graphics processes jointly comprising the steps: (a) fragment coloring performed on the generated visible portions of primitives, to produce colored fragments; and (b) fragment blending performed on the colored fragments.
- 30. The computer program of claim 28, wherein the graphics processes further comprise:a pixel process comprising the steps: (a) receiving the visible portions of the primitives, where each fragment has an independent color value; (b) performing fragment operations on each sample, fragment operations comprising: scissor test; alpha test; stencil test; depth test; and blending; (c) blending the samples within each pixel to antialias the pixels; and (d) outputting the antialiased pixels for use in the step of storing the finished rendered image.
RELATED APPLICATIONS
This application claims the benefit under 35 USC Section 119(e) of U.S. Provisional Patent Application Ser. No. 60/097,336 filed Aug. 20, 1998 and entitled GRAPHICS PROCESSOR WITH DEFERRED SHADING; is a continuation in part 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.
This application is also related to the following U.S. patent application, each of which incorporated by reference:
Ser. No. 09/213,990, filed Dec. 17, 1998, entitled HOW TO DO TANGENT SPACE LIGHTING IN A DEFERRED SHADING ARCHITECTURE;
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;
Ser. No. 09/378,633, filed Aug. 20, 1999, entitled SYSTEM, APPARATUS AND METHOD FOR SPATIALLY SORTING IMAGE DATA IN A THREE-DIMENSIONAL GRAPHICS PIPELINE;
Ser. No. 09/378,439, filed Aug. 20, 1999, entitled GRAPHICS PROCESSOR WITH PIPELINE STATE STORAGE AND RETRIEVAL;
Ser. No. 09/378,408, filed Aug. 20, 1999, entitled METHOD AND APPARATUS FOR GENERATING TEXTURE;
Ser. No. 09/379,144, filed Aug. 20, 1999, entitled APPARATUS AND METHOD FOR GEOMETRY OPERATIONS IN A 3D GRAPHICS PIPELINE;
Ser. No. 09/372,137, filed Aug. 20 , 1999, entitled APPARATUS AND METHOD FOR FRAGMENT OPERATIONS IN A 3D GRAPHICS PIPELINE;
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;
Ser. No. 09/378,299, filed Aug. 20, 1999, entitled DEFERRED SHADING GRAPHICS PIPELINE PROCESSOR, now U.S. Pat. No. 6,229,553; and
Ser. No. 09/378,637, filed Aug. 20, 1999, entitled DEFERRED SHADING GRAPHICS PIPELINE PROCESSOR.
US Referenced Citations (41)
Non-Patent Literature Citations (6)
Entry |
Watt, “3D Computer Graphics” (2nd ed.), Chapter 4, Reflection and Illumination Models, p. 89-126. |
Foley et al., Computer Graphics—Principles and Practice (2nd ed. 1996), Chapter 16, Illumination and Shading, pp. 721-814. |
Lathrop, “The Way Computer Graphics Works” (1997) Chapter 7, Rendering (Converting A Scene to Pixels), pp. 93-150. |
Peercy et al., “Efficient Bump Mapping Hardware” (Computer Graphics Proceedings, Annual Conference Series, 1997) pp. 303-306. |
Angel (Interactive Computer Graphics: A top-down approach with OpenGL: ISBN: 0-201-85571-2—sections 6.8 & 7.7.2).* |
Schilling et al., “Texram: a smart memory for texturing,” IEEE computer graphics and applications, May 1996, 32-41. |
Provisional Applications (1)
|
Number |
Date |
Country |
|
60/097336 |
Aug 1998 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09/213990 |
Dec 1998 |
US |
Child |
09/377503 |
|
US |