Source: http://www.google.com/patents/US7307640?dq=7125605
Timestamp: 2016-02-10 11:43:08
Document Index: 395267058

Matched Legal Cases: ['Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60', 'Application No. 60']

Patent US7307640 - Method and apparatus for efficient generation of texture coordinate ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsA graphics system including a custom graphics and audio processor produces exciting 2D and 3D graphics and surround sound. The system includes a graphics and audio processor including a 3D graphics pipeline and an audio digital signal processor. Emboss style effects are created using fully pipelined...http://www.google.com/patents/US7307640?utm_source=gb-gplus-sharePatent US7307640 - Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering systemAdvanced Patent SearchPublication numberUS7307640 B2Publication typeGrantApplication numberUS 11/106,673Publication dateDec 11, 2007Filing dateApr 15, 2005Priority dateAug 23, 2000Fee statusPaidAlso published asUS6980218, US20050195210Publication number106673, 11106673, US 7307640 B2, US 7307640B2, US-B2-7307640, US7307640 B2, US7307640B2InventorsEric Demers, Mark M. Leather, Mark G. SegalOriginal AssigneeNintendo Co., Ltd.Export CitationBiBTeX, EndNote, RefManPatent Citations (106), Non-Patent Citations (99), Referenced by (29), Classifications (10), Legal Events (2) External Links: USPTO, USPTO Assignment, EspacenetMethod and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
2. In a graphics processing system that renders and displays images at least in part in response to polygon vertex attribute data and texture color data stored in an associated memory, the graphics system including a geometry transform unit comprising hardware for at least computing a coordinate-space transformation and a vector dot-product, a method of implementing embossed-style bump-mapped texture effects in graphics rendering system, comprising the steps of:
storing a texture data image in memory, the texture data image comprising color values parameterized by at least two coordinate values representing two orthogonal axes for mapping the image;
supplying light position information, texture coordinate information, vertex position information and object-space Normal, Binormal and Tangent vector data per polygon vertex to the geometry transform unit, wherein for each vertex said Binormal and Tangent vector data map respectively, in an object-space coordinate system, to each orthogonal axis of the bump-map image;
transforming the object-space Normal, Binormal and Tangent vector data to an eye-space coordinate system;
computing a light direction vector from light position and vertex position information;
computing a texture coordinate displacement based on a vector dot-product between the light direction vector and each of the Binormal and Tangent eye-space vector components;
adding the texture coordinate displacement to eye-space texture coordinates to obtain a set of displaced texture coordinates;
using the set of displaced texture coordinates to retrieve texture color data from the stored texture data image; and
performing texture subtraction in one pass.
3. A method of performing embossed-style bump mapping comprising:
providing a description of Tangent and Binormal vectors for each of plural vertices of a polygon;
providing a light direction vector;
computing texture coordinate displacements for each of said vertices in response to said light director vector and said Tangent and Binormal vector;
generating texture coordinates in response to said computed texture coordinated displacements; and
texture mapping said polygon based on said texture coordinates, including providing a texture combining operation that performs texture subtraction in a single pass.
4. The method of claim 3 wherein said texture combining is performed in texture hardware.
5. The method of claim 3 further including scaling the Tangent and Binormal vector data by scaling a model view matrix and applying the scaled model view matrix to the vector data.
6. The method of claim 3 wherein the texture coordinate displacement computing does not use a Normal vector.
7. The method of claim 3 wherein the texture coordinate displacement computing computes the following in parallel:
a first vector dot-product between the light direction vector and the Tangent vector,
a second vector dot-product between the light direction vector and the Binormal vector, and
the square of the light direction vector.
8. The method as in claim 3 wherein the texture coordinate displacement computing step is performed using two distinct dot-product computation units, the first dot-product computation unit computing eye-space transformation of the Tangent and Binormal vectors, the second dot-product computation unit computing at least vector dot-products between the light direction vector and each of the Tangent and Binormal vectors.
9. In a graphics chip including a logic array, a pipelined arrangement implemented within the logic array that performs embossed-style bump mapping based on Tangent and Binormal vectors for each of plural vertices of a polygon and a light direction vector, said arrangement including:
a dot-product computation unit and associated logic circuitry adapted to receive a scaling factor, the dot-product computation unit and associated logic circuitry scaling a model view matrix in response to the scaling factor and applying the scaled model view matrix to the Tangent and Binormal vectors to provide texture coordinate displacements for each of said vertices; and
texture mapping and combining circuitry that generates embossing effects in response to said texture coordinate displacements.
10. Apparatus as in claim 9 wherein said texture mapping and combining circuitry performs texture subtraction in one pass.
11. Apparatus as in claim 9 wherein the dot-product computation unit does not use the Normal input vector to compute displacements.
12. Apparatus as in claim 9 further including a further dot-product computation unit that parallelly computes dot products between the Binormal and Tangent vectors and a light direction vector.
This application claims the benefit of U.S. Provisional Application Ser. No. 60/226,892, filed Aug. 23, 2000, the entire content of which is hereby incorporated by reference.
This application is also related to the following commonly assigned co-pending applications identified below, which focus on various aspects of the graphics system described herein. Each of the following applications are incorporated herein by reference:
provisional Application No. 60/161,915, filed Oct. 28, 1999 and its corresponding utility application Ser. No. 09/465,754, filed Dec. 17, 1999, both entitled “Vertex Cache For 3D Computer Graphics”; provisional Application No. 60/226,912, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,215, filed Nov. 28, 2000, both entitled “Method and Apparatus for Buffering Graphics Data in a Graphics System”; provisional Application No. 60/226,889, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,419, filed Nov. 28, 2000, both entitled “Graphics Pipeline Token Synchronization”; provisional Application No. 60/226,891, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,382, filed Nov. 28, 2000, both entitled “Method And Apparatus For Direct and Indirect Texture Processing In A Graphics System”; provisional Application No. 60/226,888, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,367, filed Nov. 28, 2000, both entitled “Recirculating Shade Tree Blender For A Graphics System”; provisional Application No. 60/226,893, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,381, filed Nov. 28, 2000, both entitled “Method And Apparatus For Environment-Mapped Bump-Mapping In A Graphics System”; provisional Application No. 60/227,007, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,216, filed Nov. 28, 2000, both entitled “Achromatic Lighting in a Graphics System and Method”; provisional Application No. 60/226,900, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,226, filed Nov. 28, 2000, both entitled “Method And Apparatus For Anti-Aliasing In A Graphics System”; provisional Application No. 60/226,910, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,380, filed Nov. 28, 2000, both entitled “Graphics System With Embedded Frame Buffer Having Reconfigurable Pixel Formats”; utility application Ser. No. 09/585,329, filed Jun. 2, 2000, entitled “Variable Bit Field Color Encoding”; provisional Application No. 60/226,890, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,227, filed Nov. 28, 2000, both entitled “Method And Apparatus For Dynamically Reconfiguring The Order Of Hidden Surface Processing Based On Rendering Mode”; provisional Application No. 60/226,915, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,212, filed Nov. 28, 2000, both entitled “Method And Apparatus For Providing Non-Photorealistic Cartoon Outlining Within A Graphics System”; provisional Application No. 60/227,032, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,225, filed Nov. 28, 2000, both entitled “Method And Apparatus For Providing Improved Fog Effects In A Graphics System”; provisional Application No. 60/226,885, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,664, filed Nov. 28, 2000, both entitled “Controller Interface For A Graphics System”; provisional Application No. 60/227,033, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,221, filed Nov. 28, 2000, both entitled “Method And Apparatus For Texture Tiling In A Graphics System”; provisional Application No. 60/226,899, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,667, filed Nov. 28, 2000, both entitled “Method And Apparatus For Pre-Caching Data In Audio Memory”; provisional Application No. 60/226,913, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,378, filed Nov. 28, 2000, both entitled “Z-Textu ring”; provisional Application No. 60/227,031, filed Aug. 23, 2000 entitled “Application Program Interface for a Graphics System”; provisional Application No. 60/227,030, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,663, filed Nov. 28, 2000, both entitled “Graphics System With Copy Out Conversions Between Embedded Frame Buffer And Main Memory”; provisional Application No. 60/226,886, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,665, filed Nov. 28, 2000, , both entitled “Method and Apparatus for Accessing Shared Resources”; provisional Application No. 60/226,894, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/726,220, filed Nov. 28, 2000, both entitled “Graphics Processing System With Enhanced Memory Controller”; provisional Application No. 60/226,914, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,390, filed Nov. 28, 2000, both entitled “Low Cost Graphics System With Stitching Hardware Support For Skeletal Animation”, and provisional Application No. 60/227,006, filed Aug. 23, 2000 and its corresponding utility application Ser. No. 09/722,421, filed Nov. 28, 2000, both entitled “Shadow Mapping In A Low Cost Graphics System”. FIELD OF THE INVENTION
The present invention relates to computer graphics, and more particularly to interactive graphics systems such as home video game platforms. Still more particularly this invention relates to efficient generation of texture coordinate displacements for implementing emboss-style bump-mapping effects for diffuse-lit textures on a rendered object.
One problem that graphics system designers have often confronted in the past was the efficient rendering of a 3D object that displays realistic-looking surface characteristics that react to various lighting conditions in a manner similar to the surface of an actual object having, for example, random surface flaws, irregularities, roughness, bumps or other slight non-planar surface variations. While in some instances such minute surface characteristics might be actually modeled, the time required for translating and rendering a 3D object with such a complex surface would be prohibitive for most real-time or interactive gaming applications. Consequently, various solutions to this problem were offered. For example, a technique generally known as “bump-mapping” was developed which allowed one to approximate the effect that non-planar surface variations would produce on lighted object. See, for example, J. F. Blinn “Simulation of Wrinkled Surfaces” Computer Graphics, (SIGRAPH '78 Proceedings), vol. 12, No. 3, pp. 286-292 (August 1978); “Models of Light Reflection for Computer Synthesized Pictures”, Proc. 4th Conference on Computer Graphics and Instructive Techniques, 1977; and “Programming with OpenGL: Advanced Rendering” by Tom McReynolds and David Blythe—SIGGRAPH '97 course—Section 8.3 “Bump Mapping with Textures”. Basically, this technique allows a graphics application programmer to add realism to an image without using a lot of geometry by modeling small surface variations as height differences and then applying those difference values over a surface as perturbations to a surface Normal vector used in computing surface lighting effects. Effectively, a bump-map modifies the shading of a polygon by perturbing the surface Normal on a per-pixel basis. The shading makes the surface appear bumpy, even though the underlying geometry is relatively flat.
Most conventional approaches toward implementing simple forms of bump-mapping effects with diffuse-lit textured surfaces generally entail computing, for each pixel, the difference between a first sample of a bump map texture image at a particular texture coordinate and a second sample of the same texture image at a texture coordinate displacement. In addition, computing a texture coordinate displacement map generally involves computations using eye-space components of surface Tangent and Binormal vectors (binormals). In particular, to implement a simple form of bump-mapping having an embossing type effect on a texture image, it is most efficient to compute and apply the texture coordinate displacements in the eye-space (view-space/camera-space) reference frame—which is more conducive to a subsequent rasterizing process prior rendering for display. Consequently, texture coordinate displacement for emboss-style bump-mapping is preferably computed and generated after vertex position and surface binormals at a vertex are transformed from model-space into eye-space for pixel rendering.
Typically, in low cost graphics processing systems such as a home video game system, vertex transformation and lighting (T&L) operations are commonly performed by the application program using the graphics system host CPU—primarily because a software T&L implementation, although more computationally taxing on the host CPU, is usually less expensive than using specialized hardware. Hardware implementation of T&L, however, may be preferable in gaming systems because it typically results in much faster renderings and can free up host CPU processing time for performing other desirable tasks such as game strategy and AI computations for improved game performance. Moreover, in graphics rendering arrangements where T&L operations are performed by the application software on the host CPU, additional processing tasks such as performing texture coordinate computations for bump-mapping can significantly add to the processing overhead.
In graphics rendering systems where the T&L operations are performed by dedicated graphics hardware, the host CPU typically provides model-space vertex attributes to the dedicated T&L hardware and then allows the hardware to perform all the coordinate space transformations and lighting computations. Consequently, it is not particularly efficient to require the host CPU to compute texture coordinate displacements for bump mapping purposes subsequent to the T&L hardware performing space transformations of the vertex position and surface normal/binormal vectors. Essentially, this would effectively undermine rendering speed improvements gained from utilizing dedicated T&L hardware whenever bump mapping operations are performed.
The present invention solves this problem by providing techniques and arrangements in a graphics rendering system for the efficient generation of texture coordinate displacements for implementing at least an emboss-style bump-mapping texture effect without the need for the host CPU application software to compute the required texture coordinate displacements. An enhanced API (applications program interface) vertex attribute function capable of specifying three surface normals per vertex (i.e., the Normal, Tangent and Binormal) is utilized and the host CPU application software need only compute the required additional Tangent and Binormal surface vectors per vertex in object-space (model-space), in addition to providing the surface Normal and other conventional per-vertex attributes.
Some of the features provided by aspects of this invention include:
use of a texture-combining unit capable of performing texture subtraction in one pass, use of texture combining for bump mapping that performs texture combining in texture hardware, scaling of the binormals (Tangent and Binormal) by scaling a model view matrix and applying the model view matrix to the binormals, computation of texture displacements using the Binormal and Tangent vectors but not the Normal input vector, increased performance through use of two distinct dot product computation units (one dot unit performs model view matrix multiply, the second computes in parallel the dot products of the Tangent and Binormal with the light direction vector as well as the square of the light direction vector), fully pipelined hardware can perform the necessary computations using a small number of distinct operations. In accordance with one aspect of the present invention, a graphics rendering system is provided with enhanced vertex transformation and lighting (T&L) hardware that is capable of performing at least simple emboss-style bump-mapping in addition to the conventional T&L operations. This style of bump-mapping is useful when the surface geometry of an object is being animated. The vector geometry processing portion of the T&L hardware is enhanced to accommodate processing a transformation of object-space vertex surface binormals (i.e., the Tangent and Binormal vectors) to eye-space and the computation of a texture coordinate displacement based on light direction (light-to-vertex) vector dot products with the transformed binormals.
In accordance with another aspect of the present invention, an enhanced vertex attribute description API function provides three vertex surface normals (N, B and T) to the T&L vector geometry processing hardware along with vertex position and light source position. The geometry processing hardware then transforms the surface normals to eye-space, computes the light vector in eye-space and uses the vector components to compute the appropriate texture coordinate displacements for use in producing an emboss-style bump mapped texture effect.
FIG. 6 is a flow chart illustrating example steps for implementing emboss-style bump mapping;
FIG. 7 is an example logic flow diagram of vector processing and bump mapping hardware provided in the Transform unit for implementing emboss-style bump mapping;
FIG. 8 is a block diagram showing a detailed example of the dot-product computation units and light direction computation hardware provided in the Transform unit for implementing emboss-style bump mapping; and
FIGS. 9 and 10 show example alternative compatible implementations.
To play an application such as a game, the user selects an appropriate storage medium 62 storing the video game or other application he or she wants to play, and inserts that storage medium into a slot 50 64 50 in main unit 54. Storage medium 62 may, for example, be a specially encoded and/or encrypted optical and/or magnetic disk. The user may operate a power switch 66 to turn on main unit 54 and cause the main unit to begin running the video game or other application based on the software stored in the storage medium 62. The user may operate controllers 52 to provide inputs to main unit 54. For example, operating a control 60 may cause the game or other application to start. Moving other controls 60 can cause animated characters to move in different directions or change the user's point of view in a 3D world. Depending upon the particular software stored within the storage medium 62, the various controls 60 on the controller 52 can perform different functions at different times.
a main processor (CPU) 110, a main memory 112, and a graphics and audio processor 114. In this example, main processor 110 (e.g., an enhanced IBM Power PC 750) receives inputs from handheld controllers 108 (and/or other input devices) via graphics and audio processor 114. Main processor 110 interactively responds to user inputs, and executes a video game or other program supplied, for example, by external storage media 62 via a mass storage access device 50 106 50 such as an optical disk drive. As one example, in the context of video game play, main processor 110 can perform collision detection and animation processing in addition to a variety of interactive and control functions.
a processor interface 150, a memory interface/controller 152, a 3D graphics processor 154, an audio digital signal processor (DSP) 156, an audio memory interface 158, an audio interface and mixer 160,
a peripheral controller 162, and a display controller 164. 3D graphics processor 154 performs graphics processing tasks. Audio digital signal processor 156 performs audio processing tasks. Display controller 164 accesses image information from main memory 112 and provides it to video encoder 120 for display on display device 56. Audio interface and mixer 160 interfaces with audio codec 122, and can also mix audio from different sources (e.g., streaming audio from mass storage access device 106, the output of audio DSP 156, and external audio input received via audio codec 122). Processor interface 150 provides a data and control interface between main processor 110 and graphics and audio processor 114.
FIG. 4 shows a more detailed view of an example 3D graphics processor 154. 3D graphics processor 154 includes, among other things, a command processor 200 and a 3D graphics pipeline 180. Main processor 110 communicates streams of data (e.g., graphics command streams and display lists) to command processor 200. Main processor 110 has a two-level cache 115 to minimize memory latency, and also has a write-gathering buffer 111 for un-cached data streams targeted for the graphics and audio processor 114. The write-gathering buffer 111 collects partial cache lines into full cache lines and sends the data out to the graphics and audio processor 114 one cache line at a time for maximum bus usage.
command streams from main memory 112 via an on-chip FIFO memory buffer 216 that receives and buffers the graphics commands for synchronization/flow control and load balancing, display lists 212 from main memory 112 via an on-chip call FIFO memory buffer 218, and vertex attributes from the command stream and/or from vertex arrays 214 in main memory 112 via a vertex cache 220. Command processor 200 performs command processing operations 200 a that convert attribute types to floating point format, and pass the resulting complete vertex polygon data to graphics pipeline 180 for rendering/rasterization. A programmable memory arbitration circuitry 130 (see FIG. 4) arbitrates access to shared main, memory 112 between graphics pipeline 180, command processor 200 and display controller/video interface unit 164.
a transform unit 300, a setup/rasterizer 400, a texture unit 500, a texture environment unit 600, and a pixel engine 700. Transform unit 300 performs a variety of 2D and 3D transform and other operations 300 a (see FIG. 5). Transform unit 300 may include one or more matrix memories 300 b for storing matrices used in transformation processing 300 a. Transform unit 300 transforms incoming geometry per vertex from object space to screen space; and transforms incoming texture coordinates and computes projective texture coordinates (300 c). Transform unit 300 may also perform polygon clipping/culling (300 d). Lighting processing 300 e also performed by transform unit 300 b provides per vertex lighting computations for up to eight independent lights in one example embodiment. As discussed herein in greater detail, Transform unit 300 also performs texture coordinate generation (300 c) for emboss-style bump mapping effects.
retrieving textures 504 from main memory 112, texture processing (500 a) including, for example, multi-texture handling, post-cache texture decompression, texture filtering, embossing, shadows and lighting through the use of projective textures, and BLIT with alpha transparency and depth, bump map processing for computing texture coordinate displacements for bump mapping, pseudo texture and texture tiling effects (500 b), and indirect texture processing (500 c). Texture unit 500 performs texture processing using both regular (non-indirect) and indirect texture lookup operations. A more detailed description of the example graphics pipeline circuitry and procedures for performing regular and indirect texture look-up operations is disclosed in commonly assigned co-pending patent application, Ser. No. 09/722,382, entitled “Method And Apparatus For Direct And Indirect Texture Processing In A Graphics System” and its corresponding provisional application, Ser. No. 60/226,891, filed Aug. 23, 2000, both of which are incorporated herein by reference.
Texture unit 500 outputs filtered texture values to the Texture Environment Unit 600 for texture environment processing (600 a). Texture environment unit 600 blends polygon and texture color/alpha/depth, and can also perform texture fog processing (600 b) to achieve inverse range based fog effects. Texture environment unit 600 can provide multiple stages to perform a variety of other interesting environment-related functions based for example on color/alpha modulation, embossing, detail texturing, texture swapping, clamping, and depth blending. Texture environment unit 600 can also combine (e.g., subtract) textures in hardware in one pass. For more details concerning the texture environment unit 600, see commonly assigned application Ser. No. 09/722,367 entitled “Recirculating Shade Tree Blender for a Graphics System” and its corresponding provisional application, Ser. No. 60/226,888, filed Aug. 23, 2000, both of which are incorporated herein by reference.
Example Emboss-Style Bump Mapping Texture Coordinate Generation
FIG. 6 is a flowchart showing an example set of basic processing steps used to perform emboss bump-mapping in the system described above. In the example embodiment, most of the FIG. 6 steps are performed by Transform Unit 300 based on per-vertex Tangent and Binormal vector data supplied by Command Processor 200. Command Processor 200 may obtain such per-vertex values from main processor 110 and/or from main memory 112.
Briefly, the graphics pipeline renders and prepares images for display at least in part in response to polygon vertex attribute data and texel color data stored as a texture image in an associated memory. The graphics rendering pipeline is provided with vertex transformation and lighting (T&L) hardware that is capable of performing simple bump-mapping operations in addition to the more conventional T&L operations. Pipelined hardware efficiently generates texture coordinate displacements for implementing emboss-style bump-mapping effects utilizing object-space (model-space) surface normals supplied per vertex, for example, by a graphics application running on the main CPU of the graphics system. An enhanced vertex attribute description command function facilitates the communication and processing of plural surface normals per-vertex in addition to other vertex attributes such as vertex position, light source position and texture coordinates. The enhanced vertex attribute function specifies Normal, Tangent and Binormal surface vectors (N, T & B) provided by the host CPU in object space coordinates and uses separate memory indexes per vertex for each of the three surface vectors so as to effectively compress the amount of data needed for bump mapping. A vector geometry processing portion of the T&L hardware is also enhanced by providing two distinct dot-product computation units to transform the Tangent and Binormal surface vectors to eye-space using a scaled model view matrix, compute a light direction vector in eye-space and perform parallel dot-product computations between the computed light direction vector and the transformed Tangent and Binormal vectors to efficiently generate the appropriate texture coordinate displacements for use in creating an embossed texture effect.
In one example embodiment, system 50 first stores a texture image in texture memory 502 (see FIG. 4) for use with the bump mapping operation (block 800). Command Processor 200 then provides object-space basis Tangent and Binormal vector data to transform Transform Unit 300 using vertex attribute functions defined in an appropriate graphics API (block 802). The Transform Unit 300 transforms the Tangent and Binormal vector data to eye space (block 804). Transform Unit 300 also computes a light direction (light-to-vertex) vector and a normalized light direction vector (block 806). Transform Unit 300 then computes texture coordinate displacements and new texture coordinate values per vertex (blocks 808, 810). Texture Environment (TEV) unit 600 develops an embossed texture from the original texture stored in texture memory 502 minus the offset texture defined by the displacements (block 812). In other words, the original texture is looked-up using both non-displaced coordinates (s, t) and displaced coordinates (s+Δs, t+Δt) and the texture values are subtracted per-pixel. The result is combined with per-vertex local diffuse lighting in graphics pipeline 180 and the resulting embossed image is rendered for display on display 56 (block 814). The embossed image results may also be combined with other textures.
In more detail, bump mapping described above generates at least: (1) texture coordinate displacements (Δs, Δt) based on incoming texture coordinates (block 808), (2) a normalized light direction (block 806) and (3) a per-vertex coordinate basis function (block 802). The preferred basis function used is an orthogonal object-space coordinate basis. The three orthogonal axes of this coordinate basis are defined by the surface Normal vector, a surface “Tangent” vector and a second mutually perpendicular surface tangent “Binormal” vector with the Tangent (T) and Binormal (B) vectors oriented in directions corresponding to the texture gradient in s and the texture gradient in t (i.e., increasing s or t). The two orthogonal surface tangent vectors, T and B, are also called “binormals”. Block 802 provides these values. An object-space coordinate light vector projected onto this coordinate basis (block 806) is then used to compute texture coordinate displacements for bump-mapping. More specifically, the projection of the light direction vector onto each of the two binormals, T and B, gives the amount of texture space displacement the light causes. Basically, the light on the texture (i. e., the light direction vector) is decomposed into its surface normal component and its (s, t) coordinate components corresponding to the respective texture gradients. These (s, t) coordinate components of the light direction vector are the (Δs, Δt) texture coordinate displacements (block 808) used for bump mapping.
To perform the above operations properly for efficient rendering, object oriented Tangent and Binormal vectors at each vertex, which map in object space to the texture s and t axis, are preferably first converted to eye-space. Consequently, in the example implementation of the present invention, Command Processor 200 supplies these two binormals per-vertex to Transform Unit 300 (block 804). The Transform Unit will then transform the binormals to eye-space (block 804). (For the present example embodiment, even where the supplied binormals are constant, for example, with flat surfaces, Command Processor 200 supplies the binormals to Transform Unit 300 on a per-vertex basis.) Mathematically, the following operations are performed by Transform Unit 300 are:
ModuleViewNormalMatrix
ModelViewNormalMatrix
where Tv=(Txv, Tyv, Tzv) and Bv=(Bxv, Byv, Bzv) are the per-vertex binormals supplied to Transform Unit 300 by Command Processor 200. The Tv vector should preferably be normalized and aligned with the s texture axis in object-space and the Bv vector should preferably be normalized and aligned with the t texture axis in object space. The Model View transformation matrix should be purely rotational, which would maintain the unit length of the binormals. However, if scaling of the binormals is required, then the Model View transformation matrix can be multiplied by a scalar. The scale applied would then be the new unit length of the binormals. This could be used to visually increase the bump mapping effect without changing the source data or the algorithm.
Given the binormal basis system, the light rotation matrix used by Transform Unit 300 (block 806) is as follows:
where (Tx, Ty, Tz) is the transformed binormal oriented along the s axis, in the direction of increasing s, while (Bx, By, Bz) is the transformed binormal oriented along the t axis, in the direction of increasing t.
The light vector is computed (block 50 80650 ) by normalizing the difference between the light position (in eye-space) and the current, transformed, vertex in eye space as follows:
The texture coordinate displacement (Δs, Δt) is then computed per-vertex (block 808) as follows:
[ Δ s Δ t ] = [ Tx Ty Tz Bx By Bz ] � [ Lx Ly Lz ] Note that this preferred example algorithm does not use the Normal input vector to compute displacements. Only the Binormal and Tangent vectors are required. Other implementations specify a 3�3 matrix multiply including the eye-space Normal as an extra row.
The computed per-vertex delta offsets, (Δs, Δt), are then added to the post-transform (i.e., after transform to eye-space) texture coordinate generated per-vertex (block 810) to obtain new texture coordinates S1 and T1:
Example Emboss Bump-Mapping Texture Coordinate Generation Hardware Implementation
To efficiently implement the above computation for emboss-style bump-mapping, Transform Unit 300 includes hardwired computational logic circuitry to perform at least the following emboss bump-mapping related vector and coordinate computations:
Compute T eye =MV�T
Compute B eye =MV�B
Compute L=V eye −L pos
Compute L2
Compute Teye�L
Compute Beye�L
Compute 1/∥L∥=1/sqrt(L 2)
Compute Δs=T�L/∥L∥
Compute Δt=B�L/∥L∥
Compute (S1, T1)=(S0+Δs, T0+Δt)
where T and B are the respective object-space Tangent and Binormal vectors; MV is a transformation matrix having element values for converting vectors to eye-space; Lpos is the light position vector; Veye is the vertex position vector; L is the light-to-vertex vector; ∥L∥ is the normalized light direction vector; (S0, T0) are the regular transformed texture coordinates, (Δs, Δt), are the generated texture coordinate displacement values; and (S1, T1) are the new texture coordinates from which an “offset” texture used in emboss bump-mapping is obtained.
FIG. 7 is a block diagram illustrating the logical flow of functional operations performed by hardware provided in transform unit 300 for efficiently generating the texture coordinate displacements, (Δs, Δt), needed for implementing emboss-style bump mapping. The graphics application running on main processor 110 computes and supplies object-space binormals T and B to transform unit 300 via command processor 200. An enhanced vertex attribute description function of the API (application programming interface) is used which allows specifying Normal, Tangent and Binormal vector data via separate memory indexes per-vertex. Command processor 200 provides this vector data to transform unit 300. In addition to permitting at least three surface normals, the enhanced vertex attribute function allows the programmer to use separate per-vertex memory indexes for each of the three surface normals so as to effectively compress the amount of data needed to be explicitly specified for bump-mapping. Δs mentioned above, the supplied Tangent and Binormal vectors must map, at each vertex, to the texture s and t axis, in object space. Vector dot-product multiplication circuitry in Transform Unit 300 will then transform these vectors to eye-space, as illustrated by FIGS. 7 and 8.
Referring again to FIG. 7, block 300 f outlines specific vector dot-product processing hardware which may also be employed by Transform Unit 300 in performing computations other than that related to emboss-style bump-mapping. While block 300 g outlines Transform Unit hardware more specifically useful in emboss bump-mapping computations, block 300 g hardware may also be useful in performing other functions. For emboss-style bump-mapping, a first dot-product computation unit, 301, computes the eye-space transformation of the Tangent and Binormal vectors. The transformed results are temporarily stored in multiplexing/staging buffer 302. A light-to-vertex vector computation 304 is performed on vertex position vector data, Veye, and light position vector data Lpos, to provide light direction vector data, L. A second dot-product computation unit 303 is utilized to compute, in parallel, the following:
vector dot-products between light direction vector L and each Binormal vector T and B; and an L2 vector product from light direction vector L. The L2 vector product is subsequently provided to inverse square-root computation unit 305 for computing an inverse magnitude value of the light direction vector. The Binormal and Tangent vector lighting dot-products T�L and B�L from dot unit 303 are provided to floating multiplier 306 along with the computed inverse magnitude value of the light direction vector from unit 305. Floating point multiplier 306 then computes the texture coordinate displacements ΔS and ΔT which are passed to floating point adder 308. Transformed texture coordinates S0 and T0 are provided per vertex to delay FIFO 307 and are passed in a timely fashion to floating point adder 308 for combination with computed coordinate displacements ΔS and ΔT. The new texture coordinates generated, S1 and T1, are then passed to a vertex buffer unit (not shown) within transform unit 300 and subsequently passed via graphics pipeline 180 to texture unit 500 for texture lookup. In the preferred embodiment, the texture combining unit used is capable of performing texture subtraction in one pass instead of multiple passes. The preferred texture combining operation does not use an accumulation buffer, but instead does texture combining in texture hardware.
FIG. 8 shows a more detailed diagram of dot-product computation units 301 and 303 and light direction computation hardware within transform unit 300 for performing the emboss bump mapping functions of FIG. 7. A preferred embodiment utilizes digital logic hardware capable of processing at least twenty-bit floating point numerical values. As illustrated in FIG. 8, vector dot unit 301 includes floating point multipliers 310, 311 and 312 coupled to floating adders 313 and 314. The two surface binormals B and T are provided to floating point multipliers 310, 311 and 312 from vertex cash RAM 220 (FIG. 5). Input FIFO 315 receives transformation matrix data for converting the Tangent and Binormal vectors to eye-space from matrix memory 300 b and provides the matrix element values to floating point multipliers 310, 311 and 312. Floating point adder 304 performs the light-to-vertex vector computation for determining light direction vector L from transformed eye-space vertex position data and input light position/direction vector data.
Vector dot unit 303 includes floating multipliers 317, 318 and 319 and floating point adders 320 and 321 for computing vector dot products of the light direction vector and the Tangent and Binormal eye space vector components. Dot unit 303 may also include multiplexor 302 for receiving and staging light direction vector and transformed eye-space Tangent and Binormal vector data from floating point adder 304 and dot unit 301. Floating point multipliers 317 through 319 are used in combination with floating point adders 320 and 321 to provide a light direction vector squared product, L2, a Tangent lighting vector dot-product (T�L) and a Binormal lighting dot product (B�L) at the output of floating point adder 321. A table illustrating an example schedule of computational events for accomplishing emboss-style bump-mapping occurring per pipeline data clocking cycle/stage within Transform Unit 300 using dot unit 301 and dot unit 302 is provided immediately below:
Vector Dot Unit #1
VFp Adder
Vector Dot Unit #2
Txe = M0 � T
Tye = M1 � T
Tze = M2 � T
Bxe = M0 � B
Bye = M1 � B
Bze = M2 � B
Lx = Vex − Lpx
Ly = Vey − Lpy
Lz = Vez − Lpz
Out Txe 12
Out Tye 13
Out Tze 14
Ld Teye, L
Out Bxe Out T � L; Ld L
Out Bye Out L2 17
Out Bze 18
Ld Beye 19
Out B � L
During relative cycles/stages numbered 1 through 8, the Tangent and vectors are loaded into dot unit 301 and the transforms to eye space are During cycles 9 through 11, light direction vector components Lx, Ly, an Lz are computed by floating point adder 304 using eye space vertex on components and negative signed light position components. During cycles 11-13, the computed Tangent vector eye space components are loaded into multiplexing/staging buffer 302. During Cycle 14, the computed light direction vector, L, and the computed Tangent eye space vector, Teye=(Txe, Tye, Tze), are loading into the vector dot unit 303 for computing the T�L dot product. On cycle 15, the computed light direction vector, L, is again loaded into the vector dot unit 303 to compute the light direction vector squared product, L2. Finally, the binormal eye space vector, Beye=(Bxe, Bye, Bze), is loaded on cycle 18 to compute the B�L dot product. The hardware described above is fully pipelined and can compute the required values in a minimal number of distinct operations.
Example API Function Commands
In the preferred embodiment, an enhanced graphics API function is used to initiate texture coordinate generation within transform unit 300. In addition to conventional texture coordinate generation wherein current vertex attribute information is used to generate a texture coordinate, the preferred graphics API supports an enhanced texture generation function that is capable of calling and using other texture coordinate generation functions. An example enhanced API texture coordinate generation function may be defined as follows:
GXSetTexCoordGen
GXTexCoord
Dst_Coord;
// name of generated texture coordinates
GxtexGenType
// coordinate generation function type
GXTexGenSrc
Src_param;
// Source parameters for coord generation
MatIdx;
// Texture Matrix Index.
The above example API function defines general texture coordinate generation in addition to supporting other texture coordinate generation functions. The MatIdx is set as the default texture matrix index by which the generated texture coordinates are to be transformed. In the present example embodiment, to implement emboss-style bump-mapping, the above API function is used with Func set to GX_TG_BUMP*, where * is a number from 0-7 indicative of one of up to eight possible different lights (light source positions) which may be selected for embossing.
The following is an example C/C++ language implementation of the above general texture coordinate generation function:
void GXSetTexCoordGen(
GXTexCoordID dst_coord,
GXTexGenType func,
GXTexGenSrc src_param,
u32 mtx);
With “func” set to GX_TG_BUMP0-7, system 50 performs emboss-style bump mapping by perturbing input texture coordinates based on per-vertex specified binormals and light direction information. The original and offset texture coordinates are used to look up texels from a height-field bump map texture stored in memory 112. TEV unit 600 can be used to subtract these values in hardware in one pass to find the bump height, which value can be added to the final color of the pixel to provide emboss-style bump mapping. GX_BUMP0 indicates that light 0 will be used, GX_BUMP1 indicates that light 1 will be used, etc., in the bump map calculation.
The dst_coord for bump maps should be numbered sequentially, i.e. base texture coordinate=n, and bump offset texture coordinate=n+1. Bump map texture coordinates should be generated after coordinates generated from transforms (GX_TG_MTX2x4 and GX_TG_MTX3x4) and before coordinates generated from lighting channels (GX_TG_SRTG). An example follows:
// source for a bump mapped coordinate, transformed by a matrix GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX3);
// perturbed coordinate, offset from TEXCOORD0 above, light 0. Matrix (mtx) is not used for the perturbed coordinates (therefore use an identity matrix).
GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_BUMP0, GX_TG_TEXCOORD0, GX_IDENTITY).
FIG. 9 illustrates an example overall emulation process using a host platform 1201, an emulator component 1303, and a game software executable binary image provided on a storage medium 62. Host 1201 may be a general or special purpose digital computing device such as, for example, a personal computer, a video game console, or any other platform with sufficient computing power. Emulator 1303 may be software and/or hardware that runs on host platform 1201, and provides a real-time conversion of commands, data and other information from storage medium 62 into a form that can be processed by host 1201. For example, emulator 1303 fetches “source” binary-image program instructions intended for execution by system 50 from storage medium 62 and converts these program instructions to a target format that can be executed or otherwise processed by host 1201.
An emulator 1303 used to provide some or all of the features of the video game system described above may also be provided with a graphic user interface (GUI) that simplifies or automates the selection of various options and screen modes for games run using the emulator. In one example, such an emulator 1303 may further include enhanced functionality as compared with the host platform for which the software was originally intended. In the case. where particular graphics support hardware within an emulator does not include the embossed bump mapping functions shown in FIGS. 7 and 8, the emulator designer has a choice of either:
translating emboss-style bump mapping commands into other graphics, API commands the graphics support hardware understands, or implementing the bump mapping functions in software with a potential corresponding decrease in performance depending upon the speed of the processor, or “stubbing” (i.e., ignoring) the bump mapping commands to provide a rendered image that does not include embossed effects. While the FIG. 6 flowchart can be implemented entirely in software, entirely in hardware or by a combination of hardware and software, the preferred embodiment performs most of these calculations in hardware to obtain increased speed performance and other advantages. Nevertheless, in other implementations (e.g., where a very fast processor is available), the computations and steps of FIG. 6 may be implemented in software to provide similar or identical imaging results.
FIG. 10 illustrates an emulation host system 1201 suitable for use with emulator 1303. System 1201 includes a processing unit 1203 and a system memory 1205. A system bus 1207 couples various system components including system memory 1205 to processing unit 1203. System bus 1207 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. System memory 1207 includes read only memory (ROM) 1252 and random access memory (RAM) 1254. A basic input/output system (BIOS) 1256, containing the basic routines that help to transfer information between elements within personal computer system 1201, such as during start-up, is stored in the ROM 1252. System 1201 further includes various drives and associated computer-readable media. A hard disk drive 1209 reads from and writes to a (typically fixed) magnetic hard disk 1211. An additional (possible optional) magnetic disk drive 1213 reads from and writes to a removable “floppy” or other magnetic disk 1215. An optical disk drive 1217 reads from and, in some configurations, writes to a removable optical disk 1219 such as a CD ROM or other optical media. Hard disk drive 1209 and optical disk drive 1217 are connected to system bus 1207 by a hard disk drive interface 1221 and an optical drive interface 1225, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules, game programs and other data for personal computer system 1201. In other configurations, other types of computer-readable media that can store data that is accessible by a computer (e.g., magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs) and the like) may also be used.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4275413Jul 3, 1979Jun 23, 1981Takashi SakamotoLinear interpolator for color correctionUS4357624Mar 20, 1981Nov 2, 1982Combined Logic CompanyInteractive video production systemUS4388620Jan 5, 1981Jun 14, 1983Atari, Inc.Method and apparatus for generating elliptical images on a raster-type video displayUS4425559Jun 2, 1980Jan 10, 1984Atari, Inc.Method and apparatus for generating line segments and polygonal areas on a raster-type displayUS4463380Sep 25, 1981Jul 31, 1984Vought CorporationImage processing systemUS4491836Sep 13, 1982Jan 1, 1985Calma CompanyGraphics display system and method including two-dimensional cacheUS4570233Jul 1, 1982Feb 11, 1986The Singer CompanyModular digital image generatorUS4586038Dec 12, 1983Apr 29, 1986General Electric CompanyTrue-perspective texture/shading processorUS4600919Aug 3, 1982Jul 15, 1986New York Institute Of TechnologyThree dimensional animationUS4615013Aug 2, 1983Sep 30, 1986The Singer CompanyMethod and apparatus for texture generationUS4625289Jan 9, 1985Nov 25, 1986Evans & Sutherland Computer Corp.Computer graphics system of general surface rendering by exhaustive samplingUS4653012Aug 15, 1984Mar 24, 1987Marconi Avionics LimitedDisplay systemsUS4658247Jul 30, 1984Apr 14, 1987Cornell Research Foundation, Inc.Pipelined, line buffered real-time color graphics display systemUS4692880Nov 15, 1985Sep 8, 1987General Electric CompanyMemory efficient cell texturing for advanced video object generatorUS4695943Sep 27, 1984Sep 22, 1987Honeywell Information Systems Inc.Multiprocessor shared pipeline cache memory with split cycle and concurrent utilizationUS4710876Jun 5, 1985Dec 1, 1987General Electric CompanySystem and method for the display of surface structures contained within the interior region of a solid bodyUS4725831Apr 27, 1984Feb 16, 1988Xtar CorporationHigh-speed video graphics system and method for generating solid polygons on a raster displayUS4768148Jun 27, 1986Aug 30, 1988Honeywell Bull Inc.Read in process memory apparatusUS4785395Jun 27, 1986Nov 15, 1988Honeywell Bull Inc.Multiprocessor coherent cache system including two level shared cache with separately allocated processor storage locations and inter-level duplicate entry replacementUS4790025Sep 26, 1985Dec 6, 1988Dainippon Screen Mfg. Co., Ltd.Processing method of image data and system thereforUS4808988Apr 13, 1984Feb 28, 1989Megatek CorporationDigital vector generator for a graphic display systemUS4812988Aug 29, 1986Mar 14, 1989U.S. Philips CorporationProcessor for the elimination of concealed faces for the synthesis of images in three dimensionsUS4817175May 4, 1987Mar 28, 1989Schlumberger Systems And Services, Inc.Video stream processing systemUS4829295Mar 25, 1987May 9, 1989Namco Ltd.Image synthesizerUS4829452Jul 5, 1984May 9, 1989Xerox CorporationSmall angle image rotation using block transfersUS4833601May 28, 1987May 23, 1989Bull Hn Information Systems Inc.Cache resiliency in processing a variety of address faultsUS4855934Oct 3, 1986Aug 8, 1989Evans & Sutherland Computer CorporationSystem for texturing computer graphics imagesUS4862392Mar 7, 1986Aug 29, 1989Star Technologies, Inc.Geometry processor for graphics display systemUS4866637Oct 30, 1987Sep 12, 1989International Business Machines CorporationPipelined lighting model processing system for a graphics workstation's shading functionUS4888712Nov 4, 1987Dec 19, 1989Schlumberger Systems, Inc.Guardband clipping method and apparatus for 3-D graphics display systemUS4897806Jun 19, 1985Jan 30, 1990PixarPseudo-random point sampling techniques in computer graphicsUS4901064Nov 4, 1987Feb 13, 1990Schlumberger Technologies, Inc.Normal vector shading for 3-D graphics display systemUS4907174Jun 2, 1988Mar 6, 1990Sun Microsystems, Inc.Z-buffer allocated for window identificationUS4914729Feb 18, 1987Apr 3, 1990Nippon Gakki Seizo Kabushiki KaishaMethod of filling polygonal region in video display systemUS4918625Jul 18, 1989Apr 17, 1990Cae-Link CorporationMethod and apparatus for processing translucent objectsUS4935879Aug 5, 1988Jun 19, 1990Daikin Industries, Ltd.Texture mapping apparatus and methodUS4945500Nov 20, 1989Jul 31, 1990Schlumberger Technologies, Inc.Triangle processor for 3-D graphics display systemUS4965751Aug 18, 1987Oct 23, 1990Hewlett-Packard CompanyGraphics system with programmable tile size and multiplexed pixel data and partial pixel addresses based on tile sizeUS4974176Dec 18, 1987Nov 27, 1990General Electric CompanyMicrotexture for close-in detailUS4974177Jun 14, 1989Nov 27, 1990Daikin Industries Ltd.Mapping circuit of a CRT display deviceUS4975977Nov 28, 1989Dec 4, 1990Hitachi, Ltd.Rotation processing method of image and system thereforUS4989138May 14, 1990Jan 29, 1991Tektronix, Inc.Single bus graphics data processing pipeline with decentralized bus arbitrationUS5003496Aug 26, 1988Mar 26, 1991Eastman Kodak CompanyPage memory control in a raster image processorUS5016183Sep 13, 1988May 14, 1991Computer Design, Inc.Textile design system and methodUS5018076Sep 16, 1988May 21, 1991Chips And Technologies, Inc.Method and circuitry for dual panel displaysUS5043922Sep 7, 1989Aug 27, 1991International Business Machines CorporationGraphics system shadow generation using a depth bufferUS5056044Aug 8, 1990Oct 8, 1991Hewlett-Packard CompanyGraphics frame buffer with programmable tile sizeUS5062057Dec 9, 1988Oct 29, 1991E-Machines IncorporatedComputer display controller with reconfigurable frame buffer memoryUS5086495Dec 16, 1988Feb 4, 1992International Business Machines CorporationSolid modelling system with logic to discard redundant primitivesUS5091967Apr 10, 1989Feb 25, 1992Dainippon Screen Mfg. Co., Ltd.Method of extracting contour of a subject image from an originalUS5097427Mar 26, 1991Mar 17, 1992Hewlett-Packard CompanyTexture mapping for computer graphics display controller systemUS5136664Feb 23, 1988Aug 4, 1992Bersack Bret BPixel renderingUS5144291Nov 2, 1987Sep 1, 1992Matsushita Electric Industrial Co., Ltd.Means for eliminating hidden surfaceUS5163126May 10, 1990Nov 10, 1992International Business Machines CorporationMethod for adaptively providing near phong grade shading for patterns in a graphics display systemUS5170468Aug 18, 1987Dec 8, 1992Hewlett-Packard CompanyGraphics system with shadow ram update to the color mapUS5179638Apr 26, 1990Jan 12, 1993Honeywell Inc.Method and apparatus for generating a texture mapped perspective viewUS5204944Jul 28, 1989Apr 20, 1993The Trustees Of Columbia University In The City Of New YorkSeparable image warping methods and systems using spatial lookup tablesUS5224208Mar 16, 1990Jun 29, 1993Hewlett-Packard CompanyGradient calculation for texture mappingUS5239624Apr 17, 1991Aug 24, 1993PixarPseudo-random point sampling techniques in computer graphicsUS5241658Aug 21, 1990Aug 31, 1993Apple Computer, Inc.Apparatus for storing information in and deriving information from a frame bufferUS5255353Apr 20, 1992Oct 19, 1993Ricoh Company, Ltd.Three-dimensional shadow processor for an image forming apparatusUS5268995Nov 21, 1990Dec 7, 1993Motorola, Inc.Method for executing graphics Z-compare and pixel merge instructions in a data processorUS5268996Dec 20, 1990Dec 7, 1993General Electric CompanyComputer image generation method for determination of total pixel illumination due to plural light sourcesUS5278948Aug 21, 1992Jan 11, 1994International Business Machines CorporationParametric surface evaluation method and apparatus for a computer graphics display systemUS5307450Sep 28, 1993Apr 26, 1994Silicon Graphics, Inc.Z-subdivision for improved texture mappingUS5315692Aug 18, 1992May 24, 1994Hughes Training, Inc.Multiple object pipeline display systemUS5345541Dec 20, 1991Sep 6, 1994Apple Computer, Inc.Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering deviceUS5353424Nov 19, 1991Oct 4, 1994Digital Equipment CorporationFast tag compare and bank select in set associative cacheUS5357579Jul 15, 1993Oct 18, 1994Martin Marietta CorporationMulti-layer atmospheric fading in real-time computer image generatorUS5361386Aug 17, 1993Nov 1, 1994Evans & Sutherland Computer Corp.System for polygon interpolation using instantaneous values in a variableUS5363475Dec 5, 1989Nov 8, 1994Rediffusion Simulation LimitedImage generator for generating perspective views from data defining a model having opaque and translucent featuresUS5377313Jan 29, 1992Dec 27, 1994International Business Machines CorporationComputer graphics display method and system with shadow generationUS5392385May 22, 1992Feb 21, 1995International Business Machines CorporationParallel rendering of smoothly shaped color triangles with anti-aliased edges for a three dimensional color displayUS5392393Jun 4, 1993Feb 21, 1995Sun Microsystems, Inc.Architecture for a high performance three dimensional graphics acceleratorUS5394516Jun 28, 1991Feb 28, 1995U.S. Philips CorporationGenerating an imageUS5402532Sep 30, 1994Mar 28, 1995International Business Machines CorporationDirect display of CSG expression by use of depth buffersUS5404445Oct 31, 1991Apr 4, 1995Toshiba America Information Systems, Inc.External interface for a high performance graphics adapter allowing for graphics compatibilityUS5408650Jun 29, 1993Apr 18, 1995Digital Equipment CorporationMemory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application programUS5412796Apr 22, 1991May 2, 1995Rediffusion Simulation LimitedMethod and apparatus for generating images simulating non-homogeneous fog effectsUS5415549Mar 21, 1991May 16, 1995Atari Games CorporationMethod for coloring a polygon on a video displayUS5416606Sep 23, 1994May 16, 1995Canon Kabushiki KaishaMethod and apparatus for encoding or decoding an image in accordance with image characteristicsUS5421028Mar 31, 1994May 30, 1995Hewlett-Packard CompanyProcessing commands and data in a common pipeline path in a high-speed computer graphics systemUS5422997Jul 9, 1993Jun 6, 1995Kabushiki Kaisha ToshibaTexture address generator, texture pattern generator, texture drawing device, and texture address generating methodUS5432895Oct 1, 1992Jul 11, 1995University Corporation For Atmospheric ResearchVirtual reality imaging systemUS5432900Jun 16, 1994Jul 11, 1995Intel CorporationIntegrated graphics and video computer display systemUS5438663Nov 12, 1993Aug 1, 1995Toshiba America Information SystemsExternal interface for a high performance graphics adapter allowing for graphics compatibilityUS5448689Apr 28, 1994Sep 5, 1995Hitachi, Ltd.Graphic data processing systemUS5457775Sep 15, 1993Oct 10, 1995International Business Machines CorporationHigh performance triangle interpolatorUS5461712Apr 18, 1994Oct 24, 1995International Business Machines CorporationQuadrant-based two-dimensional memory managerUS5467438May 24, 1993Nov 14, 1995Matsushita Electric Industrial Co., Ltd.Method and apparatus for compensating for color in color imagesUS5467459Aug 2, 1993Nov 14, 1995Board Of Regents Of The University Of WashingtonImaging and graphics processing systemUS5469535May 4, 1992Nov 21, 1995Midway Manufacturing CompanyThree-dimensional, texture mapping display systemUS5473736Apr 26, 1993Dec 5, 1995Chroma GraphicsMethod and apparatus for ordering and remapping colors in images of real two- and three-dimensional objectsUS5475803Jul 10, 1992Dec 12, 1995Lsi Logic CorporationMethod for 2-D affine transformation of imagesUS5487146Mar 8, 1994Jan 23, 1996Texas Instruments IncorporatedPlural memory access address generation employing guide table entries forming linked listUS5490240Jul 9, 1993Feb 6, 1996Silicon Graphics, Inc.System and method of generating interactive computer graphic images incorporating three dimensional texturesUS5495563Jan 15, 1991Feb 27, 1996U.S. Philips CorporationApparatus for converting pyramidal texture coordinates into corresponding physical texture memory addressesUS5504499Jun 29, 1993Apr 2, 1996Hitachi, Ltd.Computer aided color designUS5504917Jan 14, 1994Apr 2, 1996National Instruments CorporationMethod and apparatus for providing picture generation and control features in a graphical data flow environmentUS6163319 *Mar 9, 1999Dec 19, 2000Silicon Graphics, Inc.Method, system, and computer program product for shadingUS6392655 *May 7, 1999May 21, 2002Microsoft CorporationFine grain multi-pass for multiple texture renderingUS6452600 *Nov 28, 2000Sep 17, 2002Nintendo Co., Ltd.Graphics system interfaceUS6618048 *Nov 28, 2000Sep 9, 2003Nintendo Co., Ltd.3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z componentsUS6639595 *Nov 28, 2000Oct 28, 2003Nintendo Co., Ltd.Achromatic lighting in a graphics system and methodUS6717576 *Aug 20, 1999Apr 6, 2004Apple Computer, Inc.Deferred shading graphics pipeline processor having advanced featuresUS6771264 *Dec 17, 1998Aug 3, 2004Apple Computer, Inc.Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor* Cited by examinerNon-Patent CitationsReference1"5.13.1 How to Project a Texture," from web site: www.sgi.com, 2 pages.2"ATI Radeon Skinning and Tweening," from ATI.com web site, 1 page (2000).3"Cartoon Shading, Using Shading Mapping," 1 page, http://www.goat.com/alias/shaders.thm#toonshad.4"Developer Relations, ATI Summer 2000 Developer Newsletter," from ATI.com web site, 5 pages (Summer 2000).5"Developer's Lair, Multitexturing with the ATI Rage Pro," (7 pages0 from ati.com web site (2000).6"Hardware Technology," from ATI.com web site, 8 pages (2000).7"HOWTO: Animate Textures in Direct3D Immediate Mode," printed from web site support.microsoft.com, 3 pages (last reviewed Dec. 15, 2000).8"OpenGL Projected Textures," from web site:HTTP:// reality.sgi.com, 5 pages.9"Renderman Artist Tools, PhotoRealistic RenderMan Tutorial," Pixar (Jan. 1996).10"Skeletal Animation and Skinning," fron ATI.com web site, 2 pages (Summer 2000).1110.2 Alpha Blending, http://www.sgi.com/software/opengl/advaned98/notes/node146.html.1210.3 Sorting, http://www.sgi.com/software/opengl/advanced98/notes/node147.html.1310.4 Using the Alpha Function, http://www.sgi.com/software/opengl/advanced98/notes/node148.html.14Akeley, Kurt, "Reality Engine Graphics", 1993, Silicon Graphics Computer Systems, pp.109-116.15Alpha (transparency) Effects, Future Technology Research Index, http://www.futuretech.vuurwerk.n1/alpha.html.16Arkin, Alan, email, subject: "Texture distortion problem," from web site: HTTP://reality.sgi.com (Jul. 1997).17Blythe, David, 5.6 Transparency Mapping and Trimming with Alpha, http://toolbox.sgi.com/TasteOfDT/d...penGL/advanced98./notes/nodes41.html, Jun. 11, 1998.18Cambridge Amino-Scene III, infor Sheet, Cambridge Animation Systems, 2 pages, http://www.cam-ani.co.uk/casweb/products/software/Scenelll.htm.19Computer Graphics World, Dec. 1997.20Datasheet, SGS-Thomson Microelectronic, nVIDIA(TM), RIVA 128(TM) 128-Bit 3D Multimedia Accelerator (Oct. 1997).21Debevec, Paul, et al., "Efficient View-Dependent Image-Based Rendering with Projective Texture-Mapping," University of California at Berkeley.22Decaudin, Philippe, "Cartoon-Looking Rendering of 3D Scenes," Syntim Project Inria, 6 pages , http://www-syntim.inria.fr/syntim/recherche/decaudin/cartoon-eng.html.23Digimation Inc., "The Incredible Comicshop," infor sheet, 2 pages, http://www.digimation.com/asp/product/asp?product<SUB>-</SUB>id=33.24Efficient Command/Data Interface Protocol For Grahics, IBM TDB, vol. 36, issue 9A, Sep. 1, 1993, pp. 307-312.25Elber, Gershon, "Line Art Illustrations of Parametric and Implicit Forms," IEEE Transactions on Visualization and Computer Graphics, vol. 4, No. 1, Jan.-Mar. 1998.26Feth, Bill, "Non-Photorealistic Rendering," wif3@cornell.edu, CS490-Bruce Land, 5 pages (Spring 1998).27Gibson, Simon, et al., "Interactive Rendering with Real-World Illumination," Rendering Techniques 2000; 11th Eurographics Workshop on Rendering, pp. 365-376 (Jun. 2000).28Hachigian, Jennifer, "Super Cel Shader 1.00 Tips and Tricks,"2 pages, wysiwyg://thePage.13/http://members.xoom.com/<SUB>-</SUB>XMCM.jarvia/3D/celshade.html.29Haeberli, Paul et al., "Texture Mapping as a Fundamental Drawing Primitive," Proceedings of the Fourth Eurographics Workshop on Rendering, 11 pages, Paris, France (Jun. 1993).30Hart, Evan et al., "Grahpics by rage," Game Developers Conference 2000, from ATI.com web site (2000).31Hart, Evan et al., "Vertex Shading with Direct3D and OpenGL," Game Developers Conference 2001, from ATI.com web site (2001).32Heidrich et al., "Applications of Pixel Textures in Visualization and Realistic Image Synthesis," Proceedings 1999 Symposium On Interactive 3D Graphics, pp. 127-134 (Apr. 19990.33Hook, Brian, "An Incomplete Guide to Programming DirectDraw and Direct3D Immediate Mode (Release 0.46)," printed from web site: www.wksoftware.com, 42 pages.34Hoppe, Hugues, "Optimization of Mesh Locality for Transparent Vertex Caching," Proceedings of Siggraph, pp. 269-276 (Aug. 8-13, 1999).35Hourcade et al, "Algorithms for Antialised Cast Shadows", Computers and Graphics, vol. 9, No. 3, pp. 260-265 (19850.36INFO: Rendering a Triangle Using an Execute Buffer, printed from web site support.microsoft.com, 6 pages (last reviewed Oct. 20, 2000).37Markosian, Lee et al., "Real-Time Nonphotorealistic Rendering," Brown University site of the NSF Science and Technology Center for Computer Graphics and Scientific Visualization, Providence, RI, 5 pages (undated).38Michael McCool, "Shadow Volume Reconstruction from Depth Maps", ACM Transactions on Graphics, vol. 19, No. 1, Jan. 2000, pp. 1-26.39Mitchell et al., "Multitexturing in DirectX6", Game Developer, Sep. 1998, www.gdmag.com.40Moller, Tomas et al., "Real-Time Rendering," pp. 179-183 (AK Peter Ltd., 1999).41Mulligan, Vikram, Toon, info sheet, 2 pages, http://digitalcarversguild.com/products/toon/toon.thml.42NVIDIA.com, technical presentation, "Advanced Pixel Shader Details" (Nov. 10, 2000).43NVIDIA.com, technical presentation, "AGDC Per-Pixel Shading" (Nov. 15, 2000).44NVIDIA.com, technical presentation, Introduction to DX8 Pixel Shaders (Nov. 10, 2000).45Peter J. Kovach, Inside Direct 3D, "Alpha Testing," pp. 289-291 (19990.46Photograph of Nintendo 64 System.47Photograph of Sega Dreamcast System.48Photograph of Sony PlayStation II System.49Press Releases, "ATI's Radeon family of products delivers the most comprehensive support for the advance graphics features of DirectX 8.0," Canada, from ATI.com web site, 2 pages (Nov. 9, 20000.50Product Presentation, "RIVIA128(TM) Leadership 3D Accelaration," 2 pages.51Raskar, Ramesh et al., "Image Precision Silhouette Edges," Symposium on Interactive 3D Graphics 1999, Atlanta, 7 pages (Apr. 26-29, 1999).52Render Man Artist Tools, Using Arbitrary Output Variable in Photorealistic Renderman (With Applications(, PhotoRealistic Renderman Application Note #24, 8 pages, Jun. 1998, http://www.pixar.com/products/renderman/toolkit/Toolkit/AppNotes/appnote.24.html.53RenderMan Artist Tools, PhotoRealistic RenderMan 3.8 User's Manual, Pixar (Aug. 19980.54RenderMan Interface Version 3.2 (Jul. 2000).55Reynolds, Craig, "Stylized Depiction in Computer Graphics, Non-Photorealistic, Painterly and 'Toon Rendering," and annotated survey of online resources, 13 pages, last update May 30, 2000, http://www.red.com/cwr/painterly.html.56Schlechtweg, Stefan et al., "Emphasising in Line-drawings," Norsk samarbeid innen grafisk databehandling: NORSIGD Info, medlemsblad for NORSIGD, Nr 1/95, pp. 9-10.57Schlechtweg, Stefan et al., Rendering Line-Drawings with Limited Resources, Proceedings of GRAPHICON '96, 6th International Conferenceand Exhibition on Computer Graphics and Visualization in Russia, (St. Petersburg, Jul. 1-5, 1996) vol. 2, pp. 131-137.58Search Results for: skinning, from ATI.com web site, 5 pages (May 24, 2001).59Segal, Mark, et al., "Fast Shadows and Lighting Effects Using Texture Mapping," Computer Graphics, 26, 2, pp. 249-252 (Jul. 1992).60Shade, Jonathan et al., "Layered Depth Images," Computer Graphics Proceedings, Annual Conference Series, pp. 231-242 (1998).61Singh, Karan et al., "Skinning Characters using Surface-Oriented Free-Form Deformations," Toronto Canada.62Slide Presentation, S�bastien Domin�, "nVIDIA Mesh Skinning, OpenGI".63Softimage/3D Full Support, "Toon Assistant," 1998 Avid Technology, inc., 1 page, http://www.softimage.com/3dsupport/techn...uments/3.8/features3.8/rel<SUB>-</SUB>notes.56.html.64Technical Brief: What's New With Microsoft DirectX7, posted Nov. 10, 1999, www.nvidia.com.65Technical Brief; Transform and Lighting, Nov. 10, 1999, www.nvidia.com.66The RenderMan Interface Version 3.1, (Sep. 1989).67Thompson, Nigel, "Rendering with Immediate Mode," Microsoft Interactive Developer Column: Fun and Games, printed from web site msdn.microsoft.com, 8 pages (Mar. 97).68Thompson, Tom, "Must-See 3-D Engines," Byte Magazine, printed from web site www.byte.com, 10 pages (Jun. 1996).69Toony Shaders, "Dang I'm tired of photorealism," 4 pages, http://www.visi.com/~mcdonald/toony.html.70U.S. Appl. No. 09/337,293, filed Jun. 21, 1999, Multi-Format Vertex Data Processing Apparatus and Method [issued as U.S. Patent No. 6,501,479 B1 on Dec. 31, 2002].71Videum Conference Pro (PCI) Specification, product of Winnov (Winnov), published Jul. 21, 1999.72VIDI Presenter 3D Repository, "Shaders." 2 pages, http://www.webnation.com/vidirep/panels/renderman/shaders/toon.phtml.73web site information, CartoonReyes, http://www.zentertainment.com/zentropy/review/cartoonreyes.html.74Web site materials, "Renderman Artist Tools, PhotoRealistic RenderMan 3.8 User'r Manual," Pixar.75White paper, Dietrich, Sim, "Cartoon Rendering and Advanced Texture Features of the GeForce 256 Texture Matrix, Projective Textures, Cube Maps, Texture Coordinate Generation and DOTPRODUCT3 Texture Blending" (Dec. 16, 1999).76White paper, Huddy, Richard, "The Efficient Use of Vertex Buffers," (Nov. 1, 2000).77White paper, Kilgard, Mark J., "Improving Shadows and Reflections via the Stencil Buffer" (Nov. 3, 1999).78White paper, Rogers, Douglas H., "Optimizing Direct3D for the GeForce 256" (Jan. 3, 2000).79White paper, Spitzer, John, et al., "Using GL<SUB>-</SUB>NV<SUB>-</SUB>array<SUB>-</SUB>range and GL<SUB>-</SUB>NV<SUB>-</SUB>Fence on GEForce Products and Beyond" (Aug. 1, 2000).80Whitepaper: "Z Buffering, Interpolation and More W-Buffering", Doug Rogers, Jan. 31, 2000, www.nvidia.com.81Whitepaper: 3D Graphics Demystified, Nov. 11, 1999, www.nvidia.com.82Whitepaper: Anisotropic Texture Filtering in OpenGL, posted Jul. 17, 2000, www.nvidia.com.83Whitepaper: Color Key in D3D, posted Jan. 11, 2000, www.nvidia.com.84Whitepaper: Cube Environment Mapping, posted Jan. 14, 2000, www.nvidia.com.85Whitepaper: Dot Product Texture Blending, Dec. 3, 1999, www.nvidia.com.86Whitepaper: Implementing Fog in Direct3D, Jan. 3, 2000, www.nvidia.com.87Whitepaper: Mapping Texels to Pixels in D3D, posted Apr. 5, 2000, www.nvidia.com.88Whitepaper: Optimizing Direct3D for the GeForce 256, Jan. 3, 2000, www.nvidia.com.89Whitepaper: Using GL<SUB>-</SUB>NV<SUB>-</SUB>vertex<SUB>-</SUB>array and GL<SUB>-</SUB>NV<SUB>-</SUB>fence, posted Aug. 1, 2000, www.nvidia.com.90Whitepaper: Vertex Blending Under DX7 for the GeForce 256, Jan. 5, 2000, www.nvidia.com.91Whitepaper; Guard Band Clipping, posted Jan. 31, 2000, www.nvidia.com.92Whitepaper; Technical Brief: AGP 4X with Fast Writes, Nov. 10, 1999, www.nvidia.com.93Whitepapers: "Texture Addressing," Sim Dietrich, Jan. 6, 2000, www.nvidia.com.94Williams, Lance, "Casting Curved Shadows on Curved Surfaces," Computer Graphics (SIGGRAPH '78 Proceedings), vol. 12, No. 3, pp. 270-274 (Aug. 1978).95Winner, Stephanie, et al., "Hardware Acceleraed Rendering Of Antialiasing Using A Modified A-buffer Algorithm," Computer Graphics Proceedings, Annual Conference Series, 1997, pp. 307-316.96Woo et al., "A Survey of Shadow Algorithms," IEEE Computer Graphics and Applications, vol. 10, No. 6, pp.13-32 (Nov. 1990).97ZDNet Review, from PC Magazine, "Screen Shot of Alpha-channel Transparency," Jan. 15, 1999, wysiwyg://16/http://www4.zdnet.com...ies/reviews/0,4161,2188286,00.html.98ZDNet Reviews, from PC Magazine, "Othe Enhancements," Jan. 15, 1999, wysiwyg://16/http://wwzdnet.com...ies/reviews/0,4161,2188286,00.html.99Zeleznik, Robert et al."SKETCH: An Interface for Sketching 3D Scenes," Computer Graphics Proceedings, Annual Conference Series 1996, pp. 163-170.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS8134551Feb 29, 2008Mar 13, 2012Autodesk, Inc.Frontend for universal rendering frameworkUS8212806Apr 8, 2008Jul 3, 2012Autodesk, Inc.File format extensibility for universal rendering frameworkUS8479150 *Aug 13, 2009Jul 2, 2013Accenture Global Services LimitedCompositional modeling of integrated systems using event-based legacy applicationsUS8560957Oct 13, 2008Oct 15, 2013Autodesk, Inc.Data-driven interface for managing materialsUS8584084Nov 12, 2008Nov 12, 2013Autodesk, Inc.System for library content creationUS8601398Oct 13, 2008Dec 3, 2013Autodesk, Inc.Data-driven interface for managing materialsUS8620635Jun 27, 2008Dec 31, 2013Microsoft CorporationComposition of analytics modelsUS8667404Aug 6, 2008Mar 4, 2014Autodesk, Inc.Predictive material editorUS8692826Jun 19, 2009Apr 8, 2014Brian C. BeckmanSolver-based visualization frameworkUS8788574Jun 19, 2009Jul 22, 2014Microsoft CorporationData-driven visualization of pseudo-infinite scenesUS8866818Jun 19, 2009Oct 21, 2014Microsoft CorporationComposing shapes and data series in geometriesUS8970584Jun 24, 2011Mar 3, 2015Nvidia CorporationBounding box-based techniques for improved sample test efficiency in image renderingUS9142043Jun 24, 2011Sep 22, 2015Nvidia CorporationSystem and method for improved sample test efficiency in image renderingUS9147270Jun 24, 2011Sep 29, 2015Nvidia CorporationBounding plane-based techniques for improved sample test efficiency in image renderingUS9153068Jun 24, 2011Oct 6, 2015Nvidia CorporationClipless time and lens bounds for improved sample test efficiency in image renderingUS9159158Jul 19, 2012Oct 13, 2015Nvidia CorporationSurface classification for point-based rendering within graphics display systemUS9171394Jul 19, 2012Oct 27, 2015Nvidia CorporationLight transport consistent scene simplification within graphics display systemUS20090219284 *Feb 29, 2008Sep 3, 2009Jerome MaillotFrontend for universal rendering frameworkUS20090222469 *Feb 29, 2008Sep 3, 2009Jerome MaillotMethod for creating graphical materials for universal rendering frameworkUS20090251478 *Apr 8, 2008Oct 8, 2009Jerome MaillotFile Format Extensibility For Universal Rendering FrameworkUS20100037205 *Feb 11, 2010Jerome MaillotPredictive Material EditorUS20100095230 *Oct 13, 2008Apr 15, 2010Jerome MaillotData-driven interface for managing materialsUS20100095247 *Oct 13, 2008Apr 15, 2010Jerome MaillotData-driven interface for managing materialsUS20100103171 *Oct 27, 2008Apr 29, 2010Jerome MaillotMaterial Data Processing PipelineUS20100122243 *Nov 12, 2008May 13, 2010Pierre-Felix BretonSystem For Library Content CreationUS20100321391 *Jun 19, 2009Dec 23, 2010Microsoft CorporationComposing shapes and data series in geometriesUS20100325564 *Jun 19, 2009Dec 23, 2010Microsoft CorporationCharts in virtual environmentsUS20100325578 *Jun 19, 2009Dec 23, 2010Microsoft CorporationPresaging and surfacing interactivity within data visualizationsUS20110041117 *Aug 13, 2009Feb 17, 2011Accenture Global Services GmbhCompositional modeling of integrated systems using event-based legacy applications* Cited by examinerClassifications U.S. Classification345/584, 345/582, 345/427, 345/419International ClassificationG06T15/04, G06T3/00, G06T1/20, G09G5/00Cooperative ClassificationG06T15/04European ClassificationG06T15/04Legal EventsDateCodeEventDescriptionMay 23, 2011FPAYFee paymentYear of fee payment: 4May 27, 2015FPAYFee paymentYear of fee payment: 8RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services