EP0890925A2 - Computer system including a three-dimensional graphics accelerator which includes improved texture mapping capabilities - Google Patents
Computer system including a three-dimensional graphics accelerator which includes improved texture mapping capabilities Download PDFInfo
- Publication number
- EP0890925A2 EP0890925A2 EP98305091A EP98305091A EP0890925A2 EP 0890925 A2 EP0890925 A2 EP 0890925A2 EP 98305091 A EP98305091 A EP 98305091A EP 98305091 A EP98305091 A EP 98305091A EP 0890925 A2 EP0890925 A2 EP 0890925A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- texture
- map
- geometric primitive
- region
- texture map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Definitions
- the present invention relates to a 3-D graphics accelerator in a computer system, and more particularly to an improved architecture for a 3-D graphics accelerator which stores texture maps in the system memory and transfers tessellated portions to a cache memory in the graphics accelerator.
- a three dimensional (3-D) graphics accelerator is a specialized graphics rendering subsystem for a computer system which is designed to off-load the 3-D rendering functions from the host processor, thus providing improved system performance.
- an application program executing on the host processor of the computer system generates three dimensional geometry data that defines three dimensional graphics elements for output on a display device.
- the application program causes the host processor to transfer the geometry data to the graphics accelerator.
- the graphics accelerator receives the geometry data and renders the corresponding graphics elements on the display device.
- a simple approach involves the use of surface-detail polygons to show features on top of a base polygon.
- This approach becomes less effective.
- An alternate approach known as texture mapping. maps an image (such as a bit map) onto a surface. For example, a bit map version of a painting with intricate detail might be texture mapped into a polygon representing the frame of the painting. In many cases, use of this technique often achieves more realistic results than the use of polygons to represent surface detail.
- a texture map is a two dimensional array made up of elements called texels (texture elements). Each pixel on the display device maps to at least one texel, which includes various color values. For each pixel on the display device that is to be texture mapped, the color values associated with the corresponding texels are employed to generate a final color value. All relevant texels are considered to prevent aliasing problems.
- Prior art texture mapping systems employ dedicated texture memory on the graphics accelerator board. Since this memory must be low latency and high bandwidth, DRAM's do not typically suffice. Instead, more expensive memories are employed, adding to system cost. Additionally, this texture memory is generally not able to be used for any other purpose. This is particularly problematic in graphics accelerators which include more than one rendering chip. In such cases, a copy of texture memory is needed for each extra rendering chip, further increasing system cost and board space requirements for the graphics accelerator. The size of images that can be texture mapped is limited by the size of the on-board texture memory. In view of the constantly increasing demand for more intricate texture mapping in 3-D graphics systems, the performance of the graphics system is comprised.
- an improved 3-D graphics accelerator architecture is desired which provides improved texture mapping capabilities with reduced memory and board space requirements.
- the present invention comprises a computer system with improved texture mapping capabilities.
- the computer system includes a display screen, a bus for transferring data, and a system memory coupled to the bus for storing a texture map.
- the texture map may include a plurality of mip map levels, which each comprise a version of a given texture image at a different resolution.
- the computer system further includes a processor coupled to the bus and configured to execute an application which renders a geometric primitive on the display screen.
- the processor is also configured to generate information corresponding to the geometric primitive.
- the processor is further configured to partition the primitive according to a plurality of tiles organized as a grid in texture space. Each of the plurality of tiles in the grid corresponds to a portion of the texture map, and includes a plurality of texels, preferably organized as a square.
- the computer system further includes a graphics accelerator coupled to the bus.
- the size of each of the plurality of tiles is equal to the size of a texture memory cache within a graphics accelerator in the computer system.
- the texture memory cache may additionally include the mip map levels for the corresponding portion of the texture cache.
- the texture memory cache is thus configured to store a portion of the texture map corresponding to one of the plurality of tiles. Adjacent tiles in the grid share a common row or column of texels to prevent unwanted visual effects during rendering.
- the texture memory cache may have a plurality of buffers such that one portion of the texture map may be written to one of the plurality of buffers while a given sub-polygon is rendered according to a portion of the texture map stored in another of the plurality of buffers.
- the processor is configured to transfer a portion of the texture map corresponding to a first of the plurality of tiles from the system memory to the graphics accelerator, which stores the portion of the texture map corresponding to the first of the plurality of tiles into the texture memory cache.
- the processor is further configured to tessellate a portion of the geometric primitive corresponding to the first of the plurality of tiles into a plurality of sub-polygons and transfer information corresponding to each of these plurality of sub-polygons to the graphics accelerator.
- the graphics accelerator is configured to render each of the plurality of sub-polygons at a pixel level according to the portion of the texture map corresponding to the first of the plurality of tiles.
- the use of the texture memory cache virtually eliminates any restriction on texture map size, thereby meeting demands for ever-increasing texture sizes.
- the quality of textured images is maintained, as textures are rendered at the pixel level in the graphics accelerator.
- the texture memory cache also reduces cost and on-board memory requirements for the graphics accelerator.
- a computer system 80 which includes a three-dimensional (3-D) graphics accelerator according to the present invention is shown.
- the computer system 80 comprises a system unit 82 and a video monitor or display device 84 coupled to the system unit 82.
- the display device 84 may be any of various types of display monitors or devices.
- Various input devices may be connected to the computer system, including a keyboard 86 and/or a mouse 88, or other input.
- Application software may be executed by the computer system 80 to display 3-D graphical objects on the video monitor 84.
- the 3-D graphics accelerator in the computer system 80 enables the display of three dimensional graphical objects with improved performance.
- the computer system 80 includes a central processing unit (CPU) 102 coupled to a high speed bus or system bus 104.
- a system memory 106 is also preferably coupled to the high speed bus 104.
- the host processor 102 may be any of various types of computer processors, multi-processors and CPUs.
- the system memory 106 may be any of various types of memory subsystems, including random access memories and mass storage devices.
- the system bus or host bus 104 may be any of various types of communication or host computer buses for communication between host processors, CPUS, and memory subsystems, as well as specialized subsystems.
- the host bus 104 is the UPA bus, which is a 64 bit bus operating at 83 MHz.
- a 3-D graphics accelerator 112 is coupled to the high speed memory bus 104.
- the 3-D graphics accelerator 112 may be coupled to the bus 104 by, for example, a cross bar switch or other bus connectivity logic. It is assumed that various other peripheral devices, or other buses, may be connected to the high speed memory bus 104, as is well known in the art. It is noted that the 3-D graphics accelerator may be coupled to any of various buses, as desired. As shown, the video monitor or display device 84 connects to the 3-D graphics accelerator 112.
- the host processor 102 may transfer information to and from the graphics accelerator 112 according to a programmed input/output (I/O) protocol over the host bus 104.
- I/O input/output
- the graphics accelerator 112 accesses the memory subsystem 106 according to a direct memory access (DMA) protocol or through intelligent bus mastering.
- DMA direct memory access
- Computer system 80 is configured to perform texture mapping for one or more polygons specified by a graphics application program executing on host processor 102. Host processor 102 tessellates the one or more polygons, sending the resulting sub-polygons to graphics accelerator 112 via host bus 104. The corresponding portion of the texture map is also conveyed with each of the sub-polygons. Each sub-polygon conveyed to graphics accelerator 112 is conveyed to a draw processor for texture mapping and rendering. As will be described below, computer system 80 is advantageously configured to exhibit increased performance for texturing mapping.
- the graphics accelerator 112 is principally comprised of a command block 142, a set of floating-point processors 152A - 152F, a set of draw processors 172A and 172B.
- a frame buffer 100 comprised of 3DRAM, and a random access memory/digital-to-analog converter (RAMDAC) 196.
- RAMDAC random access memory/digital-to-analog converter
- the graphics accelerator 112 includes command block 142 which interfaces to the memory bus 104.
- the command block 142 interfaces the graphics accelerator 112 to the host bus 104 and controls the transfer of data between other blocks or chips in the graphics accelerator 112.
- the command block 142 also pre-processes triangle and vector data and performs geometry data decompression.
- the command block 142 interfaces to a plurality of floating point blocks 152.
- the graphics accelerator 112 preferably includes up to six floating point processors labeled 152A-152F, as shown.
- the floating point processors 152A - 152F receive high level drawing commands and generate graphics primitives, such as triangles, lines, etc. for rendering three-dimensional objects on the screen.
- the floating point processors 152A - 152F perform transformation, clipping, face determination, lighting and set-up operations on received geometry data.
- Each of the floating point processors 152A - 152F connects to a respective memory 153A - 153F.
- the memories 153A - 153F are preferably 32k x 36-bit SRAM and are used for microcode and data storage.
- Each of the floating point blocks 152A-F connects to each of two draw processors 172A and 172B.
- the graphics accelerator 112 preferably includes two draw processors 172A and 172B, although a greater or lesser number may be used.
- the draw processors 172A and 172B perform screen space rendering of the various graphics primitives and operate to sequence or fill the completed pixels into the 3DRAM array.
- the draw processors 172A and 172B also function as 3DRAM control chips for the frame buffer 100.
- the draw processors 172A and 172B concurrently render an image into the frame buffer 100 according to a draw packet received from one of the floating-point processors 152A - 152F, or according to a direct port packet received from the command processor 142.
- Each of the floating point blocks 152A-F preferably operates to broadcast the same data to the two drawing blocks 172A and 172B.
- the same data is always on both sets of data lines coming from each floating point block 152.
- the floating point block 151A transfers the same data over both parts of the FD-bus to the draw processors 172A and 172B.
- Each of the respective drawing blocks 172A and 172B couple to frame buffer 100, wherein frame buffer 100 comprises four banks of 3DRAM memory 192A - B and 194A - B.
- the draw processor 172A couples to the two 3DRAM banks 192A and 192B, and the draw processor 172B couples to the two 3DRAM banks 194A and 194B, respectively.
- Each bank comprises three 3DRAM chips, as shown.
- the 3DRAM memories or banks 192A-B and 194A-B collectively form the frame buffer 100, which is 1280 x 1024 by 96 bits deep.
- the frame buffer stores pixels corresponding to 3-D objects which are rendered by the draw processors 172A and 172B.
- Each of the 3DRAM memories 192A-B and 194A-B couple to a RAMDAC (random access memory digital-to-analog converter) 196.
- the RAMDAC 196 comprises a programmable video timing generator and programmable pixel clock synthesizer, along with cross-bar functions, as well as traditional color look-up tables and triple video DAC circuits.
- the RAMDAC 196 in turn couples to the video monitor 84.
- the command block is preferably implemented as a single chip.
- Each of the floating point processors 152 are preferably implemented as separate chips. In the preferred embodiment, up to six floating point blocks or chips 152A-F may be included.
- Each of the drawing blocks or processors 172A and 172B also preferably comprise separate chips.
- command block 142 receives commands and data from host processor 102, including texture map data and corresponding primitives. These primitives are transformed by floating point processors 152 and conveyed to draw processors 172 for rendering into frame buffers 192 and 194.
- the texture map to be applied to the transferred primitives is stored in a texture memory cache within draw. processors 172, which are discussed generally with reference to Figure 4.
- the texture mapping methodology of computer system 80 is discussed more specifically with reference to Figures 5 through 9.
- draw processor 172A a block diagram illustrating draw processor 172A is shown.
- the draw processor 172A manages the sequencing of the 3DRAM chips.
- Each draw processor 172A comprises 3DRAM scheduling logic for both internal pixel caches and video output refresh. These resources are controlled by queuing up rendered pixels before they reach the 3DRAM and snooping the pixel addresses in this queue to predict 3DRAM cache misses.
- each draw processor 172 includes an FD bus interface block 202 for interfacing to the FD bus.
- the FD bus interface block 202 couples to CDC bus interface logic 212.
- the CDC bus interface logic 212 couples to scratch buffers 214 and a direct port unit 216.
- the direct port unit 216 receives input from frame buffer interface logic 236 and provides an output to pixel data mux logic 232.
- the CDC bus interface logic 212 also couples to provide output data to the DC bus.
- the FD bus interface 202 provides outputs to primitive accumulation buffers 204.
- the draw processor 172 also includes scoreboard 218 which keeps track of primitive ordering as specified by the command processor 142. As shown. the scoreboard logic receives an F_Num input and provides an output to the primitive accumulation buffers 204.
- the command block 142 provides a 3-bit code to the draw processor 172 every time a (unicast) primitive is copied into one of the CF-bus output FIFOs. The code specifies which of the six floating point block processors 152A-152F receives the primitive. The code also includes a bit which indicates whether the primitive is ordered or unordered. All ordered primitives are required to come out in the order that they where put in. Unordered primitives may be taken from the primitive accumulation buffers 204 whenever they become available.
- Some primitives such as text and markers, output multiple primitives for each primitive input, and these primitives are preferably placed in unordered mode for efficiency.
- all attributes sent to the draw processor 172 must remain ordered relative to primitives they might modify.
- the scoreboard logic 218 keeps track of at least 64 primitives. The scoreboard logic 218 provides a signal back to the command block 142 when the scoreboard logic 218 is close to being full, in order to prevent overflowing the scoreboard buffer 218.
- the primitive accumulation buffers 204 receive outputs from the FD-bus interface 202 and from the scoreboard logic 218.
- the primitive accumulation buffers 204 provide an output to edge walker logic 222 which in turn provides an output to span fill logic 224.
- the span fill logic 224 provides an output to a texture pixel processor 226.
- the span fill logic 224 also provides an output to the direct port unit 216.
- the primitive accumulation buffers 204 also provide an output to texture expander logic 228.
- the texture expander logic 228 couples to texture memory cache 230.
- the texture memory cache 230 provides data to the texture pixel processor 226.
- the texture memory cache 230 also provides data to the direct port unit 216.
- the texture pixel processor 226 and the direct port unit 216 each provide data to the pixel data multiplexer 232.
- the pixel data multiplexer 232 provides its output to a pixel processor 234.
- the pixel processor 234 provides its output to the frame buffer interface 236, and also provides output to the direct port unit 216.
- the primitive accumulation buffers 204 are used to accumulate primitive data until a complete primitive has been received. Thus, as data is collected from the six floating point processors 152A-152F, the data eventually forms complete primitives.
- the primitive accumulation buffers 204 include enough room to hold one complete primitive, plus sufficient storage to hold a portion of a second primitive to maintain the pipeline flowing smoothly.
- the six primitive accumulation buffers 204 are filled as data comes in from each of the six floating point processors 152A - 152F. As soon as the primitive has been fully received. in general the next one will be coming behind it. Thus, the primitive accumulation buffers 204 include sufficient extra buffering to transfer the completed primitive out of the primitive accumulation buffer 204 to the edge walker logic 222 before the data gets full from the data coming in from the next primitive.
- the primitive accumulation buffers 204 are several words larger than the largest primitive (triangle) that will be processed.
- the primitive accumulation buffers 204 provide a 64-bit output to the edge walker logic 222.
- the primitives are removed from the primitive accumulation buffers 204 one at a time based on the contents of the scoreboard logic 218.
- the edge walker logic 222 partitions primitives into pieces that may easily be handled by the span fill unit 224. For triangles, the edge walker logic 222 walks along the two current edges and generates a pair of vertical spans adjusted to the nearest pixel sample point, which are then sent to the span fill unit 224. The edge walker unit 222 also performs similar adjustment for lines, sending a line description to the span field unit 224 that is very similar to a triangle span. The edge walker logic 222 comprises two 16 x 24 multipliers used to perform these adjustments. The edge walker logic 222 further includes several adders which keep track of counts used to make other computations. Primitives other than triangles and lines are split up depending on the most efficient use of resources.
- Both jaggy and anti-aliased dots are sent straight through the logic with a minimum of adjustments, such as adding .5 to jaggy dots.
- Big dots are provided through the edge walker logic 222 as individual pixels.
- the edge walker logic 222 converts polygons and rectangles to horizontal spans.
- the edge walker logic 222 does not modify Bresenham lines in any way before being sent onto the span fill unit 224.
- the span fill unit 224 performs an interpolation of values across arbitrarily oriented spans, usually for triangles and lines. and also performs filter weight table look ups for anti-aliased lines. For optimized primitives, including triangle span pairs, rectangle and polygon spans, and anti-aliased lines and dots, two pixels are generated per cycle. All other primitives generate one pixel per cycle.
- the final stage of the span fill unit 224 also performs dithering, converting 12-bit colors to 8-bit values using a 4 x 4 screen space dither pattern.
- the span fill logic 224 provides output to the texture pixel processor 226.
- the texture pixel processor 226 performs texture calculations and controls the look up of texels in the texture memory cache 230.
- the texture pixel processor 226 produces a color to be merged in to the pixel by the pixel processor 234.
- the texture pixel processor 226 passes data onto pixel data multiplexer 232 for all other primitives except for textured triangles.
- the primitive accumulation buffers 204 provide an output to the texture expander 228.
- the texture expander 228 operates to expand received textures for storage in the texture memory cache 230.
- the texture memory cache 230 is thus loaded directly from the primitive accumulation buffers 204 and is connected to the texture pixel processor for texel look-ups.
- the texture memory cache 230 is designed to hold enough data to texture map a 16 x 16 texel region, including all of the smaller mipmaps.
- the texture memory cache 230 is preferably double-buffered so than one buffer can be loaded while the current buffer is in use. It is noted that the 16 x 16 texel region is actually stored as a 17 x 17 array to enable the interpolation to operate correctly.
- the pixel data multiplexer 232 receives input data from the texture pixel processor 226 and the direct port unit 216.
- the pixel data mux logic 232 arbitrates between pixels coming from the span fill unit 224 and those coming from the CD bus. Pixels from the CD bus are always given priority.
- the pixel data multiplexer 232 provides its output to the pixel processor 234.
- the pixel processor 234 performs blending, anti-aliasing, depth cueing and set up for logical operations in the 3DRAM 192 and 194.
- the pixel processor 234 also comprises logic which is operable to prevent a pixel write for operations such as line patterning, stencil patterning, V port clipping, and so forth.
- the pixel processor 234 provides an output to the frame buffer interface 236.
- the frame buffer interface 236 comprises logic necessary to read and write pixels from the 3DRAM memories 192A-B.
- the frame buffer interface 236 manages the level 1 (L1) and level 2 (L2) caches in the 3DRAM chips. This is performed by looking ahead to the pixels to be written and paging in the needed cache while other pixel accesses are occurring.
- the frame buffer interface 236 in turn couples to 3DRAM memories 192A and 192B as shown.
- a texture mapping method 300 is shown according to the preferred embodiment of the present invention. Each step is discussed generally with reference to Figure 5. and more specifically below.
- step 310 host processor 102 stores a texture map into system memory 106.
- a texture map is a two dimensional rectangular array, each element of which is generally 8 to 32 bits long. The most common texture map is a raster image, with each element 24 bits long, representing three color components: red, blue, and green.
- the array size is typically 1024 x 1024, but graphics accelerator 112 does not impose any significant size limits, since the texture map is stored in system memory 106 or the virtual memory of host processor 102.
- Each array element of the texture map is called a texture element or texel. In one embodiment, a texel may have one to four channels, each eight bits long. A 24 bit texel represents a non-indexed color of three channels. Add an alpha component to it and it becomes a 32 bit, four-channel texel.
- mip map levels multiple versions of the texture map (called mip map levels) are stored in memory 106, each with a different degree of resolution.
- mip map levels multiple versions of the texture map
- a mip map is stored for the texture map in system memory 106.
- a mip map is a pyramid of filtered versions of the same texture map. Each map has one-half the linear resolution of its preceding map, and has therefore one quarter the number of texels.
- the memory cost of this organization, where the coarsest level has only one texel, is 4/3 (1 + 1 ⁇ 4 + 1/6 +.7) the cost of the original map.
- mip stands for "multum in parvo", a Latin phrase meaning " many things in a small place”.
- the mip map scheme thus provides pre-filtered textures, one of which is selected at run time for use in rendering. In general, this theoretical level will lie between two adjacent pre-calculated levels, and will therefore require interpolation to the theoretical level.
- bilinear interpolation may be needed if the texel to be looked up is not exactly on the integer boundaries. Similar two-dimensional linear interpolations are computed in each mip map when scaled (u,v) values required for texture table lookup are not integer values. To assure continuity during animation, the effects of the four texels which enclose the scaled (u, v) are considered, based upon their linear distances from the reference point in texel space. For example, if the scaled (u, v) values are (3.7,6.8), the weighted average of texels (3, 6), (4, 6), (3, 7), and (4, 7) is taken. This and other interpolation options are described in further detail below.
- step 320 host processor 102, executing a graphics application program, generates a given geometric primitive, along with one or more corresponding parameters.
- the application program also specifies that the primitive is to be textured mapped by graphics accelerator 112.
- Parameters corresponding to the primitive may include colors, normal, and three-dimensional model space coordinates.
- step 330 host processor 102 partitions the given geometric primitive according to a plurality of tiles arranged as a grid in texture space.
- graphics accelerator 112 is configured to perform texture mapping on a region corresponding to the size of one of the plurality of tiles. Because graphics accelerator 112 supports relatively large triangles (greater than 1000 pixels), a given geometric primitive will typically be larger than a single tile. Host processor 102 therefore partitions the primitive. Each tile in the grid represents a portion of the texture map, and optionally, a portion of the geometric primitive.
- step 340 host processor 102 transfers the texture map portion corresponding to one of the given tiles to the graphics accelerator 112.
- the texture map portion is conveyed to FD-bus interface 202 in one of draw processors 172.
- the mip map levels corresponding to the texture map portion are also transferred.
- texture memory cache 230 is double-buffered, such that a portion of a given primitive may be rendered according to a texture map portion stored in one of the buffers of cache 230 while graphics accelerator 112 loads a subsequent texture map portion (corresponding to a different tile) in the second buffer of cache 230. Performance of texture memory cache 230 is thus advantageously increased.
- step 360 host processor 102 tessellates, or breaks into smaller parts, the portion of the geometric primitive corresponding to the tile whose texture map portion was transferred in step 340.
- the portion of the geometric primitive is tessellated into a plurality of sub-polygons, typically triangles (referred to herein as "sub-triangles" to differentiate from the larger geometric primitive which may also be a triangle).
- sub-triangles typically triangles
- the number of tessellated triangles for a tile enclosing a portion of a primitive is between one and five.
- step 370 host processor 102 transfers these tessellated sub-triangles and corresponding attributes to graphics accelerator 112.
- Command block 142 receives the tessellated sub-triangles of the tile, possibly as a triangle strip.
- each textured sub-triangle vertex contains two texture coordinates (u and v) over and above those needed for a non-textured triangle.
- a sub-triangle may include up to 12 parameters which are transferred to command block 142: three position coordinates (x, y, z), three normal coordinates (Nx, Ny, Nz) three color values (R, G, B) an alpha value, and the two texture coordinates (u and v).
- Texture coordinates are used to look up the texel values from the texture map for a particular pixel. There is some scaling involved, since these coordinates linearly range from 0.0 to 1.0 over the entire texture map. Texture coordinates are related to the model space by an affine transformation, which involves a linear transformation component and a translation component.
- step 380 graphics accelerator 112 processes each transferred sub-triangle and performs texture mapping on a pixel-by-pixel basis.
- command block 142 transmits each of the sub-triangles to one of floating point processors 152.
- the floating point processors 152 process the sub-triangles as normal triangles with additional operations for texturing, including conversion from two-dimensional texture coordinates (u, v) to a normalized three-dimensional homogeneous space (u/w, v/w, l/w).
- the use of homogeneous coordinates allows for linear interpolation of texture coordinates.
- the original texture coordinates can be recovered for each pixel by dividing the first two homogeneous coordinates by (l/w).
- the diffuse color is given by the texture map, which varies from pixel to pixel, and the specular color is a material property of the triangle, which remains constant over all of its pixels.
- the specular lighting component can be interpolated in the usual way.
- Draw processors 172 interpolate the homogeneous texture coordinates in a manner similar to that used for interpolating color, alpha, or depth (Z) parameters. Basically, these parameters are walked along the edges of the triangle by using their derivatives, and then across the horizontal spans, by adding all or part of its horizontal derivative, which is computed once for the entire triangle. Thus the homogeneous texture coordinates are computed for each pixel. Finally, at each pixel, the raw texture coordinates are recovered by dividing u and v by (1/w). These coordinate values are used in an inverse mapping algorithm to look up the corresponding texels from the texture cache. The texels value are then used render each pixel.
- Z depth
- steps 340-380 are executed for the remainder of tiles in the texture space grid.
- a texture map 402 is mapped to a grid 400 measured in texture space coordinates u (along the horizontal axis) and v (along the vertical axis).
- grid 400 is organized as a 4 x 4 array of tiles 410.
- a triangle 420 is also illustrated, representing a geometric primitive generated by a graphics application program in step 320.
- the grid lines for grid 400 are drawn 1/64 of the texture space distance apart. For example, if the texture map is 1024 x 1024, then each tile 410 in grid 400 consists of 16 x 16 (1024/64 x 1024/64) texels. In order to prevent aliasing effects, each tile 410 shares boundary texels with neighboring tiles, translating into 17 x 17 texels per tile 410.
- triangle 420 covers all or parts of ten of tiles 410.
- each of the ten tiles 410 is processed separately.
- the corresponding portion of texture map 402 is downloaded to graphics accelerator 112.
- Figure 7 depicts a portion of draw processor 172A (draw processor 172B is configured similarly), particularly the interface to the texture memory cache 230.
- Draw processor 172A as shown in Figure 7 includes a number of blocks previously described with reference to Figure 4: primitive accumulation buffers (PAB) 204, CDC bus interface 212, texture pixel processor 226, and texture memory cache 230.
- Draw processor 172A additionally includes texture decompression unit 510.
- Draw processor 172A receives packets of compressed texels through the PAB 204. (The tile's data structure for texture cache is compressed in order to reduce memory bandwidth requirements on host bus 104). The texture decompression unit 510 then reads the compressed texels from PAB 204, decompresses them, and writes them into texture memory cache 230 in step 350.
- texture memory cache 230 includes two memory buffers, 610A and 610B. This allows cache 230 to be updated for the next tile while the sub-triangles for the current tile are being processed.
- each buffer is 420 words by 32 bits each. To avoid texture decompression being a system bottleneck.
- texture memory cache 230 has three write ports (addressable to either buffer 610). Three decompressed texel values may thus be written to texture memory cache 230 simultaneously.
- FIG. 9 illustrates one way in which triangle 420 may be tessellated for each of the 10 tiles 410.
- tile 1 contains only a single sub-triangle, while tile 5, which is completely contained in the original triangle, contains two tessellated triangles.
- the tiles 410 in triangle 420 may be tessellated in a variety of other ways.
- the vertices for each tessellated sub-triangle in a given tile 410 are computed.
- this is performed by the use of a simple line equation.
- the triangle vertices A and B are represented by (u a , v a ) and ( u b , v b ) respectively.
- each vertex that is shared between two or more sub-triangles must therefore have the same interpolated position values, whether it is computed as part of one original triangle or the other. This can be guaranteed by using the identical method in each of the two or more original triangles. Interpolation is performed using only two edge points, and not all three vertices of the triangle, and always in one direction, e.g. bottom-to-top. If linear interpolation using all three vertices were to be performed, the two or more adjacent sub-triangles may not produce numerically identical results.
- triangles generated by a graphics application program executing on host processor 102 are tessellated once, with the results save for rendering at a later time. It is also desirable to package sub-triangles for a given tile 410 in such a way as to minimize the number of times the corresponding portion of texture map 402 is cached in texture memory cache 230.
- step 370 host processor 102 transfers information corresponding to each of the newly created sub-triangles to graphics accelerator 112. These parameters are received by command block 142, where they are conveyed to one of floating point processors 152.
- Floating point processors 152 transform sub-triangles from model space to screen space, perform lighting calculations, clip the sub-triangles to the viewing volume, and perform set up for draw processor 172 operations (e.g.. edge walking and span interpolation of color, Z, and alpha values). Additionally, the floating point processors 152 set up the draws processors 172 for interpolating the homogeneous texture coordinates u h , v h , and w h on the surface of the triangle. The floating point processors 152 also aid the draw processors 172 in computing mip map level on a per-pixel basis.
- Mip maps are particularly useful when the textured image is compressed onto a triangular surface, an operation called minification.
- minification an operation called minification.
- several texels in the textured image may be compressed under a single pixel. It is thus important to use a weighted average of these texels to generate each pixel value. Otherwise, the textured image may appear aliased. This effect is particularly problematic during animation.
- all the compressed texels are not considered (e.g., a point-sampling technique is used), the texture color is quantized to a single texel value. Since this texel value may change between frames of animation, unacceptable flashing and other visual defects may result. The amount of degradation varies in accordance with the texture pattern and the amount of minification.
- mip map levels are advantageous in that computing which texels are compressed under a single pixel is circumvented. Instead, the amount of compression is determined, which is used to select one of the mip map levels. Typically, this compression value lies between two adjacent pre-computed mip map levels, requiring interpolation of the texel values in each of the two mip maps. For example, we may, find that the compression value corresponds to a mip map level of 2.4.
- the pre-computed level 2 mip map is used to determine texel values.
- the texel values from levels 2 and 3 are combined using a weighted average (60% of level 2 values and 40% of level 3 values).
- texel compression is computed by floating point processors 152 at the vertex of each sub-triangle generated by host processor 102.
- the per-pixel compression values are then linearly interpolated from the vertex values in draw processors 172.
- the floating point processors 152 are also responsible for clipping all texture related parameters, including homogeneous texture coordinates and mip map compression levels. Additionally, processors 152 perform lighting operations on textured sub-triangles, and also compute derivatives u h , v h , and w h along the triangle edges for use by draw processors 172.
- the value ( w f / w ) is used instead of (1/ w ) for the homogeneous coordinate w h .
- This value ranges between 1 at the front clipping plane and 0 at infinity.
- the quantity w f is the value of w at the front clipping plane. This convention is used to simplify coordinate calculations in graphics accelerator 112.
- u h and v h may be redefined as ( wf ⁇ u/w ) and ( wf ⁇ v/w ), respectively.
- the u and v texture coordinate may be recovered at each pixel as ( u h / w h ) and ( v h / w h ). It is noted that u h and v h still range between 0.0 and 1.0.
- texel compression for a given sub-triangle, first the linear compression at each of the three vertices is computed, followed by the respective derivatives along the edges and the horizontal direction.
- Floating point processors 152 compute two colors for interpolation by draw processors 172 for textured triangles with 3 or 4 color channels which are to be lighted and Gouraud shaded.
- One of these colors with the usual components red, blue, and green, accounts for the effects of all ambient and diffuse lights, using white color as the diffuse object color. This color is then multiplied with the texture color in the draw processors 172, using the modulation function described below.
- the other color value accounts for specular lighting effects using specular color, which is a material property of an object that does not change from pixel to pixel.
- This color, with red, blue, and green components is calculated in floating point processors 152, using only the specular terms of the lighting model. Processors 152 also compute the required derivatives for these colors.
- the textured image is rendered in two passes, one time with the lighted texture, and the second time as a non-textured sub-triangle with only specular lights.
- the results of the two passes are then composited in frame buffer 100. It is noted that performance in this embodiment is not halved since the non-textured triangles are processed at relatively faster pace than the textured triangles.
- computer system provides a plurality of pre-calculated mip map levels (five, in one embodiment).
- the theoretical mip map level determined from compression values lies between two pre-computed levels.
- graphics accelerator 112 linearly interpolates between two pre-computed levels.
- maplevel log 2 C.
- the theoretical map level will have a fractional component.
- there are five pre-computed levels of detail and thus, five mip map levels).
- these extra six levels must also be addressable for more accurate anti-aliasing.
- the respective integer portions are used to look up a texel value from the texture map. while the fractional portion may be used for bilinear interpolation.
- the integer parts of u and v , u_int and v_int may be used as indices into a two-dimensional texture array.
- the corresponding indices are computed as ( u_int >> m ) and ( v_int >> m) , and the fractional values at level m are the five least significant of ( u >> m) and ( v >> m ).
- Computer system 80 supports the five options XGL allows for sampling or interpolating mip map levels. Two of these are for point sampling mip level 0, or the level nearest to the theoretical level. The third one deals with linear interpolation between point-sampled texels at the two mip map levels that bracket the theoretical level. The fourth option involves bilinear interpolation between four texels on the mip map level closest to the theoretical level. The last option deals with trilinear interpolation, which requires a final linear interpolation between the bilinear results on the two mip map levels that bracket the theoretical level. The interpolation between two mip maps is not performed if the mip map compression is less than or equal to 1.0, even if the application has selected such an option, since no mip maps more detailed than the level 0 map.
- T n and T f represent the texel values from near and next farther levels.
- T n T [( u >> nl ) rounded , ( v >> nl ) rounded ] nl
- T f T [( u >> ( nl +1)) rounded , ( v >> ( nl +1) rounded ] fl .
- T T n ⁇ (1.0- m f )+ T f ⁇ m f .
- fractional texel indices are discarded. It is noted that in one embodiment, 1.0 is actually represented in the binary form as 1.00000, with five fractional bits. On the other hand, m f contains only five bits of fraction with its integer part as zero.
- This option is used for taking the weighted average of four texels from a single map (level 0 or the map level closest to the theoretical level in different embodiments).
- (uint, vint) represent the integer portion of texel indices at the current mip map level
- (ufrac, vfrac) represent the fractional components (including the right shift adjustment from the values at level 0).
- This rendering step involves modulating, replacing, decaling, or blending the sampled texel data into a final color value.
- the OpenGL notation is used herein to indicate the required operations.
- C f and A f represent the interpolated color and alpha values at the pixel fragment.
- the sampled texel values are represented by L t for a single channel, L t and A t for a two-channel texture, C t (three color components) for a three-channel texture, and C t and A t for a four-channel texture.
- the output color and alpha values are represented by C v and A v , respectively.
- This mode can be used for modulating the object color.
- modulate mode could create a ripple effect to simulate the surface of an orange.
- the C v equation is made up of three separate equations for the red, blue, and green components.
- This can be used for texture lighting, where the texture color serves as the object diffuse color.
- This mode may be used for translucent texture effects. It may also be used to create the effect of a non-rectangular raster image by assigning different values to the alpha components in the texture map.
- This mode is available for one and two channels texture only.
- the one-channel mode it is used to blend the interpolated color with a constant color, C c .
- This color is identified as Texture Environment Color in the OpenGL standard.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
Description
Claims (38)
- A method for texture mapping a geometric primitive, comprising:receiving data describing a first region of said geometric primitive;receiving a first portion of a texture map into a texture memory cache, wherein said first portion of said texture map corresponds to said first region of said geometric primitive;texture mapping said first region of said geometric primitive according to said first portion of said texture map stored in said texture memory cache.
- The method of claim 1, furthering comprising partitioning said geometric primitive into a plurality of regions which include said first region.
- The method of claim 2, wherein said texture map includes a plurality of portions which include said first portion.
- The method of claim 3, wherein each of said plurality of regions in said geometric primitive has a corresponding texture map portion included in said plurality of portions.
- The method of claim 4, wherein said texture memory cache has a storage capacity sufficient to store texture data for a given one of said plurality of portions of said texture map.
- The method of claim 1, further comprising dividing said first region of said geometric primitives into one or more micro-primitives.
- The method of claim 6, wherein said texture mapping said first region of said geometric primitive includes texture mapping each of said one or more microprimitives.
- The method of claim 6, wherein said one or more micro-primitives includes triangle primitives.
- The method of claim 1, further comprising:receiving data describing a second region of said geometric primitive;receiving a second portion of a texture map into a texture memory cache, wherein said second portion of said texture map corresponds to said second region of said geometric primitive;texture mapping said second region of said geometric primitive according to said second portion of said texture map stored in said texture memory cache.
- The method of claim 2, further comprising:receiving data describing a next region of said geometric primitive;receiving a next portion of a texture map which corresponds to said next region of said geometric primitive into a texture memory cache;texture mapping said next region of said geometric primitive according to said next portion of said texture map stored in said texture memory cache;repeating said receiving data, said receiving said next portion of said texture map, and said texture mapping for all of said plurality of regions in said geometric primitive.
- The method of claim 1, further comprising utilizing results of said texture mapping to render pixels within said first region of said geometric primitive.
- The method of claim 1. wherein said texture map includes texture data corresponding to a first texture image. and wherein said texture map includes a plurality of mip map levels, wherein each of said plurality of mip map levels includes texture data which represents said first texture image at a corresponding resolution.
- The method of claim 12, wherein said first portion of said texture map stored within said texture memory cache includes a first set of mip map level values.
- The method of claim 13, further comprising computing one or more compression values for said first region of said geometric primitive, wherein said one or more compression values are usable to access texture data from an appropriate one of said first set of mip map level values.
- The method of claim 1, wherein said data describing said first region of said geometric primitive includes one or more texture map coordinates, wherein said texture map coordinates are usable to access texture data within said first portion of said texture map which is stored in said texture memory cache.
- The method of claim 1, wherein said method is performed in a computer system.
- The method of claim 16, wherein said computer system includes a system memory, wherein said system memory is configured to store said texture map.
- The method of claim 17, wherein said computer system includes a graphics sub-system which includes said texture memory cache.
- The method of claim 18, wherein said graphics sub-system includes a texture processor coupled to said texture memory cache, wherein said texture processor is configured to perform said texture mapping.
- The method of claim 1, wherein said geometric primitive is included in a plurality of geometric primitives which represent a 3-D graphical object.
- A graphics sub-system configured to perform texture mapping upon a geometric primitive, comprising:a texture processing unit coupled to receive data corresponding to a first region of said geometric primitive;a texture memory cache coupled to receive texture data corresponding to a first portion of a texture map, wherein said first portion of said texture map corresponds to said first region of said first geometric primitive;wherein said texture processing unit is configured to perform texture mapping on said first region of said geometric primitive according to said first portion of said texture map stored in said texture memory cache.
- The graphics sub-system of claim 21, wherein said data corresponding to a first region of said geometric primitive includes a plurality of a micro-primitives formed by division of said first region of said geometric primitive.
- The graphics sub-system of claim 22, wherein said texture processing unit is configured to texture map each of said one or more micro-primitives.
- The graphics sub-system of claim 22, wherein said one or more micro-primitives includes triangle primitives.
- The graphics sub-system of claim 21, wherein said geometric primitive includes a plurality of regions including said first region, and wherein said graphics sub-system is configured to perform texture mapping on each of said plurality of regions by utilizing data representing each of said plurality of regions and a corresponding texture map portion stored in said texture memory cache.
- The graphics sub-system of claim 21, further comprising a rasterization unit coupled to said texture processing unit, wherein said rasterization unit is configured to utilize output of said texture processing unit to render pixels located within said first region of said geometric primitive.
- The graphics sub-system of claim 21, wherein said data corresponding to said first region of said geometric primitive includes one or more texture map coordinates, wherein said texture map coordinates are usable to access texture data within said first portion of said texture map which is stored in said texture memory cache.
- The graphics sub-system of claim 21, wherein said texture memory cache includes a plurality of buffers, wherein said first portion of said texture map is stored in a first of said plurality of buffers, and wherein said texture memory cache is configured to receive a second portion of said texture map in a second of said plurality of buffers concurrently with said texture processing unit accessing texture data from said first of said plurality of buffers.
- The graphics sub-system of claim 28, wherein said second portion of said texture map corresponds to a second region of said geometric primitive.
- A computer system configured to perform texture mapping of a geometric primitive, comprising:a host processor;a system memory coupled to said host processor, wherein said system memory stores a texture map which includes texture data corresponding to a given texture image;a graphics sub-system coupled to said host processor and said system memory, wherein said graphics sub-system includes:a texture processing unit:a texture memory cache;wherein said host processor is configured to convey information describing a first portion of said geometric primitive to said texture processing unit within said graphics sub-system, and wherein said host processor is configured to convey a first portion of said texture map to said texture memory cache within said graphics sub-system, wherein said first portion of said texture map corresponds to said first portion of said geometric primitive;and wherein said texture processing unit is configured to perform texture mapping of said first region of said geometric primitive by utilizing said first portion of said texture map stored in said texture memory cache.
- The computer system of claim 30, wherein said host processor is configured to partition said geometric primitive into a plurality of regions which include said first region.
- The computer system of claim 31, wherein said texture map includes a plurality of portions which include said first portion.
- The computer system of claim 32, wherein each of said plurality of regions in said geometric primitive has a corresponding texture map portion included in said plurality of portions.
- The computer system of claim 33, wherein said texture memory cache has a storage capacity sufficient to store texture data for a given one of said plurality of portions of said texture map.
- The computer system of claim 30, wherein said host processor is configured to dividing said first region of said geometric primitives into one or more micro-primitives.
- The computer system of claim 35, wherein said host processor is configured to convey said one or more micro-primitives to said graphics sub-system.
- The computer system of claim 36, wherein said texture processing unit is configured to perform texture mapping on each of said one or more micro-primitives using texture data from said first portion of said texture map stored in said texture memory cache.
- A graphics sub-system for texture mapping a geometric primitive, comprising:a texture processing means for receiving data describing a first region of said geometric primitive;a texture memory caching means for receiving a first portion of a texture map, wherein said first portion of said texture map corresponds to said first region of said geometric primitive;wherein said texture processing means is configured to perform texture mapping of said first region of said geometric primitive according to said first portion of said texture map stored in said texture memory caching means.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US88469297A | 1997-06-30 | 1997-06-30 | |
US884692 | 1997-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
EP0890925A2 true EP0890925A2 (en) | 1999-01-13 |
EP0890925A3 EP0890925A3 (en) | 1999-03-31 |
Family
ID=25385159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP98305091A Withdrawn EP0890925A3 (en) | 1997-06-30 | 1998-06-29 | Computer system including a three-dimensional graphics accelerator which includes improved texture mapping capabilities |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0890925A3 (en) |
JP (1) | JPH1186028A (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000039755A2 (en) * | 1998-12-23 | 2000-07-06 | Silicon Graphics, Inc. | Method, system, and computer program product for modified blending between clip-map tiles |
WO2001052189A2 (en) * | 2000-01-10 | 2001-07-19 | Intrinsic Graphics, Inc. | Asynchronous multilevel texture pipeline |
WO2001063556A1 (en) * | 2000-02-25 | 2001-08-30 | Inzomia Ab | A method and device for picture presentation |
GB2374775A (en) * | 2001-04-19 | 2002-10-23 | Discreet Logic Inc | Rendering animated image |
WO2003052698A1 (en) * | 2001-12-14 | 2003-06-26 | Imagination Technologies Limited | Texturing method and apparatus |
GB2388288A (en) * | 2002-03-11 | 2003-11-05 | Sun Microsystems Inc | Improving magnified texture-mapped pixel performance in a single-pixel pipeline |
US6967662B2 (en) | 2001-02-08 | 2005-11-22 | Imagination Technologies Limited | Volume clipping in computer 3D graphics |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6583787B1 (en) * | 2000-02-28 | 2003-06-24 | Mitsubishi Electric Research Laboratories, Inc. | Rendering pipeline for surface elements |
JP4610748B2 (en) * | 2001-01-16 | 2011-01-12 | 株式会社バンダイナムコゲームス | Image generation system, program, and information storage medium |
JP2008502064A (en) * | 2004-06-08 | 2008-01-24 | スリー−ビィ・インターナショナル・リミテッド | Display image texture |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4945495A (en) * | 1987-10-21 | 1990-07-31 | Daikin Industries, Ltd. | Image memory write control apparatus and texture mapping apparatus |
WO1995024682A1 (en) * | 1994-03-07 | 1995-09-14 | Silicon Graphics, Inc. | Integrating texture memory and interpolation logic |
JPH08106537A (en) * | 1994-10-04 | 1996-04-23 | Nec Corp | Image generator |
WO1997010572A1 (en) * | 1995-09-13 | 1997-03-20 | Philips Electronics N.V. | Image texture mapping using texel caches |
-
1998
- 1998-06-29 EP EP98305091A patent/EP0890925A3/en not_active Withdrawn
- 1998-06-30 JP JP18383298A patent/JPH1186028A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4945495A (en) * | 1987-10-21 | 1990-07-31 | Daikin Industries, Ltd. | Image memory write control apparatus and texture mapping apparatus |
WO1995024682A1 (en) * | 1994-03-07 | 1995-09-14 | Silicon Graphics, Inc. | Integrating texture memory and interpolation logic |
JPH08106537A (en) * | 1994-10-04 | 1996-04-23 | Nec Corp | Image generator |
WO1997010572A1 (en) * | 1995-09-13 | 1997-03-20 | Philips Electronics N.V. | Image texture mapping using texel caches |
Non-Patent Citations (2)
Title |
---|
"EFFECTIVE CACHE MECHANISM FOR TEXTURE MAPPING" IBM TECHNICAL DISCLOSURE BULLETIN, vol. 39, no. 12, December 1996, pages 213-217, XP000686068 * |
PATENT ABSTRACTS OF JAPAN vol. 096, no. 008, 30 August 1996 & JP 08 106537 A (NEC CORP), 23 April 1996 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6373482B1 (en) | 1998-12-23 | 2002-04-16 | Microsoft Corporation | Method, system, and computer program product for modified blending between clip-map tiles |
WO2000039755A3 (en) * | 1998-12-23 | 2002-09-19 | Silicon Graphics Inc | Method, system, and computer program product for modified blending between clip-map tiles |
WO2000039755A2 (en) * | 1998-12-23 | 2000-07-06 | Silicon Graphics, Inc. | Method, system, and computer program product for modified blending between clip-map tiles |
US6618053B1 (en) | 2000-01-10 | 2003-09-09 | Vicarious Visions, Inc. | Asynchronous multilevel texture pipeline |
WO2001052189A2 (en) * | 2000-01-10 | 2001-07-19 | Intrinsic Graphics, Inc. | Asynchronous multilevel texture pipeline |
WO2001052189A3 (en) * | 2000-01-10 | 2001-12-06 | Intrinsic Graphics Inc | Asynchronous multilevel texture pipeline |
WO2001063556A1 (en) * | 2000-02-25 | 2001-08-30 | Inzomia Ab | A method and device for picture presentation |
US6967662B2 (en) | 2001-02-08 | 2005-11-22 | Imagination Technologies Limited | Volume clipping in computer 3D graphics |
GB2374775A (en) * | 2001-04-19 | 2002-10-23 | Discreet Logic Inc | Rendering animated image |
GB2374775B (en) * | 2001-04-19 | 2005-06-15 | Discreet Logic Inc | Rendering animated image data |
US6987516B2 (en) | 2001-04-19 | 2006-01-17 | Autodesk Canada Co. | Rendering animated image data |
WO2003052698A1 (en) * | 2001-12-14 | 2003-06-26 | Imagination Technologies Limited | Texturing method and apparatus |
GB2388288A (en) * | 2002-03-11 | 2003-11-05 | Sun Microsystems Inc | Improving magnified texture-mapped pixel performance in a single-pixel pipeline |
GB2388288B (en) * | 2002-03-11 | 2004-03-31 | Sun Microsystems Inc | Improving magnified texture-mapped pixel performance in a single-pixel pipeline |
US7145570B2 (en) | 2002-03-11 | 2006-12-05 | Sun Microsystems, Inc. | Magnified texture-mapped pixel performance in a single-pixel pipeline |
Also Published As
Publication number | Publication date |
---|---|
EP0890925A3 (en) | 1999-03-31 |
JPH1186028A (en) | 1999-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6236405B1 (en) | System and method for mapping textures onto surfaces of computer-generated objects | |
US6577317B1 (en) | Apparatus and method for geometry operations in a 3D-graphics pipeline | |
US6064393A (en) | Method for measuring the fidelity of warped image layer approximations in a real-time graphics rendering pipeline | |
US5649173A (en) | Hardware architecture for image generation and manipulation | |
US6229553B1 (en) | Deferred shading graphics pipeline processor | |
US5870097A (en) | Method and system for improving shadowing in a graphics rendering system | |
US5886701A (en) | Graphics rendering device and method for operating same | |
US6597363B1 (en) | Graphics processor with deferred shading | |
US6111584A (en) | Rendering system with mini-patch retrieval from local texture storage | |
US5949428A (en) | Method and apparatus for resolving pixel data in a graphics rendering system | |
US5977977A (en) | Method and system for multi-pass rendering | |
EP1114400A1 (en) | Apparatus and method for real-time volume processing and universal 3d rendering | |
US5847717A (en) | Data synchronization between a plurality of asynchronous data renderers | |
EP0890925A2 (en) | Computer system including a three-dimensional graphics accelerator which includes improved texture mapping capabilities | |
US5704025A (en) | Computer graphics system having per pixel depth cueing | |
US5732248A (en) | Multistep vector generation for multiple frame buffer controllers | |
US7405735B2 (en) | Texture unit, image rendering apparatus and texel transfer method for transferring texels in a batch | |
US6943791B2 (en) | Z-slope test to optimize sample throughput | |
US7385604B1 (en) | Fragment scattering | |
Thibieroz et al. | Deferred shading with multiple render targets | |
US20030169271A1 (en) | Magnified texture-mapped pixel performance in a single-pixel pipeline | |
US6900803B2 (en) | Method for rasterizing graphics for optimal tiling performance | |
US7382377B1 (en) | Render to texture cull | |
US6847372B2 (en) | Magnified texture-mapped pixel performance in a single-pixel pipeline | |
US6847368B2 (en) | Graphics system with a buddy / quad mode for faster writes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): DE FR GB IT NL SE |
|
AX | Request for extension of the european patent |
Free format text: AL;LT;LV;MK;RO;SI |
|
PUAL | Search report despatched |
Free format text: ORIGINAL CODE: 0009013 |
|
AK | Designated contracting states |
Kind code of ref document: A3 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE |
|
AX | Request for extension of the european patent |
Free format text: AL;LT;LV;MK;RO;SI |
|
17P | Request for examination filed |
Effective date: 19990907 |
|
AKX | Designation fees paid |
Free format text: DE FR GB IT NL SE |
|
17Q | First examination report despatched |
Effective date: 20020503 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20021115 |