A floating point rasterization and frame buffer in a computer system graphics program. The rasterization, fog, lighting, texturing, blending, and antialiasing processes operate on floating point values. In one embodiment, a 16-bit floating point format consisting of one sign bit, ten mantissa bits, and five exponent bits (s10e5), is used to optimize the range and precision afforded by the 16 available bits of information. In other embodiments, the floating point format can be defined in the manner preferred in order to achieve a desired range and precision of the data stored in the frame buffer. The final floating point values corresponding to pixel attributes are stored in a frame buffer and eventually read and drawn for display. The graphics program can operate directly on the data in the frame buffer without losing any of the desired range and precision of the data. |
Citations|
| US5745125 | Jul 2, 1996 | Apr 28, 1998 | Sun Microsystems, Inc. | Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance | | US5844571 | Jun 10, 1996 | Dec 1, 1998 | International Business Machines Corporation | Z buffer bandwidth reductions via split transactions | | US5926406 | Apr 30, 1997 | Jul 20, 1999 | Hewlett-Packard, Co. | System and method for calculating floating point exponential values in a geometry accelerator | | US5995121 | Oct 16, 1997 | Nov 30, 1999 | Hewlett-Packard Company | Multiple graphics pipeline integration with a windowing system through the use of a high speed interconnect to the frame buffer | | US5995122 | Apr 30, 1998 | Nov 30, 1999 | Intel Corporation | Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format |
Referenced by|
| US6897871 | Nov 20, 2003 | May 24, 2005 | ATI Technologies Inc. | Graphics processing architecture employing a unified shader | | US6900810 | Dec 3, 2003 | May 31, 2005 | NVIDIA Corporation | User programmable geometry engine | | US6940515 | Dec 3, 2003 | Sep 6, 2005 | NVIDIA Corporation | User programmable primitive engine | | US6940525 | Sep 12, 2002 | Sep 6, 2005 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system | | US6943797 | Jun 30, 2003 | Sep 13, 2005 | Sun Microsystems, Inc. | Early primitive assembly and screen-space culling for multiple chip graphics system | | US6972769 | Sep 2, 2004 | Dec 6, 2005 | NVIDIA Corporation | Vertex texture cache returning hits out of order | | US6982718 | Nov 30, 2001 | Jan 3, 2006 | NVIDIA Corporation | System, method and computer program product for programmable fragment processing in a graphics pipeline | | US7009615 | Nov 30, 2001 | Mar 7, 2006 | NVIDIA Corporation | Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline | | US7015914 | Dec 10, 2003 | Mar 21, 2006 | NVIDIA Corporation | Multiple data buffers for processing graphics data | | US7071947 | Jul 24, 2003 | Jul 4, 2006 | NVIDIA Corporation | Automatic adjustment of floating point output images | | US7075542 | Dec 8, 2003 | Jul 11, 2006 | ATI Technologies Inc. | Selectable multi-performance configuration | | US7164426 | Nov 28, 2000 | Jan 16, 2007 | Apple Computer, Inc. | Method and apparatus for generating texture | | US7167181 | Jun 9, 2003 | Jan 23, 2007 | Apple Computer, Inc. | Deferred shading graphics pipeline processor having advanced features | | US7184059 | Nov 28, 2000 | Feb 27, 2007 | Nintendo Co., Ltd. | Graphics system with copy out conversions between embedded frame buffer and main memory | | US7239322 | Sep 29, 2003 | Jul 3, 2007 | ATI Technologies Inc | Multi-thread graphic processing system | | US7286133 | May 10, 2005 | Oct 23, 2007 | NVIDIA Corporation | System, method and computer program product for programmable fragment processing | | US7317459 | Nov 27, 2006 | Jan 8, 2008 | Nintendo Co., Ltd. | Graphics system with copy out conversions between embedded frame buffer and main memory for producing a streaming video image as a texture on a displayed object image | | US7327369 | Apr 29, 2005 | Feb 5, 2008 | ATI Technologies Inc. | Graphics processing architecture employing a unified shader | | US7355603 | Aug 4, 2004 | Apr 8, 2008 | NVIDIA Corporation | Filtering unit for floating-point texture data | | US7433191 | Sep 30, 2005 | Oct 7, 2008 | Apple Inc. | Thermal contact arrangement | | US7518615 | Jul 12, 2000 | Apr 14, 2009 | Silicon Graphics, Inc. | Display system having floating point rasterization and floating point framebuffering | | US7577930 | Jun 23, 2005 | Aug 18, 2009 | Apple Inc. | Method and apparatus for analyzing integrated circuit operations | | US7598711 | Nov 23, 2005 | Oct 6, 2009 | Apple Inc. | Power source switchover apparatus and method | | US7599044 | Jun 23, 2005 | Oct 6, 2009 | Apple Inc. | Method and apparatus for remotely detecting presence | | US7633506 | Nov 26, 2003 | Dec 15, 2009 | ATI Technologies ULC | Parallel pipeline graphics system | | US7742053 | May 9, 2007 | Jun 22, 2010 | ATI Technologies ULC | Multi-thread graphics processing system | | US7746348 | May 9, 2007 | Jun 29, 2010 | ATI Technologies ULC | Multi-thread graphics processing system | | US7782316 | Oct 22, 2004 | Aug 24, 2010 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system | | US7796133 | Dec 8, 2003 | Sep 14, 2010 | ATI Technologies ULC | Unified shader | | US7800606 | Oct 22, 2004 | Sep 21, 2010 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system | | US7800607 | Oct 22, 2004 | Sep 21, 2010 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system | | US7808503 | Dec 19, 2006 | Oct 5, 2010 | Apple Inc. | Deferred shading graphics pipeline processor having advanced features | | US7884817 | Sep 2, 2004 | Feb 8, 2011 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system | | US7907145 | Aug 7, 2006 | Mar 15, 2011 | NVIDIA Corporation | Multiple data buffers for processing graphics data | | US7920141 | Feb 28, 2006 | Apr 5, 2011 | ATI Technologies ULC | Method and apparatus for rasterizer interpolation | | US7924281 | Mar 9, 2005 | Apr 12, 2011 | ATI Technologies ULC | System and method for determining illumination of a pixel by shadow planes | | US7948490 | Oct 22, 2003 | May 24, 2011 | Microsoft Corporation | Hardware-accelerated computation of radiance transfer coefficients in computer graphics | | US7965288 | Oct 22, 2009 | Jun 21, 2011 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system | | US8072461 | Mar 5, 2010 | Dec 6, 2011 | ATI Technologies ULC | Multi-thread graphics processing system | | US8098257 | Feb 15, 2008 | Jan 17, 2012 | NVIDIA Corporation | Filtering unit for floating-point texture data | | US8149243 | Dec 1, 2006 | Apr 3, 2012 | NVIDIA Corporation | 3D graphics API extension for a packed float image format | | US8228328 | Nov 1, 2007 | Jul 24, 2012 | NVIDIA Corporation | Early Z testing for multiple render targets | | US8232991 | Nov 1, 2007 | Jul 31, 2012 | NVIDIA Corporation | Z-test result reconciliation with multiple partitions | | US8238613 | Oct 12, 2004 | Aug 7, 2012 | Thomson Licensing | Technique for bit-accurate film grain simulation | | US8243069 | Nov 1, 2007 | Aug 14, 2012 | NVIDIA Corporation | Late Z testing for multiple render targets |
Claims1. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values; and
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer;
- wherein the rasterization circuit performs scan conversion on vertices having floating point color values.
2. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values;
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer;
- a texture circuit coupled to the rasterization circuit that applies a texture to the primitive, wherein the texture is specified by floating point values; and
- a texture memory coupled to the texture circuit that stores a plurality of textures in floating point values.
3. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values; and
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer;
- wherein the floating point format is comprised of sixteen bits in a s10e5 format.
4. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values;
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer; and
- a fog circuit coupled to the rasterization circuit for performing a fog function, wherein the fog function operates on floating point color values.
5. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values;
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer; and
- a blender coupled to the rasterization circuit which blends floating point color values.
6. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values;
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer; and
- logic coupled to the rasterization circuit which performs per-fragment operations on floating point color values.
7. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on a floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of color values; and
- a display screen coupled to the frame buffer for displaying an image according to the color values stored in the frame buffer;
- wherein the processor, the rasterization circuit, and the frame buffer are on a single semiconductor chip.
8. The computer system of claim 7, wherein the processor, the rasterization circuit, and the frame buffer reside on a same substrate of the single semiconductor chip. 9. In a computer system, a method for rendering a three-dimensional image for display, comprising the steps of: - performing geometric calculations on a plurality of vertices of a plurality of polygons;
- scan converting a plurality of pixels according to the vertices, wherein scan conversion is performed on floating point color values;
- applying a texture to the image by reading floating point texture values stored in a texture memory;
- simulating fog effects, wherein fog is simulated by modifying floating point color values;
- drawing the image for display on a display screen coupled to the computer system.
10. The method of claim 9, wherein the floating point values are comprised of sixteen bits. 11. The method of claim 10, wherein the floating point values are specified by a s10e5 format. 12. The method of claim 10 further comprising the step of storing the floating point color values in a frame buffer. 13. The method of claim 10 further comprising the step of blending at least two floating point color values. 14. The method of claim 10 further comprising the step of performing antialiasing on floating point color values. 15. The method of claim 10 further comprising the steps of: - reading data from the frame buffer;
- modifying the data;
- writing modified data back to the frame buffer.
16. The method of claim 10 further comprising the step of modifying color values for lighting, wherein lighting calculations operate on floating point color values. 17. In a computer system, a method for operating on data stored in a frame buffer, comprised of: - storing the data in the frame buffer in a floating point format;
- reading the data from the frame buffer in the floating point format;
- operating directly on the data in the floating point format; and
- writing the data to the frame buffer in the floating point format;
- wherein the steps of writing, storing, and reading the data in the frame buffer in the floating point format are further comprised of a specification of the floating point format, wherein the specification corresponds to a level of range and precision.
18. The method of claim 17 wherein the specification is comprised of 16 bits of data and the data are comprised of one sign bit, ten mantissa bits, and five exponent bits. 19. The method of claim 17 wherein the specification is comprised of 17 bits of data and the data are comprised of one sign bit, 11 mantissa bits, and five exponent bits. 20. The method of claim 17 wherein the specification is comprised of 16 bits of data and the data are comprised of ten mantissa bits, and six exponent bits. 21. The method of claim 17 wherein the specification is comprised of 32 bits of data and the data are comprised of one sign bit, 23 mantissa bits, and eight exponent bits. 22. A computer system having a floating point frame buffer for storing a plurality of floating point color values; - wherein the floating point color values are written to, read from, and stored in the frame buffer using a specification of the floating point color values that corresponds to a level of range and precision.
23. The computer system of claim 22, wherein the floating point color values are comprised of 16 bits of data and the data are comprised of one sign bit, ten mantissa bits, and five exponent bits. 24. The computer system of claim 22, wherein the floating point color values are comprised of 17 bits of data and the data are comprised of one sign bit, 11 mantissa bits, and five exponent bits. 25. A computer system, comprising: - a processor for performing geometric calculations on a plurality of vertices of a primitive;
- a rasterization circuit coupled to the processor that rasterizes the primitive according to a rasterization process which operates on an s10e5 floating point format;
- a frame buffer coupled to the rasterization circuit for storing a plurality of s10e5 floating point color values;
- a display screen coupled to the frame buffer for displaying an image according to the s10e5 color values stored in the frame buffer.
26. The computer system of claim 25 further comprising: - a texture circuit coupled to the rasterization circuit that applies a texture to the primitive, wherein the texture is specified by s10e5 floating point values.
27. The computer system of claim 25 further comprising a lighting circuit coupled to the rasterization circuit for performing a lighting function, wherein the lighting function executes on s10e5 floating point color values. 28. The computer system of claim 25 further comprising a fog circuit coupled to the rasterization circuit for performing a fog function, wherein the fog function operates on s10e5 floating point color values. 29. The computer system of claim 25 further comprising an antialiasing circuit coupled to the rasterization circuit which performs an antialiasing algorithm on s10e5 floating point color values. 30. The computer system of claim 25 further comprising a blender coupled to the rasterization circuit which blends s10e5 floating point color values. 31. The computer system of claim 25 further comprising logic coupled to the rasterization circuit which performs per-fragment operations on s10e5 floating point color values. |