Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

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.

InventorsJohn M. Airey, Mark S. Peercy, Robert A. Drebin, John Montrym, David L. Dignam, Christopher J. Migdal, Danny D. Loh
Original AssigneeSilicon Graphics, Inc.
Primary Examiner: Mark R. Powell
Secondary Examiner: Thu-Thao Havan
Current U.S. Classification345/520; 345/422; 365/189.05
International Classification: G06T/5391

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5745125Jul 2, 1996Apr 28, 1998Sun Microsystems, Inc.Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
US5844571Jun 10, 1996Dec 1, 1998International Business Machines CorporationZ buffer bandwidth reductions via split transactions
US5926406Apr 30, 1997Jul 20, 1999Hewlett-Packard, Co.System and method for calculating floating point exponential values in a geometry accelerator
US5995121Oct 16, 1997Nov 30, 1999Hewlett-Packard CompanyMultiple graphics pipeline integration with a windowing system through the use of a high speed interconnect to the frame buffer
US5995122Apr 30, 1998Nov 30, 1999Intel CorporationMethod and apparatus for parallel conversion of color values from a single precision floating point format to an integer format

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6897871Nov 20, 2003May 24, 2005ATI Technologies Inc.Graphics processing architecture employing a unified shader
US6900810Dec 3, 2003May 31, 2005NVIDIA CorporationUser programmable geometry engine
US6940515Dec 3, 2003Sep 6, 2005NVIDIA CorporationUser programmable primitive engine
US6940525Sep 12, 2002Sep 6, 2005Hewlett-Packard Development Company, L.P.Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
US6943797Jun 30, 2003Sep 13, 2005Sun Microsystems, Inc.Early primitive assembly and screen-space culling for multiple chip graphics system
US6972769Sep 2, 2004Dec 6, 2005NVIDIA CorporationVertex texture cache returning hits out of order
US6982718Nov 30, 2001Jan 3, 2006NVIDIA CorporationSystem, method and computer program product for programmable fragment processing in a graphics pipeline
US7009615Nov 30, 2001Mar 7, 2006NVIDIA CorporationFloating point buffer system and method for use during programmable fragment processing in a graphics pipeline
US7015914Dec 10, 2003Mar 21, 2006NVIDIA CorporationMultiple data buffers for processing graphics data
US7071947Jul 24, 2003Jul 4, 2006NVIDIA CorporationAutomatic adjustment of floating point output images
US7075542Dec 8, 2003Jul 11, 2006ATI Technologies Inc.Selectable multi-performance configuration
US7164426Nov 28, 2000Jan 16, 2007Apple Computer, Inc.Method and apparatus for generating texture
US7167181Jun 9, 2003Jan 23, 2007Apple Computer, Inc.Deferred shading graphics pipeline processor having advanced features
US7184059Nov 28, 2000Feb 27, 2007Nintendo Co., Ltd.Graphics system with copy out conversions between embedded frame buffer and main memory
US7239322Sep 29, 2003Jul 3, 2007ATI Technologies IncMulti-thread graphic processing system
US7286133May 10, 2005Oct 23, 2007NVIDIA CorporationSystem, method and computer program product for programmable fragment processing
US7317459Nov 27, 2006Jan 8, 2008Nintendo 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
US7327369Apr 29, 2005Feb 5, 2008ATI Technologies Inc.Graphics processing architecture employing a unified shader
US7355603Aug 4, 2004Apr 8, 2008NVIDIA CorporationFiltering unit for floating-point texture data
US7433191Sep 30, 2005Oct 7, 2008Apple Inc.Thermal contact arrangement
US7518615Jul 12, 2000Apr 14, 2009Silicon Graphics, Inc.Display system having floating point rasterization and floating point framebuffering
US7577930Jun 23, 2005Aug 18, 2009Apple Inc.Method and apparatus for analyzing integrated circuit operations
US7598711Nov 23, 2005Oct 6, 2009Apple Inc.Power source switchover apparatus and method
US7599044Jun 23, 2005Oct 6, 2009Apple Inc.Method and apparatus for remotely detecting presence
US7633506Nov 26, 2003Dec 15, 2009ATI Technologies ULCParallel pipeline graphics system
US7742053May 9, 2007Jun 22, 2010ATI Technologies ULCMulti-thread graphics processing system
US7746348May 9, 2007Jun 29, 2010ATI Technologies ULCMulti-thread graphics processing system
US7782316Oct 22, 2004Aug 24, 2010Microsoft CorporationMethod and system for defining and controlling algorithmic elements in a graphics display system
US7796133Dec 8, 2003Sep 14, 2010ATI Technologies ULCUnified shader
US7800606Oct 22, 2004Sep 21, 2010Microsoft CorporationMethod and system for defining and controlling algorithmic elements in a graphics display system
US7800607Oct 22, 2004Sep 21, 2010Microsoft CorporationMethod and system for defining and controlling algorithmic elements in a graphics display system
US7808503Dec 19, 2006Oct 5, 2010Apple Inc.Deferred shading graphics pipeline processor having advanced features
US7884817Sep 2, 2004Feb 8, 2011Microsoft CorporationMethod and system for defining and controlling algorithmic elements in a graphics display system
US7907145Aug 7, 2006Mar 15, 2011NVIDIA CorporationMultiple data buffers for processing graphics data
US7920141Feb 28, 2006Apr 5, 2011ATI Technologies ULCMethod and apparatus for rasterizer interpolation
US7924281Mar 9, 2005Apr 12, 2011ATI Technologies ULCSystem and method for determining illumination of a pixel by shadow planes
US7948490Oct 22, 2003May 24, 2011Microsoft CorporationHardware-accelerated computation of radiance transfer coefficients in computer graphics
US7965288Oct 22, 2009Jun 21, 2011Microsoft CorporationMethod and system for defining and controlling algorithmic elements in a graphics display system
US8072461Mar 5, 2010Dec 6, 2011ATI Technologies ULCMulti-thread graphics processing system
US8098257Feb 15, 2008Jan 17, 2012NVIDIA CorporationFiltering unit for floating-point texture data
US8149243Dec 1, 2006Apr 3, 2012NVIDIA Corporation3D graphics API extension for a packed float image format
US8228328Nov 1, 2007Jul 24, 2012NVIDIA CorporationEarly Z testing for multiple render targets
US8232991Nov 1, 2007Jul 31, 2012NVIDIA CorporationZ-test result reconciliation with multiple partitions
US8238613Oct 12, 2004Aug 7, 2012Thomson LicensingTechnique for bit-accurate film grain simulation
US8243069Nov 1, 2007Aug 14, 2012NVIDIA CorporationLate Z testing for multiple render targets

Claims

1. 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.