Computer graphics processing and selective visual display system – Computer graphics processing – Graph generating
Reexamination Certificate
1998-03-26
2001-05-15
Vo, Cliff N. (Department: 2671)
Computer graphics processing and selective visual display system
Computer graphics processing
Graph generating
Reexamination Certificate
active
06232981
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is related to computer graphics hardware for which OPENGL (GRAPHICS LIBRARY) software is an interface thereto, and, in particular, to improving by diagonal level-of-detail calculations texture locality for pixel quads stored in a texture cache of the computer graphics hardware.
2. Description of the Related Art
Interactive graphics display, in general, is explained in
Computer Graphics: Principles and Practices,
Foley, vanDam, Feiner, and Hughes, Addison-Wesley, 1992, and in
Principles of Interactive Computer Graphics,
William M. Newman and Robert F. Sproull, Second Edition, McGraw-Hill Book Company, New York, 1979. Interactive graphics display generally includes a frame buffer storing pixels (or picture elements), a display, and a display controller that transmits the contents of the frame buffer to the display.
The OpenGL graphics system is a software interface to graphics hardware, and is explained in the
OpenGL Programming Guide, The Official Guide to Learning OpenGL, Second Edition, Release
1.1, by the OpenGL Architecture Review Board, Jackie Neider, Tom Davis, Mason Woo, Addison-Wesley Developers Press, Reading, Mass., 1997, in the
OpenGL Programming Guide, The Official Guide to Learning OpenGL, Release
1, by the OpenGL Architecture Review Board, Jackie Neider, Tom Davis, Mason Woo, Addison-Wesley Publishing Company, Reading, Mass., 1993, and in the
OpenGL Reference Manual, The Official Reference Document for OpenGL, Release
1, the OpenGl Architecture Review Board, Addison-Wesley Publishing Company, Reading, Mass., 1993.
A computer model for interpretation of OpenGL commands is a client-server model. An application program being executed by one computer, typically the client computer, issues commands, which are interpreted and processed by another computer, typically the server computer, on which OpenGL is implemented. The client may or may not operate on the same computer as the server. A computer, then, can make calls through an OpenGL software interface to graphics hardware, and the graphics hardware can reside either on the same computer making the calls or on a remote computer.
A tool for describing how data is processed in OpenGL is a processing pipeline. The OpenGL processing pipeline
10
shown in
FIG. 1
receives commands, and may store the commands for future processing in a display list
14
or execute the commands immediately. The OpenGL processing pipeline includes an evaluator
16
, which approximates curve and surface geometry by evaluating polynomial commands of the input values; per-vertex operations and primitive assembly
18
, in which geometric primitives such as points, line segments, and polygons, described by vertices, are processed, such as transforming and lighting the vertices, and clipping the primitives into a viewing volume; rasterization
20
produces a series of frame buffer addresses and associated values, and converts a projected point, line, or polygon, or the pixels of a bitmap or image, to fragments, each corresponding to a pixel in the framebuffer; per-fragment operations
22
performs operations such as conditional updates to the frame buffer
24
based on incoming and previously stored depth values (to effect depth buffering) and blending of incoming pixel colors with stored colors, masking, and other logical operations on pixel values. The final pixel values are then stored in the frame buffer
24
.
Pixel operations
26
processes input data from the commands
12
which is in the form of pixels rather than vertices. The result of the pixel operations
26
is stored in texture memory
28
, for use in rasterization
20
. The resulting fragments are merged into the frame buffer
24
as if the fragments were generated from geometric data.
In addition, if texturing is enabled during rasterization
20
, a texel is generated from texture memory
28
for each fragment and applied to the fragment. A texel is a texture element obtained from texture memory and represents the color of the texture to be applied to a corresponding fragment. Texturing maps a portion of a specified texture image onto each primitive. Texture mapping is accomplished by using the color (Red (R), Green (G), Blue (B), or Alpha (A)) of the texture image at the location indicated by the fragment's (s, t, and r) coordinates. In the case of a 2-dimensional image (2-D image), s and t coordinates are applicable, and in the case of a 3-dimensional image (3-D image), then s, t, and r coordinates are applicable.
OpenGL provides a way to specify the details of how texturing of a primitive is effected. These details include specification of the image to be texture mapped, the means by which the image is filtered when applied to the primitive, and the function that determines what RGBA value is produced given a fragment color and an image value. A command specifying the target, level, internal format, width, height, border, format, type, and *data (a pointer to the data) is used to specify the texture image in GL commands such as TexImage2D or TexImage1D. The level argument is an integer level-of-detail number. The main texture image has a level of detail number of 0, and if a level of detail less than 0 is specified, an error message is generated.
The maximum allowable width or height of the image is an implementation dependent function of the level of detail and internal format of the resulting image array. An image with zero height or width indicates the null texture. If the null texture is specified for level of detail zero, it is as if texturing were disabled.
The image indicated to the GL (or graphics library) by the image pointer is decoded and copied into the GL's internal memory. This copying effectively places the decoded image inside a border of the maximum allowable width, which is currently 1, whether or not a border has been specified.
An example of a texture image
29
and the coordinates used to access it is shown in FIG.
2
.
FIG. 2
shows a two-dimensional texture image with n×m dimensions of n=3 and m=2. A one-dimensional texture would comprise a single strip. The values, &agr; and &bgr;, used in blending adjacent texels to obtain a texture value are also shown. As shown in
FIG. 2
, values of s and t coordinates are each in the range of 0.0 to 1.0.
If no border or a border smaller than the maximum allowable width has been specified, then the image is still stored as if it were surrounded by a border of the maximum possible width. Any excess border (which surrounds the specified image, including any border) is assigned unspecified values. A one-dimensional texture has a border only at its left and right ends.
The decoded image is referred to as the texture array. A two-dimensional texture array has width w
t
=2
n
+2b
t
and height h
t
=2
m
+2b
t
, where b
t
is the maximum allowable border width; and a one-dimensional texture array has width w
t
=2
n
+2b
t
and height h
t
=1.
Texturing, including determination of the level of detail and selection of a mipmap, of the related art is now discussed, with reference being made to OpenGL commands using the OpenGL command syntax.
Object coordinates (x, y, z, and w) and texture coordinates (s, t, r, and q) are provided for each vertex.
A texel is an element (i, j) of the texture array (for a 1-dimensional array, j is irrelevant). The texture value used in texturing a fragment is determined by that fragment's associated (s, t) coordinates, but as shown in
FIG. 2
may not correspond to any actual texel.
Typically, there are 8 neighboring texels for each pixel, which means that 8 texels encompass or surround each pixel.
Texture images may also be specified using image data taken directly from the framebuffer, and rectangular subregions of existing texture images may be respecified.
If texture wrapping for the s or t coordinates is set to be repeated (by setting parameters such as TEXTURE_WRAP_S or TEXTURE_WRAP_T to REPEAT), then the GL ignores the integer par
Silicon Graphics Inc.
Staas & Halsey , LLP
Vo Cliff N.
LandOfFree
Method for improving texture locality for pixel quads by... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Method for improving texture locality for pixel quads by..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method for improving texture locality for pixel quads by... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2569669