1. Field of the Invention
The present invention relates generally to computer graphics. More particularly, the present invention relates to systems and methods of controlling precompiled computer programs in computer graphics systems.
2. Background Art
Prior art computer graphics systems typically execute an application program, such as a computer video game program, to generate graphics images for display on a computer screen. One type of prior art computer graphics system includes an on-line compiler. In this type of computing system, the computer graphics system compiles portions of the application program while executing other portions of the application program in real time. In this way, a first portion of the application program executing in the computer graphics system can provide run time parameters for compiling a second portion of the application program.
In some situations, a portion of the application program written specifically for graphics hardware in the computer graphics system can be simplified by using run time parameters during compilation. For instance, a first portion of the application program may include a loop construct having a loop count parameter, and the compiler can unroll the loop construct based on a value of the loop count parameter provided by a second portion of the application program at run time. Including a compiler in the computer graphics system, however, increases the cost and complexity of the graphics computer system.
Another type of prior art computer graphics system executes precompiled application programs. In this type of computer graphics system, an application program is compiled into binary programs by using an off-line compiler. The binary programs are then provided to the computer graphics system, which executes the binary programs. Precompiling the application program avoids the need for an on-line compiler but may complicate portions of the application program written specifically for graphics hardware in the computer graphics system. Specifically, these portions of the application program may require fixed parameters at compile time.
One type of program typically found in an application program written for a computer graphics system is a shader. A shader generates visual effects for graphics objects. In many computer graphics systems, the shader controls multiple texture units in the graphics hardware, each of which can access samples from a texture. Moreover, the shader generates colors for the graphics object based on the textures accessed from the texture units.
Some shaders require a greater number of textures for creating a visual effect than the number of texture units available in the graphics hardware of a computer graphics system. Consequently, some compilers cannot compile these application programs for these computer graphics systems. Other compilers generate a multi-pass shader by breaking up the task of creating a visual effect into passes such that each pass requires no more texture units than the number of texture units available in the computer graphics system. Each pass of the multi-pass shader performs an operation on a graphics to generate a result. In this way, a pass of the multi-pass shader may perform an operation based on a result generated in a previous pass.
In those types of computer graphics systems that compile programs on-line, an application program can modify parameters of a shader to configure the shader at run time, which may simplify the task of programming the shader. In contrast, those computer graphics systems that rely on an off-line compiler may need to fix some parameters of the shader at the time of compilation (i.e., compile time). Consequently, the shader (i.e., the precompiled shader) is not configurable at run time, which may complicate the task of programming the shader.
In light of the above, there exists a need to simplify the task of programming a multi-pass shader. Additionally, these exists a need for a precompiled multi-pass shader that is configurable at run time.
An application binary interface addresses the need for simplifying the task of programming a multi-pass shader. Further, the application binary interface addresses the need for a precompiled multi-pass shader that is configurable at run time. For each pass of a multi-pass shader, the application binary interface specifies a binary shader, one or more parameters for the binary shader, and a graphics state. The graphics state for a first pass specifies an initial graphics state of a graphics object, and the graphics state of each subsequent pass specifies a change from the graphics state of a previous pass. The parameters link the binary shaders together so that a binary shader of a given pass can use a result generated by a binary shader of a previous pass. The binary application interface simplifies the task of programming the multi-pass shader by specifying the binary shaders, parameters for the binary shaders, and graphics states for the multi-pass shader in a binary file.
In one embodiment of the presently disclosed invention, a method for rendering an image with a graphics processor driven by a multi-pass shader program including a predetermined set of default steps is disclosed. Through the method, the multi-pass shader program is pre-complied to generate binary execution code for execution by the graphics processor. A first parameter of the image is received. A first pass of the multi-pass shader program is executed utilizing the binary execution code and the first parameter to obtain a first data value. At least one default step corresponding to a second pass of the multi-pass shader program is modified based upon the first data value. A second pass of the multi-pass shader is executed utilizing the binary execution code including the at least one default step as modified based upon the first data value to obtain a second data value. An operation is performed on the first data value and the second data value to obtain image rendering data. The image is then rendered, a portion of the image based upon the image rendering data. The multi-pass shader program effectuates a photorealistic effect in the portion of the image through the alteration of a color based on the angle and distance of an object with respect to a light source in the portion of the image.
In a second embodiment a further method for rendering an image with a graphics processor driven by a multi-pass shader program including a predetermined set of default steps is provided. The method includes pre-compiling the multi-pass shader program to generate binary execution code for execution by the graphics processor, receiving a first parameter of the image, and executing a first pass of the multi-pass shader program utilizing the binary execution code and the first parameter to obtain a first data value. A second parameter of the image is received and at least one default step of a second pass of the multi-pass shader program is modified based upon the second parameter. A second pass of the multi-pass shader program is executed utilizing the binary execution code including the at least one default step as modified based upon the second parameter to obtain a second data value and an operation is performed on the first data value and the second data value to obtain image rendering data. The image is rendered, a portion of the image based upon the image rendering data. The multi-pass shader program effectuates a photorealistic effect in the portion of the image through the alteration of a color based on the angle and distance of an object with respect to a light source in the portion of the image.
In a third claimed embodiment, a graphics processor driven by a multi-pass shader program including a predetermined set of default steps is disclosed. The graphics processor is configured to receive a first parameter of the image, execute a first pass of the multi-pass shader program utilizing binary execution code pre-compiled by the multi-pass shader, and the first parameter to obtain a first data value. The processor is further configured to modify at least one default step of a second pass of the multi-pass shader program based upon the first data value and execute a second pass of the multi-pass shader program utilizing the binary execution code including the at least one default step as modified based upon the first data value to obtain a second data value. An image is rendered in response to execution of the graphics processor, a portion of the image based upon the image rendering data. The multi-pass shader program effectuates a photorealistic effect in the portion of the image through the alteration of a color based on the angle and distance of an object with respect to a light source in the portion of the image.
According to one embodiment of the present invention, an application binary interface includes a descriptor for each pass of a multi-pass shader specifying a binary shader for the pass. The application binary interface also includes one or more parameters for the binary shader of each pass. Further, the application binary interface includes a graphics state of each pass. The graphics state of the first pass is an initial graphics state of a graphics object, and the graphics state of each subsequent pass specifies a change from the graphics state of a previous pass. The parameters link the binary shaders together such that a binary shader of a given pass can use a result generated by a binary shader of a previous pass. The binary shader of each pass is then executed based on the graphics state and the parameters of the pass to render the graphics object.
In one embodiment, the computer program 110 is a video game program. In this embodiment, the computer graphics system 120 executes the binary program 125 to render graphics images for the video game program. In another embodiment, the computing system 105 includes the computer graphics system 120.
In one embodiment, the binary program 125 includes computer program code stored on a compact disc read-only memory (CD-ROM). In another embodiment, the binary program 125 includes computer program code stored on a digital versatile disc (DVD). In still another embodiment, the binary program 125 includes computer program code stored on a portable memory device, such as a flash memory device.
In one embodiment, the graphics pipeline 400 includes a plurality of texture units 415, each of which can access one or more textures. In this embodiment, each texture unit 415 concurrently generates an intermediate value for each pixel based on the texture accessed by the texture unit 415, and the raster unit 410 combines the intermediate values of the pixel to generate the value of the pixel. In another embodiment, the value of the pixel represents a color of the pixel.
In one embodiment, the compiler 115 (
In another embodiment, a graphics state can specify characteristics of the computer graphics system 120 (
According to an exemplary embodiment, the application 500 (
In another embodiment, the value of a variable is limited to a predetermined set of values in the application 500. In this embodiment, the compiler 115 generates a binary shader 605 for each value in the predetermined set by setting the parameter to the value. In this way, the parameter of each binary shader 605 is fixed at compile time. The binary application 600 then determines the value of the variable at run time to select the binary shader 605 identified by the value of the variable. In this way, the binary application 600 configures a multi-pass shader at run time based on the value of the variable.
A representation of a shader, a multi-pass shader, and an exemplary application binary interface 610 for the multi-pass shader is depicted in Table 1. As depicted in Table 1, the shader is represented by the expression “output=cosine (texture_lookup(x,y))” in which “x” and “y” are input parameters and “output” represents an output value of the shader. The first pass of the multi-pass shader is represented by the subexpression “tmp=texture_lookup(x, y)” and the second pass is represented by the subexpression “output=cosine(tmp).” In the first pass, “x” and “y” are input parameters and “tmp” represents an output value of the first pass. In the second pass, “tmp” is an input parameter and “output” represents an output value of the second pass.
As is also depicted in table 1, the application binary interface 610 specifies the first pass and the second pass of the multi-pass shader. For the first pass, a descriptor is represented by “texture_lookup”, which identifies a binary shader for the first pass. Further, input parameters for the binary shader of the first pass are represented by “x” and “y”, and an output parameter for the binary shader of the first pass is represented by “tmp”. The output parameter “tmp” represents an output value for the binary shader of the first pass. Further, in this embodiment, the output value for the binary shader of the first pass is a result for the first pass. Additionally, an initial graphics state for a graphics object is represented by “texture unit 1”, which specifies that a first texture unit will access a texture for the binary shader of the first pass.
For the second pass, a descriptor is represented by “cosine”, which represents a binary shader for the second pass. Further, an input parameter for the binary shader of the second pass is represented by “tmp”, which is the output parameter of the first pass. Accordingly, the input parameter “tmp” for the binary shader of the second pass represents the output value of the binary shader of the first pass. Additionally, a graphics state of the second pass is represented by “frame buffer”, which specifies that the result of the second pass will be stored in a frame buffer. In this way, the graphics state of the second pass specifies a change from the graphics state of the first pass. Further, the parameter “tmp” links the binary shader of the second pass to the binary shader of the first pass such that the result of the first pass is an input parameter for the binary shader of the second pass. The output parameter “output” represents an output value for the binary shader of the second pass. Further, in this embodiment, the output value for the binary shader of the second pass is a result for the second pass.
In step 710, the compiler 115 compiles the shader 505 to generate the next binary shader 605 and the next graphics state for the next pass of a multi-pass shader. In one embodiment, the compiler 115 compiles the application 500 together with the shader 505 to generate the binary shader 605 and the graphics state for this next pass. It is to be appreciated that step 710 is optional in the present invention.
In another embodiment, the compiler 115 performs steps 705 and 710 concurrently to generate the binary shader 605 and the graphics state for each pass of the multi-pass shader. In a further embodiment, the compiler 115 also generates the binary application 600 (
In step 715, the compiler 115 determines whether the multi-pass shader includes additional passes. If the multi-pass shader includes additional passes, the method returns to step 710, otherwise the method proceeds to step 720. It is to be appreciated that step 715 is optional in the present invention.
In step 720, the compiler 115 generates a descriptor and one or more parameters for the first pass of the multi-pass shader. The descriptor of the first pass specifies the first binary shader. In one embodiment, the compiler 115 binds at least one parameter of the first pass to the first binary shader 605 at compile time. In another embodiment, the binary application 600 (
In step 725, the compiler 115 generates a descriptor and one or more parameters for the next pass of the multi-pass shader. The descriptor of this pass specifies the binary shader of this pass. In one embodiment, the compiler 115 binds at least one parameter of this pass to the binary shader 605 of this pass at compile time. In another embodiment, the binary application 600 binds at least one parameter of this pass to the binary shader 605 at run time. In still another embodiment, the compiler 115 binds some of the parameters of this pass to the binary shader at compile time and the binary application 600 binds some of the parameters of this pass to the binary shader at run time.
In step 730, the compiler 115 determines whether the multi-pass shader includes additional passes. If the multi-pass shader includes additional passes, the method returns to step 725, otherwise the method ends. It is to be appreciated the application binary interface 610 comprises the parameter(s) generated for each pass of the multi-pass shader.
In one embodiment, the compiler 115 can perform steps 720-730 concurrently to generate the parameters(s) for each pass of the multi-pass shader. In another embodiment of the present invention, the compiler 115 can perform steps 705-730 concurrently to generate the binary shader 605, the graphics state, and the parameter(s) for each pass of the multi-pass shader. In a further embodiment, the compiler can also generate the binary application 600. In still another embodiment, the compiler 115 can perform steps 705 and 720 concurrently. In yet another embodiment, the compiler can perform steps 710 and 725 concurrently.
In step 810, the binary application 600 identifies the binary shader 605 (
In step 815, the graphics processor 325 executes the first pass of the multi-pass shader by executing the first binary shader 605 based on the first graphics state to generate a result for the first pass. In one embodiment, the result for the first pass is a value of each pixel in the graphics object. In a further embodiment, the graphics processor 325 (
In step 820, the binary application 600 identifies the binary shader 605 and the graphics state for the next pass of the multi-pass shader based on the application binary interface 610. In one embodiment, the descriptor of this pass specifies the binary shader 605 of the pass. In this embodiment, the binary application 600 identifies the binary shader 605 of this pass based on the descriptor of this pass. In another embodiment, the descriptor specifies a plurality of binary shaders 605. In this embodiment, the binary application 600 selects the binary shader 605 of this pass from the plurality of binary shaders 605 at run time based on one or more parameters for the binary shader 605 of this pass in the application binary interface 610. In a further embodiment, some or all of the parameters for the binary shader 605 of this pass may be a result of a previous pass.
In step 825, the graphics processor 325 executes this next pass of the multi-pass shader by executing the binary shader 605 based on the graphics state to generate a result for this pass. In one embodiment, the result for this pass is a value of each pixel in the graphics object. In a further embodiment, the graphics processor 325 includes multiple texture units, each of which can access a texture. In this further embodiment, the graphics processor 325 executes the binary shader on the multiple texture units in the graphics processor 325 to generate the value for each pixel based on the textures accessed by the texture units.
In another embodiment, the graphics processor 325 generates the value of each pixel based on the value of the pixel generated in a previous pass. In this embodiment, the graphics state of this pass specifies the texture unit storing the intermediate color of each pixel generated in the previous pass. Consequently, the binary shader 605 of the current pass can access the value of the pixel generated in the previous pass to generate the value of the pixel for this pass. In a further embodiment, the value of the pixel generated for the last pass of the multi-pass shader is a color of the pixel. In another further embodiment, the graphics processor 325 stores the value of each pixel for each pass into the frame buffer 420 (
In step 830, the binary application 600 determines whether the multi-pass shader includes an additional pass based on the application binary interface 610. If the multi-pass shader includes an additional pass, the method returns to step 820, otherwise the method ends.
The embodiments discussed herein are illustrative of the present invention. As these embodiments of the present invention are described with reference to illustrations, various modifications or adaptations of the methods and/or specific structures described may become apparent to those skilled in the art. All such modifications, adaptations, or variations that rely upon the teachings of the present invention, and through which these teachings have advanced the art, are considered to be within the spirit and scope of the present invention. Hence, these descriptions and drawings should not be considered in a limiting sense, as it is understood that the present invention is in no way limited to only the embodiments illustrated.
The present application is a continuation and claims the priority benefit of U.S. patent application Ser. No. 10/959,695 entitled “Application Binary Interface for Multi-Pass Shaders” filed Oct. 6, 2004, the disclosure of which is incorporated herein by reference.
| Number | Name | Date | Kind |
|---|---|---|---|
| 3147341 | Gibson | Sep 1964 | A |
| 3200193 | Eiggs | Aug 1965 | A |
| 3717345 | Banville | Feb 1973 | A |
| 3943277 | Everly et al. | Mar 1976 | A |
| 4051520 | Davidse et al. | Sep 1977 | A |
| 4068847 | Lukkarila et al. | Jan 1978 | A |
| 4090216 | Constable | May 1978 | A |
| 4116444 | Mayer et al. | Sep 1978 | A |
| 4133004 | Fitts | Jan 1979 | A |
| 4241341 | Thorson | Dec 1980 | A |
| 4321635 | Tsuyuguchi | Mar 1982 | A |
| 4355334 | Fitzgibbon et al. | Oct 1982 | A |
| 4361850 | Nishimura | Nov 1982 | A |
| 4448200 | Brooks et al. | May 1984 | A |
| 4514727 | Van Antwerp | Apr 1985 | A |
| 4533937 | Yamamoto et al. | Aug 1985 | A |
| 4646075 | Andrews et al. | Feb 1987 | A |
| 4649504 | Krouglicof et al. | Mar 1987 | A |
| 4658247 | Gharachorloo | Apr 1987 | A |
| 4672564 | Egli et al. | Jun 1987 | A |
| 4675562 | Herlein et al. | Jun 1987 | A |
| 4677569 | Nakano et al. | Jun 1987 | A |
| 4683466 | Holtey et al. | Jul 1987 | A |
| 4685054 | Manninen et al. | Aug 1987 | A |
| 4685146 | Fenster et al. | Aug 1987 | A |
| 4709231 | Sakaibara et al. | Nov 1987 | A |
| 4727365 | Bunker et al. | Feb 1988 | A |
| 4737921 | Goldwasser et al. | Apr 1988 | A |
| 4757525 | Matthews et al. | Jul 1988 | A |
| 4807158 | Blanton et al. | Feb 1989 | A |
| 4817005 | Kubota et al. | Mar 1989 | A |
| 4843568 | Krueger et al. | Jun 1989 | A |
| 4860197 | Langendorf et al. | Aug 1989 | A |
| 4864515 | Deck | Sep 1989 | A |
| 4866637 | Gonzalez-Lopez et al. | Sep 1989 | A |
| 4901064 | Deering | Feb 1990 | A |
| 4905147 | Logg | Feb 1990 | A |
| 4905168 | McCarthy et al. | Feb 1990 | A |
| 4933864 | Evans, Jr. et al. | Jun 1990 | A |
| 4934908 | Turrell et al. | Jun 1990 | A |
| 4942538 | Yuan et al. | Jul 1990 | A |
| 4943938 | Aoshima et al. | Jul 1990 | A |
| 4952917 | Yabuuchi | Aug 1990 | A |
| 4956794 | Zeevi et al. | Sep 1990 | A |
| 4962540 | Tsujiuchi et al. | Oct 1990 | A |
| 4969036 | Bhanu et al. | Nov 1990 | A |
| 4980823 | Liu | Dec 1990 | A |
| 5014327 | Potter et al. | May 1991 | A |
| 5034986 | Karmann et al. | Jul 1991 | A |
| 5045843 | Hansen | Sep 1991 | A |
| 5057744 | Barbier et al. | Oct 1991 | A |
| 5064291 | Reiser | Nov 1991 | A |
| 5067014 | Bergen et al. | Nov 1991 | A |
| 5128671 | Thomas, Jr. | Jul 1992 | A |
| 5128794 | Mocker et al. | Jul 1992 | A |
| 5162781 | Cambridge | Nov 1992 | A |
| 5194941 | Grimaldi et al. | Mar 1993 | A |
| 5208763 | Hong et al. | May 1993 | A |
| 5212888 | Cary et al. | May 1993 | A |
| 5222203 | Obata | Jun 1993 | A |
| 5227985 | DeMenthon | Jul 1993 | A |
| 5230623 | Guthrie et al. | Jul 1993 | A |
| 5253339 | Wells | Oct 1993 | A |
| 5265888 | Yamamoto et al. | Nov 1993 | A |
| 5268996 | Steiner et al. | Dec 1993 | A |
| 5269687 | Mott et al. | Dec 1993 | A |
| 5274560 | LaRue | Dec 1993 | A |
| 5297061 | Dementhon et al. | Mar 1994 | A |
| 5305389 | Palmer | Apr 1994 | A |
| 5307137 | Jones et al. | Apr 1994 | A |
| 5335557 | Yasutake | Aug 1994 | A |
| 5351090 | Nakamura | Sep 1994 | A |
| 5354202 | Moncrief et al. | Oct 1994 | A |
| 5361147 | Katayama et al. | Nov 1994 | A |
| 5363120 | Drumm | Nov 1994 | A |
| 5366376 | Copperman et al. | Nov 1994 | A |
| 5367615 | Economy et al. | Nov 1994 | A |
| 5369737 | Gholizadeh et al. | Nov 1994 | A |
| 5387943 | Silver | Feb 1995 | A |
| 5446714 | Yoshio et al. | Aug 1995 | A |
| 5446798 | Morita et al. | Aug 1995 | A |
| 5448687 | Hoogerhyde et al. | Sep 1995 | A |
| 5450504 | Calia | Sep 1995 | A |
| 5469193 | Giobbi et al. | Nov 1995 | A |
| 5473736 | Young | Dec 1995 | A |
| 5526041 | Glatt | Jun 1996 | A |
| 5534917 | MacDougall | Jul 1996 | A |
| 5537638 | Morita et al. | Jul 1996 | A |
| 5548667 | Tu | Aug 1996 | A |
| 5550960 | Shirman et al. | Aug 1996 | A |
| 5555532 | Sacha | Sep 1996 | A |
| 5557684 | Wang et al. | Sep 1996 | A |
| 5559950 | Cannon | Sep 1996 | A |
| 5563989 | Billyard | Oct 1996 | A |
| 5572261 | Cooper | Nov 1996 | A |
| 5574836 | Broemmelsiek | Nov 1996 | A |
| 5577179 | Blank | Nov 1996 | A |
| 5577913 | Moncrief et al. | Nov 1996 | A |
| 5586231 | Florent et al. | Dec 1996 | A |
| 5590248 | Zarge et al. | Dec 1996 | A |
| 5598297 | Yamanaka et al. | Jan 1997 | A |
| 5611000 | Szeliski et al. | Mar 1997 | A |
| 5616078 | Oh | Apr 1997 | A |
| 5617407 | Bareis | Apr 1997 | A |
| 5630033 | Purcell et al. | May 1997 | A |
| 5631697 | Nishimura et al. | May 1997 | A |
| 5647019 | Iino et al. | Jul 1997 | A |
| 5649032 | Burt et al. | Jul 1997 | A |
| 5659671 | Tannenbaum et al. | Aug 1997 | A |
| 5660547 | Copperman | Aug 1997 | A |
| 5668646 | Katayama et al. | Sep 1997 | A |
| 5672820 | Rossi et al. | Sep 1997 | A |
| 5673374 | Sakaibara et al. | Sep 1997 | A |
| 5680487 | Markandey | Oct 1997 | A |
| 5684887 | Lee et al. | Nov 1997 | A |
| 5699497 | Erdahl et al. | Dec 1997 | A |
| 5704024 | Voorhies et al. | Dec 1997 | A |
| 5717148 | Ely et al. | Feb 1998 | A |
| 5717848 | Watanabe et al. | Feb 1998 | A |
| 5734384 | Yanof et al. | Mar 1998 | A |
| 5748865 | Yamamoto et al. | May 1998 | A |
| 5748867 | Cosman et al. | May 1998 | A |
| 5751928 | Bakalash | May 1998 | A |
| 5756354 | Tzidon et al. | May 1998 | A |
| 5757360 | Nitta et al. | May 1998 | A |
| 5760781 | Kaufman et al. | Jun 1998 | A |
| 5761401 | Kobayashi et al. | Jun 1998 | A |
| 5764803 | Jacquin et al. | Jun 1998 | A |
| 5769718 | Rieder | Jun 1998 | A |
| 5774124 | Itoh et al. | Jun 1998 | A |
| 5781194 | Ponomarev et al. | Jul 1998 | A |
| 5786801 | Ichise | Jul 1998 | A |
| 5793376 | Tanaka et al. | Aug 1998 | A |
| 5798519 | Vock et al. | Aug 1998 | A |
| 5805170 | Burch | Sep 1998 | A |
| 5805745 | Graf | Sep 1998 | A |
| 5805782 | Foran | Sep 1998 | A |
| 5808617 | Kenworthy et al. | Sep 1998 | A |
| 5808619 | Choi et al. | Sep 1998 | A |
| 5812136 | Keondjian | Sep 1998 | A |
| 5812141 | Kamen et al. | Sep 1998 | A |
| 5818424 | Korth | Oct 1998 | A |
| 5818553 | Koenck et al. | Oct 1998 | A |
| 5825308 | Rosenberg | Oct 1998 | A |
| 5831623 | Negishi et al. | Nov 1998 | A |
| 5852443 | Kenworthy | Dec 1998 | A |
| 5854632 | Steiner | Dec 1998 | A |
| 5856844 | Batterman et al. | Jan 1999 | A |
| 5864342 | Kajiya et al. | Jan 1999 | A |
| 5864742 | Gasper et al. | Jan 1999 | A |
| 5870097 | Snyder et al. | Feb 1999 | A |
| 5870098 | Gardiner | Feb 1999 | A |
| 5880736 | Peercy et al. | Mar 1999 | A |
| 5880856 | Ferriere | Mar 1999 | A |
| 5889505 | Toyama et al. | Mar 1999 | A |
| 5890122 | Van Kleeck et al. | Mar 1999 | A |
| 5894308 | Isaacs | Apr 1999 | A |
| 5899810 | Smith | May 1999 | A |
| 5903318 | Demay et al. | May 1999 | A |
| 5905894 | De Bonet | May 1999 | A |
| 5912830 | Krech, Jr. et al. | Jun 1999 | A |
| 5913727 | Ahdoot | Jun 1999 | A |
| 5914724 | Deering et al. | Jun 1999 | A |
| 5915972 | Tada | Jun 1999 | A |
| 5917937 | Szeliski et al. | Jun 1999 | A |
| 5922318 | Bandman et al. | Jul 1999 | A |
| 5923381 | Demay et al. | Jul 1999 | A |
| 5929860 | Hoppe | Jul 1999 | A |
| 5933150 | Ngo et al. | Aug 1999 | A |
| 5933535 | Lee et al. | Aug 1999 | A |
| 5935198 | Blomgren | Aug 1999 | A |
| 5949424 | Cabral et al. | Sep 1999 | A |
| 5953485 | Abecassis | Sep 1999 | A |
| 5959673 | Lee et al. | Sep 1999 | A |
| 5963209 | Hoppe | Oct 1999 | A |
| 5966133 | Hoppe | Oct 1999 | A |
| 5977977 | Kajiya et al. | Nov 1999 | A |
| 5982352 | Pryor | Nov 1999 | A |
| 5982390 | Stoneking et al. | Nov 1999 | A |
| 5986668 | Szeliski et al. | Nov 1999 | A |
| 5987164 | Szeliski et al. | Nov 1999 | A |
| 5990901 | Lawton et al. | Nov 1999 | A |
| 6002738 | Cabral et al. | Dec 1999 | A |
| 6009188 | Cohen et al. | Dec 1999 | A |
| 6009190 | Szeliski et al. | Dec 1999 | A |
| 6010403 | Adam et al. | Jan 2000 | A |
| 6016150 | Lengyel et al. | Jan 2000 | A |
| 6018347 | Willis | Jan 2000 | A |
| 6018349 | Szeliski et al. | Jan 2000 | A |
| 6023523 | Cohen et al. | Feb 2000 | A |
| 6026182 | Lee et al. | Feb 2000 | A |
| 6031934 | Ahmad et al. | Feb 2000 | A |
| 6034691 | Aono et al. | Mar 2000 | A |
| 6034692 | Gallery et al. | Mar 2000 | A |
| 6034693 | Kobayashi et al. | Mar 2000 | A |
| 6035067 | Ponticos | Mar 2000 | A |
| 6037947 | Nelson et al. | Mar 2000 | A |
| 6040842 | Wavish et al. | Mar 2000 | A |
| 6044181 | Szeliski et al. | Mar 2000 | A |
| 6046744 | Hoppe | Apr 2000 | A |
| 6049619 | Anandan et al. | Apr 2000 | A |
| 6049636 | Yang | Apr 2000 | A |
| 6058397 | Barrus et al. | May 2000 | A |
| 6072494 | Nguyen | Jun 2000 | A |
| 6072504 | Segen | Jun 2000 | A |
| 6081274 | Shiraishi | Jun 2000 | A |
| 6100898 | Malamy et al. | Aug 2000 | A |
| 6101289 | Kellner | Aug 2000 | A |
| 6121953 | Walker | Sep 2000 | A |
| 6130673 | Pulli et al. | Oct 2000 | A |
| 6137492 | Hoppe | Oct 2000 | A |
| 6141013 | Nelson et al. | Oct 2000 | A |
| 6141041 | Carlbom et al. | Oct 2000 | A |
| 6155924 | Nakagawa et al. | Dec 2000 | A |
| 6157386 | Wilde | Dec 2000 | A |
| 6162123 | Woolston | Dec 2000 | A |
| 6172354 | Adan et al. | Jan 2001 | B1 |
| 6175367 | Parikh et al. | Jan 2001 | B1 |
| 6181384 | Kurashige et al. | Jan 2001 | B1 |
| 6181988 | Schneider et al. | Jan 2001 | B1 |
| 6200138 | Ando et al. | Mar 2001 | B1 |
| 6201581 | Moriwake et al. | Mar 2001 | B1 |
| 6203426 | Matsui et al. | Mar 2001 | B1 |
| 6208347 | Migdal et al. | Mar 2001 | B1 |
| 6220962 | Miyamoto et al. | Apr 2001 | B1 |
| 6222555 | Christofferson et al. | Apr 2001 | B1 |
| 6229553 | Duluk, Jr. et al. | May 2001 | B1 |
| 6233291 | Shukhman et al. | May 2001 | B1 |
| 6252608 | Snyder et al. | Jun 2001 | B1 |
| 6268875 | Duluk, Jr. et al. | Jul 2001 | B1 |
| 6273814 | Komoto | Aug 2001 | B1 |
| 6288730 | Duluk, Jr. et al. | Sep 2001 | B1 |
| 6313841 | Ogata et al. | Nov 2001 | B1 |
| 6313842 | Tampieri | Nov 2001 | B1 |
| 6319129 | Igarashi et al. | Nov 2001 | B1 |
| 6320580 | Yasui et al. | Nov 2001 | B1 |
| 6330000 | Fenney et al. | Dec 2001 | B1 |
| 6331851 | Suzuki et al. | Dec 2001 | B1 |
| 6342885 | Knittel et al. | Jan 2002 | B1 |
| 6348921 | Zhao et al. | Feb 2002 | B1 |
| 6353272 | van der Hoeven | Mar 2002 | B1 |
| 6356263 | Migdal et al. | Mar 2002 | B2 |
| 6356288 | Freeman et al. | Mar 2002 | B1 |
| 6361438 | Morihira | Mar 2002 | B1 |
| 6366272 | Rosenberg et al. | Apr 2002 | B1 |
| 6392647 | Migdal et al. | May 2002 | B1 |
| 6396490 | Gorman | May 2002 | B1 |
| 6400842 | Fukuda | Jun 2002 | B2 |
| 6411298 | Goto et al. | Jun 2002 | B1 |
| 6414960 | Kuhn et al. | Jul 2002 | B1 |
| 6417836 | Kumar et al. | Jul 2002 | B1 |
| 6421057 | Lauer et al. | Jul 2002 | B1 |
| 6426720 | Ross et al. | Jul 2002 | B1 |
| 6426755 | Deering | Jul 2002 | B1 |
| 6456977 | Wang | Sep 2002 | B1 |
| 6476807 | Duluk, Jr. et al. | Nov 2002 | B1 |
| 6488505 | Hightower | Dec 2002 | B1 |
| 6489955 | Newhall, Jr. | Dec 2002 | B1 |
| 6496189 | Yaron et al. | Dec 2002 | B1 |
| 6496598 | Harman | Dec 2002 | B1 |
| 6504538 | Freund et al. | Jan 2003 | B1 |
| 6529206 | Ohki et al. | Mar 2003 | B1 |
| 6529875 | Nakajima et al. | Mar 2003 | B1 |
| 6538666 | Ozawa et al. | Mar 2003 | B1 |
| 6545663 | Arbter et al. | Apr 2003 | B1 |
| 6554707 | Sinclair et al. | Apr 2003 | B1 |
| 6563499 | Waupotitsch et al. | May 2003 | B1 |
| 6571208 | Kuhn et al. | May 2003 | B1 |
| 6572475 | Okabe et al. | Jun 2003 | B1 |
| 6573890 | Lengyel | Jun 2003 | B1 |
| 6577312 | Deering et al. | Jun 2003 | B2 |
| 6578197 | Peercy et al. | Jun 2003 | B1 |
| 6585599 | Horigami et al. | Jul 2003 | B1 |
| 6594388 | Gindele et al. | Jul 2003 | B1 |
| 6597363 | Duluk, Jr. et al. | Jul 2003 | B1 |
| 6611265 | Hong et al. | Aug 2003 | B1 |
| 6639594 | Zhang et al. | Oct 2003 | B2 |
| 6646639 | Greene et al. | Nov 2003 | B1 |
| 6646640 | Nagy | Nov 2003 | B2 |
| 6650329 | Koike | Nov 2003 | B1 |
| 6652376 | Yoshida et al. | Nov 2003 | B1 |
| 6664955 | Deering | Dec 2003 | B1 |
| 6664959 | Duluk, Jr. et al. | Dec 2003 | B2 |
| 6680746 | Kawai et al. | Jan 2004 | B2 |
| 6686924 | Mang et al. | Feb 2004 | B1 |
| 6714236 | Wada et al. | Mar 2004 | B1 |
| 6717576 | Duluk, Jr. et al. | Apr 2004 | B1 |
| 6717579 | Deslandes et al. | Apr 2004 | B1 |
| 6717599 | Olano | Apr 2004 | B1 |
| 6720949 | Pryor et al. | Apr 2004 | B1 |
| 6738059 | Yoshinaga et al. | May 2004 | B1 |
| 6744442 | Chan et al. | Jun 2004 | B1 |
| 6750867 | Gibson | Jun 2004 | B1 |
| 6755654 | Hightower | Jun 2004 | B2 |
| 6764403 | Gavin | Jul 2004 | B2 |
| 6771264 | Duluk et al. | Aug 2004 | B1 |
| 6771813 | Katsuyama | Aug 2004 | B1 |
| 6778181 | Kilgariff et al. | Aug 2004 | B1 |
| 6781594 | Day | Aug 2004 | B2 |
| 6795068 | Marks | Sep 2004 | B1 |
| 6798411 | Gorman et al. | Sep 2004 | B1 |
| 6803910 | Pfister et al. | Oct 2004 | B2 |
| 6803964 | Post et al. | Oct 2004 | B1 |
| 6807296 | Mishima | Oct 2004 | B2 |
| 6825851 | Leather | Nov 2004 | B1 |
| 6850236 | Deering | Feb 2005 | B2 |
| 6850243 | Kilgariff et al. | Feb 2005 | B1 |
| 6853382 | Van Dyke et al. | Feb 2005 | B1 |
| 6854632 | Larsson | Feb 2005 | B1 |
| 6864895 | Tidwell et al. | Mar 2005 | B1 |
| 6903738 | Pfister et al. | Jun 2005 | B2 |
| 6912010 | Baker et al. | Jun 2005 | B2 |
| 6917692 | Murching et al. | Jul 2005 | B1 |
| 6928433 | Goodman et al. | Aug 2005 | B2 |
| 6956871 | Wang et al. | Oct 2005 | B2 |
| 6962527 | Baba | Nov 2005 | B2 |
| 6995788 | James | Feb 2006 | B2 |
| 7006101 | Brown et al. | Feb 2006 | B1 |
| 7072792 | Freifeld | Jul 2006 | B2 |
| 7079138 | Day | Jul 2006 | B2 |
| 7081893 | Cerny | Jul 2006 | B2 |
| 7085722 | Luisi | Aug 2006 | B2 |
| 7101284 | Kake et al. | Sep 2006 | B2 |
| 7113193 | Marks | Sep 2006 | B2 |
| 7162314 | Fay et al. | Jan 2007 | B2 |
| 7180529 | Covannon et al. | Feb 2007 | B2 |
| 7214133 | Jen et al. | May 2007 | B2 |
| 7233904 | Luisi | Jun 2007 | B2 |
| 7251315 | Quinton | Jul 2007 | B1 |
| 7293235 | Powers et al. | Nov 2007 | B1 |
| 7304667 | Watanabe et al. | Dec 2007 | B2 |
| 7333150 | Cooper | Feb 2008 | B2 |
| 7339589 | Annunziata | Mar 2008 | B2 |
| 7589723 | Wang et al. | Sep 2009 | B2 |
| 7636126 | Mallinson | Dec 2009 | B2 |
| 7777746 | Annunziata | Aug 2010 | B2 |
| 7877262 | Luisi | Jan 2011 | B2 |
| 7880746 | Marks et al. | Feb 2011 | B2 |
| 7920209 | Mallinson | Apr 2011 | B2 |
| 20010048434 | Brown | Dec 2001 | A1 |
| 20020018063 | Donovan et al. | Feb 2002 | A1 |
| 20020041335 | Taraci et al. | Apr 2002 | A1 |
| 20020047937 | Wells | Apr 2002 | A1 |
| 20020068626 | Takeda et al. | Jun 2002 | A1 |
| 20020080136 | Kouadio | Jun 2002 | A1 |
| 20020107070 | Nagy | Aug 2002 | A1 |
| 20020130866 | Stuttard | Sep 2002 | A1 |
| 20020140703 | Baker et al. | Oct 2002 | A1 |
| 20020162081 | Solomon | Oct 2002 | A1 |
| 20020167518 | Migdal et al. | Nov 2002 | A1 |
| 20030009748 | Glanville et al. | Jan 2003 | A1 |
| 20030043163 | Day | Mar 2003 | A1 |
| 20030058238 | Doak et al. | Mar 2003 | A1 |
| 20030112238 | Cerny et al. | Jun 2003 | A1 |
| 20030117391 | Olano | Jun 2003 | A1 |
| 20030142232 | Albean | Jul 2003 | A1 |
| 20030179220 | Dietrich et al. | Sep 2003 | A1 |
| 20040003370 | Schenk et al. | Jan 2004 | A1 |
| 20040051716 | Sevigny | Mar 2004 | A1 |
| 20040056860 | Collodi | Mar 2004 | A1 |
| 20040100582 | Stanger | May 2004 | A1 |
| 20040130550 | Blanco et al. | Jul 2004 | A1 |
| 20040130552 | Duluk et al. | Jul 2004 | A1 |
| 20040263636 | Cutler et al. | Dec 2004 | A1 |
| 20040268413 | Reid et al. | Dec 2004 | A1 |
| 20050001836 | Day | Jan 2005 | A1 |
| 20050019020 | Sato et al. | Jan 2005 | A1 |
| 20050024379 | Marks | Feb 2005 | A1 |
| 20050078116 | Sloan et al. | Apr 2005 | A1 |
| 20050090312 | Campbell | Apr 2005 | A1 |
| 20050243094 | Patel et al. | Nov 2005 | A1 |
| 20050253965 | Cooper | Nov 2005 | A1 |
| 20060015348 | Cooper et al. | Jan 2006 | A1 |
| 20060039017 | Park et al. | Feb 2006 | A1 |
| 20060071933 | Green et al. | Apr 2006 | A1 |
| 20060209210 | Swan et al. | Sep 2006 | A1 |
| 20060290810 | Mallinson | Dec 2006 | A1 |
| 20070106760 | Houh et al. | May 2007 | A1 |
| 20070257928 | Marks et al. | Nov 2007 | A1 |
| 20070279427 | Marks | Dec 2007 | A1 |
| 20080070655 | Tanabe | Mar 2008 | A1 |
| 20080268956 | Suzuki | Oct 2008 | A1 |
| 20090193453 | Cansler et al. | Jul 2009 | A1 |
| 20100029387 | Luisi | Feb 2010 | A1 |
| 20100053430 | Mallinson | Mar 2010 | A1 |
| 20110181776 | Mallinson | Jul 2011 | A1 |
| 20110205240 | Marks et al. | Aug 2011 | A1 |
| 20110249072 | Marks | Oct 2011 | A1 |
| Number | Date | Country |
|---|---|---|
| 1201180 | Dec 1998 | CN |
| 19905076 | May 2000 | DE |
| 448411 | Sep 1991 | EP |
| 615386 | Sep 1994 | EP |
| 789296 | Aug 1997 | EP |
| 850673 | Jul 1998 | EP |
| 1029569 | Aug 2000 | EP |
| 1630754 | Mar 2006 | EP |
| 1650706 | Apr 2006 | EP |
| 2351637 | Jan 2001 | GB |
| 2411065 | Aug 2005 | GB |
| 59-002040 | Jan 1984 | JP |
| 59-202779 | Nov 1984 | JP |
| 61-131110 | Jun 1986 | JP |
| H527779 | Apr 1993 | JP |
| 6266854 | Sep 1994 | JP |
| 7-160412 | Jun 1995 | JP |
| 2007271999 | Oct 1995 | JP |
| 2007334664 | Dec 1995 | JP |
| 9265379 | Oct 1997 | JP |
| 10055454 | Feb 1998 | JP |
| 11070273 | Mar 1999 | JP |
| 2000137828 | May 2000 | JP |
| 2000311251 | Jul 2000 | JP |
| 2000218036 | Aug 2000 | JP |
| 2000233072 | Aug 2000 | JP |
| 2000237453 | Sep 2000 | JP |
| 200338993 | Dec 2000 | JP |
| 2001029649 | Feb 2001 | JP |
| 3244798 | Oct 2001 | JP |
| 2002159749 | Jun 2002 | JP |
| 2001079263 | Mar 2003 | JP |
| 2008165784 | Jul 2008 | JP |
| 4616330 | Oct 2010 | JP |
| 20000072753 | Dec 2000 | KR |
| 9418790 | Aug 1994 | WO |
| 9802223 | Jan 1998 | WO |
| 9853443 | Nov 1998 | WO |
| 0010130 | Feb 2000 | WO |
| 0129768 | Apr 2001 | WO |
| 0182626 | Nov 2001 | WO |
| 2005040900 | May 2005 | WO |
| 2006033360 | Mar 2006 | WO |
| 2008018943 | Feb 2008 | WO |
| 2008058271 | May 2008 | WO |
| 2008058271 | Aug 2008 | WO |
| Number | Date | Country | |
|---|---|---|---|
| 20090040222 A1 | Feb 2009 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 10959695 | Oct 2004 | US |
| Child | 12287317 | US |