US6940511B2 - Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering - Google Patents

Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering Download PDF

Info

Publication number
US6940511B2
US6940511B2 US10/326,849 US32684902A US6940511B2 US 6940511 B2 US6940511 B2 US 6940511B2 US 32684902 A US32684902 A US 32684902A US 6940511 B2 US6940511 B2 US 6940511B2
Authority
US
United States
Prior art keywords
texel
values
reference value
value
pixel
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.)
Expired - Lifetime, expires
Application number
US10/326,849
Other versions
US20030227462A1 (en
Inventor
Tomas Akenine-Möller
Jacob Ström
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Priority to US10/326,849 priority Critical patent/US6940511B2/en
Assigned to TELEFONAKTIEBOLAGET L M ERICSSON (PUBL) reassignment TELEFONAKTIEBOLAGET L M ERICSSON (PUBL) ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AKENINE-MOLLER, TOMAS, STROM, JACOB
Priority to DE60328733T priority patent/DE60328733D1/en
Priority to AT03737982T priority patent/ATE349743T1/en
Priority to DE60310720T priority patent/DE60310720T2/en
Priority to AU2003245901A priority patent/AU2003245901A1/en
Priority to EP06126695A priority patent/EP1768059B1/en
Priority to PCT/EP2003/005747 priority patent/WO2003105090A1/en
Priority to KR1020047019919A priority patent/KR101034925B1/en
Priority to ES06126695T priority patent/ES2331327T3/en
Priority to EP03737982A priority patent/EP1520259B1/en
Priority to AT06126695T priority patent/ATE438903T1/en
Priority to ES03737982T priority patent/ES2277086T3/en
Priority to JP2004512087A priority patent/JP4648701B2/en
Priority to CN038129752A priority patent/CN1659595B/en
Publication of US20030227462A1 publication Critical patent/US20030227462A1/en
Priority to US11/179,704 priority patent/US7633507B2/en
Publication of US6940511B2 publication Critical patent/US6940511B2/en
Application granted granted Critical
Priority to JP2009298002A priority patent/JP5091220B2/en
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed

Definitions

  • the present invention relates to computer graphics, and more particular, to graphics texture processing methods, apparatus and computer program products.
  • the real-time rendering of three-dimensional graphics has a number of appealing applications on mobile terminals, including games, man-machine interfaces, messaging and m-commerce. Since three-dimensional rendering is a computationally expensive task, dedicated hardware must often be built to reach sufficient performance. Innovative ways of lowering the complexity and bandwidth usage of this hardware architecture are thus of great importance.
  • textures One standard way of increasing the level of realism in real-time rendering is to apply textures to the surfaces. This can be done in a variety of ways, including environment mapping, bump mapping, texturing via automatic texture coordinate generation, projection-based texturing, and more. Common to all different ways of using textures is that high quality texture filtering may be needed to reduce aliasing problems. Aliasing may be extremely disturbing for the human viewer, especially for dynamic scenes.
  • Mipmapping is discussed for example by Lance Williams in “Pyramidal Parametrics,” ( Computer Graphic, SIGGRAPH ' 83 Proceedings, pp. 1-11, July 1983), the disclosure of which is hereby incorporated herein in its entirety by reference.
  • Trilinear mipmapping requires eight texels that are filtered into one color that is used, and thus, in the worst case, eight memory reads can be needed before the filtered color is obtained. Texture caches with prefetching can hide this problem, but such techniques may be expensive in hardware.
  • Anisotropic filtering schemes may reduce or eliminate overblurring by, e.g., filtering several trilinear mipmap samples. The ultimate goal is that those together may perfectly cover the quadrilateral that is obtained from projecting a pixel to texture space. While increasing quality, a number of memory reads may increase dramatically. Common numbers range from 16-128 texel reads.
  • memory accesses can be extremely expensive. On a standard computer graphics architecture, more than two thirds of the memory accesses can be due to texturing. In the example of trilinear mipmapping for instance, texturing may require eight memory accesses, whereas the rest of the rasterizer may require another three (z-read, z-write and colorbuffer write). With eleven memory accesses per pixel, the memory bandwidth need be very high to obtain reasonable performance. A high clock speed may cost a lot of power and may not be suitable for mobile platforms. It may thus be desirable to reduce the number of memory accesses that are needed for texturing, while maintaining a texture quality that is similar to trilinear mipmapping.
  • Texture compression is a means often used to save bandwidth in graphics hardware.
  • the idea is that the texel values (which may comprise of, for example, RGB color values, gray scale values or other graphics representations) are stored in a compressed format in the memory, and this can reduce the bandwidth needed when the texture is sent over the bus.
  • a hardware mechanism can decompress the texel data.
  • Beers et al. discuss using vector quantization, and training the vector set using a number of images.
  • S3 Graphics Co., Ltd. has invented a texture compression scheme, which is often called S3TC (S3 Texture Compression).
  • S3TC is discussed for example by McGabe et al. in “DirectX 6 Texture Map Compression” (Game Developer Magazine, vol. 5, no. 8, pp. 42-46, August 1998), the disclosure of which is hereby incorporated herein in its entirety by reference.
  • the S3TC has been incorporated into DirectX, where it is called DXTC.
  • the S3TC scheme compresses textures, that is, images that are “glued” onto geometric primitives (e.g., triangles) during rendering.
  • the texture image is divided into 4 ⁇ 4 texel blocks, and each such block is compressed individually into 8 bytes. This may be done as follows.
  • each texel reference value may for example be color encoded as red (5 bits), green (6 bits), and blue (5 bits).
  • an additional two texel reference values are computed in between the two stored texel reference values.
  • each 4 ⁇ 4 block has access to a total of four texel reference values (e.g., colors). Therefore, each of the 16 (4 ⁇ 4) texels can be encoded as an index into this “palette” of 4 texel reference values.
  • Each index can be coded with 2 bits, and we call these indices texel index values.
  • S3TC decompression may proceed as follows, assuming rendering to a 24-bit display. Colors stored with 16 bits may be converted to 24 bits by zero-padding, although other ways to do this exist.
  • a block of texel values is stored by storing a first texel reference value, a second texel reference value, and one or more texel mapping values where each texel mapping value represents a 3-tuple of ternary index values.
  • Each texel mapping value represents a k-tuple of references to the first texel reference value, the second texel reference value and/or a third texel reference value.
  • a pixel value for the pixel is generated from the stored texel mapping values and the stored texel reference values, and the pixel is displayed responsive to the generated pixel value.
  • the third texel reference value may be mathematically determined by the first and second texel reference values, e.g., the third texel reference value may represent an arithmetic mean of the first and second texel reference values.
  • Texel reference values may comprise, for example, RGB color values, gray scale values, or other graphics representations.
  • respective pluralities of texel reference values and texel mapping values that map thereto are stored for respective ones of a plurality of overlapping blocks of texel values.
  • pixel values for pixels in a pixel map may be generated from stored texel values for sets of nearest neighbor texels in the plurality of overlapping blocks of texels, wherein the texel blocks overlap such that generating a color value for any pixel in the pixel map requires stored texel values for no more than a single block of texels.
  • pixel values may be generated for pixels in a pixel map from stored texel values for sets of nearest neighbor texels in the plurality of overlapping blocks of texels, wherein the texel blocks overlap such that generating a color value for any pixel in the pixel map requires stored texel values for no more than two blocks of texels.
  • a first mipmap value for a pixel is bilinearly interpolated from retrieved texel values for a set of nearest neighbor texel values.
  • a second mipmap value for the pixel is generated by averaging the retrieved texel values for the set of nearest neighbor texel values.
  • a pixel value for the pixel is generated by interpolating between the first and second mipmap values.
  • Texture compression, block overlapping and texture filtering techniques according to the present invention can be used individually and/or in combination.
  • the present invention may be embodied as methods, apparatus and computer program products.
  • the present invention may be advantageously used in a handheld device, such as a wireless terminal, personal digital assistant (PDA), or the like.
  • PDA personal digital assistant
  • FIG. 1 illustrates a storage representation for a texel block according to some embodiments of the present invention.
  • FIG. 2 illustrates two exemplary 3-tuples of ternary texel value mapping values according to further embodiments of the present invention.
  • FIG. 3 illustrates an exemplary pixel/texel relationship.
  • FIG. 4 illustrates an overlapping texel block arrangement according to some embodiments of the present invention.
  • FIG. 5 illustrates a sample point for a pixel in a texture map according to exemplary embodiments of the present invention.
  • FIG. 6 illustrates an exemplary set of nearest neighbor texel values according to some embodiments of the present invention.
  • FIG. 7 illustrates a pixel location for texture filtering purposes according to some embodiments of the present invention.
  • FIG. 8 illustrates a wireless terminal configured to provide texture processing according to some embodiments of the present invention.
  • FIG. 9 is a flowchart illustrating exemplary texture processing operations according to further embodiments of the present invention.
  • novel approaches to texture filtering are presented that can significantly reduce bandwidth usage.
  • aspects of the invention can include:
  • POOMA Poor Man's Texture Filtering System
  • a texture image can be divided into small blocks (e.g. 3 ⁇ 2 texels), and texture compression can be used to reduce the memory bandwidth needed to fetch such a block, typically down to one 32-bit memory read.
  • texture overlapping can amount to making the blocks overlapping, so that every 2 ⁇ 2-neighbor group of texel values is always completely contained in one of the blocks. This makes it possible to do bilinear filtering with one memory access.
  • Texture filtering as described herein provides a way of filtering four texel values to obtain the color of the pixel. Just as in the case of mipmapping, bilinear filtering on the four pixels can be used on the bottom mipmap level.
  • the average of the four recently read texel values is computed and that value is used instead.
  • the result can provide a significantly better texturing than using nearest neighbor mipmapping, and can produce almost as good results as trilinear mipmapping.
  • the cost may only be one 32-bit memory read per filtered color, compared to two for nearest neighbor mipmapping (poor quality) and eight for trilinear mipmapping (high quality).
  • ternary representation When going from 64 to 32 bits, it becomes undesirable to store two bits per index value for each texel. Having two bits means that each index value can assume one of four values. Instead, we allow only three different values. Either the index value refers to the first texture reference value, the second texture reference value, or a third texture reference value that can be a function of the first two reference values, e.g., the arithmetic average of the first two values. Each index variable is then ternary, since it can assume one of three possible values. Storing a single ternary value in a binary representation can be wasteful—two bits are needed, which is no better than the S3TC method.
  • Each texture mapping value represents a small group (“tuple”) of index values.
  • 4-tuples, 5-tuples, and 6-tuples it is possible to represent a k-tuple of ternary symbols using ceiling (log(3 k )/log(2)) bits. In our example we have used 3-tuples, since this creates a look-up table of desirable size.
  • a 2 ⁇ 3 block of texel values can be represented using a data element 100 as shown in FIG. 1 .
  • the bits marked with rL, gL and bL represent the red, green and blue components of a first reference color, here marked with “L” as in “left”.
  • the bits marked with rR, gR and bR represent a second reference color, marked with “R” as in “right”. From these two colors, a “middle” reference color is created, by taking the arithmetic mean of R and L. This new reference color is denoted “M” as in “middle”.
  • the bits marked with x in FIG. 1 represent the first texel mapping value, which represents the texel index values of three of the texels in the block. For instance, we can choose that the top most three texels get their color from x, and that the lower-most texels are controlled by y. Both x and y are mapped to three-tuples of L, M and R by using Table 1. The range from 27 through 31 is not used.
  • LLL 2 LLR 3: LML 4: LMM 5: LMR 6: LRL 7: LRM 8: LRR 9: MLL 10: MLM 11: MLR 12: MML 13: MMM 14: MMR 15: MRL 16: MRM 17: MRR 18: RLL 19: RLM 20: RLR 21: RML 22: RMM 23: RMR 24: RRL 25: RRM 26: RRR 27: — 28: — 29: — 30: — 31: —
  • the decompression algorithm gets the 32-bit sequence (0000 0000 000 10111 1000 1000 000 00000) as an input.
  • Table 1 indicates that 23 corresponds to the 3-tuple (R, M, R). This means that the indices for the top three texels in the block are R, M, and R, respectively.
  • the index values for the texels in the block may be decoded from the texel mapping values as shown in Table 2:
  • Each index value relates to one of the texel references values. For instance, the first texel has an index value “R” and should be given the texel value (0, 0, 0). Thus, after decoding, the block will have the texel values show in Table 3:
  • the four texel values closest to the pixel's sample point in the texture map may be needed. For example, as shown in FIG. 3 , if the sample point of a pixel is within the gray area 310 , all four of the nearest neighbor texel color values are found in the same block, and just one memory transfer is necessary. However, it may be necessary to fetch up to four blocks in order to get all the closest neighbors.
  • FIG. 4 it is shown how blocks can be laid out in an overlapping fashion according to embodiments of the invention to avoid additional reads for bilinear interpolation.
  • the block 400 a marked with a solid line thus overlaps both the block 400 b marked with square dashes (to the right), and the block 400 c marked with round dashes (underneath).
  • the first 32-bit word in the memory can represent the block 400 a
  • the following 32-bit word in the memory can represent block 400 b.
  • Overlapping may be limited to one direction. For instance, by overlapping only in the x-direction, data is only expanded by a factor of 1.5. (Including the compression, the total storage is only 0.5 of the original.) Then, in 50% of the cases, all four texels are inside the block. In the remaining cases, another block must be read. Table 4 shows what memory requirements and what average bandwidth may be needed.
  • the block 520 indicated with a solid outline contains the four nearest neighbor texels 103 , 104 , 110 , 111 .
  • the texel blocks may be stored in an overlapping fashion.
  • the representation for the texels in FIG. 5 can be laid out in the memory such as:
  • 0xffa7b043 represents the block 510 marked with a dotted outline
  • 0x00178800 corresponds to the block 520 marked with a solid outline
  • 0xfa8787fa corresponds to the block 530 marked with a dashed outline.
  • the block marked 520 with a solid outline should be read.
  • the value compression 0x00178800 should be from the memory. This may then be decoded according to the exemplary techniques described above.
  • a first, a lower level mipmap value Q can be obtained.
  • a second, upper level mipmap value P can be obtained.
  • a linear interpolation may be performed between the first and second mipmap values Q and P to determine a value for the pixel, depending upon how close the pixel is to the lower- and upper-mipmap levels.
  • an ability to gain bits in the representation of the texels may be provided by using 3 levels (L, M and R) instead of four levels.
  • the ternary representation may use only ceil(log(3 ⁇ k)/log(2)) bits for k texels, instead of 2*k bits that may be required when four levels are used. This increases compression efficiency per block.
  • use of overlapping blocks may make it possible to lower the average number of blocks that need to be accessed in order to render a pixel down to one 32-bit memory access per pixel.
  • filtering of the four neighboring texel values can be used to produce the pixel color.
  • the two mipmap values can be linearly interpolated to get a pixel value.
  • (61, 61, 0) is the pixel value that is drawn to the screen.
  • FIGS. 8 and 9 are diagrams illustrating exemplary apparatus and operations according to embodiments of the present invention. It will be understood that operations depicted in the diagrams, and combinations thereof, may be implemented using one or more electronic circuits, such as a circuits included in a component of a wireless communications system or in a wireless terminal.
  • operations depicted in the diagrams, and combinations thereof may be implemented in one or more electronic circuits, such as in one or more discrete electronic components, one or more integrated circuits (ICs), one or more application specific integrated circuits (ASICs), and application specific circuit modules, as well as by computer program instructions which may be executed by a computer or other data processing apparatus, such as a microprocessor or digital signal processor (DSP), to produce a machine such that the instructions which execute on the computer or other programmable data processing apparatus create electronic circuits or other means that implement the specified operations.
  • the computer program instructions may also be executed on one or more computers or other data processing apparatus to cause a series of actions to be performed by the computer(s) or other programmable apparatus to produce a computer implemented process that includes the specified operations.
  • the computer program instructions may also be embodied in the form of a computer program product in a computer-readable storage medium, i.e., as computer-readable program code embodied in the medium for use by or in connection with an instruction execution system.
  • the computer-readable storage medium may include, but is not limited to, electronic, magnetic, optical or other storage media, such as a magnetic or optical disk or an integrated circuit memory device.
  • the computer program instructions may be embodied in memory included in a component of a wireless communications apparatus and/or storage medium operable to program such memory. Accordingly, blocks of the schematic diagrams of FIGS. 6 and 7 support electronic circuits and other apparatus that perform the specified operations, acts for performing the specified operations, and computer program products configured to perform the specified operations.
  • FIG. 8 illustrates a wireless terminal 800 in which the present invention may be embodied.
  • the terminal 800 includes a display 810 that is controlled by a data processor 820 , such as a microprocessor, microcontroller, digital signal processor (DSP), or graphics processor, and associated memory 830 .
  • a texture processor circuit 822 here shown as implemented in the processor 820 , stores and retrieves texel block information in and from the memory 830 .
  • a display generator circuit 824 here also shown as implemented in the processor 820 , controls the display 810 responsive to the texture processor circuit 822 .
  • the texture processor 822 circuit may be configured to perform texture compression and decompression, block overlapping and texture filtering techniques described herein.
  • FIG. 8 is provided for exemplary purposes, and that the invention may be embodied in any of a number of other forms.
  • the invention is equally amenable to application in other types of devices that generate graphics displays, including, but not limited to, desktop PCs and workstations, laptop, notebook, tablet and other portable computers, personal digital assistants (PDAs), and e-book readers and other portable graphic devices.
  • PDAs personal digital assistants
  • FIG. 6 is merely exemplary, and that a variety of architectures, such as architectures that use special-purpose dedicated graphics hardware to generate graphic displays, may be used with the invention.
  • the texture compression, texel block arrangement and texture filtering described herein may be used individually or in combination, and these operations may be applied in any of a number of different graphics processing environments, including that shown in the wireless terminal 800 of FIG. 8 .
  • FIG. 9 illustrates exemplary texture processing operations according to some embodiments of the present invention, which may be implemented, for example, by the processor 820 and memory 830 of the wireless terminal of FIG. 8 .
  • Respective data elements e.g., 32-bit words including RGB color information as described above
  • Block 910 Each of the data elements includes first and second texel reference values and one or more texel mapping values for the texels in the block, wherein the one or more texel values map 3-tuples of the texels to 3-tuples of ternary index values.
  • Each index value refers to either the first texel reference value, the second texel reference value or a third texel reference value that is determined by the first and second reference values, e.g., as an arithmetic mean of the first and second texel reference values.
  • the texel values may include, but are not limited to, RGB color values, gray scale values, and/or other representational forms commonly used in graphics applications.
  • Texturing of a pixel begins with retrieval of the data element or elements associated with the texel block or blocks including nearest neighbor texels, e.g., nearest four neighbors, for the pixel (Block 920 ).
  • the texel mapping values in the retrieved data element(s) are then mapped to 3-tuples of the texel reference values (Block 930 ).
  • a first mipmap value is bilinearly interpolated from the texel values for the nearest neighbor texels (Block 940 ) and a second mipmap value is generated by averaging the texel values for the nearest neighbor texels (Block 950 ).
  • a pixel value for the pixel is linearly interpolated from the first and second mipmap values (Block 960 ), and the generated pixel value is used to display the pixel (Block 970 ).
  • FIG. 9 illustrates combined use of the novel texture compression, overlapping texel block arrangements, and texture filtering techniques of the present invention
  • novel texture compression techniques of the present invention can be used with a conventional, non-overlapping texel block arrangement and conventional bilinear, trilinear or other texture filtering techniques.
  • conventional texture storage and/or compression and conventional texture filtering techniques can be used with the novel texel block arrangements of the present invention.
  • conventional texture storage and/or compression techniques and conventional texel block arrangements can be used with the novel texture filtering techniques of the present invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A pixel is textured by storing a first texel reference value, a second texel reference value, and texel mapping values where each texel mapping value represents a k-tuple of (ternary) references to the first texel reference value, the second texel reference value and a third texel reference value to thereby represent a block of texels. A pixel value for the pixel is generated from the stored texel values and the pixel is displayed responsive to the generated pixel value. In some embodiments, respective pluralities of texel reference values and texel mapping values that map thereto are stored for respective ones of a plurality of overlapping blocks of texels. In further embodiments, a first mipmap value for a pixel is bilinearly interpolated from the retrieved texel values for the set of nearest neighbor texels. A second mipmap value for the pixel is generated by averaging the retrieved texel values for the set of nearest neighbor texels. A pixel value for the pixel is generated by interpolating between the first and second mipmap values. The present invention may be embodied as methods, apparatus and computer program products.

Description

RELATED APPLICATION
The present application claims priority from U.S. Provisional Application Ser. No. 60/387,049 to Akenine-Möller et al, entitled “POOMA TEXTURE FILTERING SYSTEM,” filed Jun. 7, 2002, hereby incorporated by reference in its entirety.
BACKGROUND OF THE INVENTION
1. Technical Field of the Invention
The present invention relates to computer graphics, and more particular, to graphics texture processing methods, apparatus and computer program products.
2. Description of Related Art
The real-time rendering of three-dimensional graphics has a number of appealing applications on mobile terminals, including games, man-machine interfaces, messaging and m-commerce. Since three-dimensional rendering is a computationally expensive task, dedicated hardware must often be built to reach sufficient performance. Innovative ways of lowering the complexity and bandwidth usage of this hardware architecture are thus of great importance.
One standard way of increasing the level of realism in real-time rendering is to apply textures to the surfaces. This can be done in a variety of ways, including environment mapping, bump mapping, texturing via automatic texture coordinate generation, projection-based texturing, and more. Common to all different ways of using textures is that high quality texture filtering may be needed to reduce aliasing problems. Aliasing may be extremely disturbing for the human viewer, especially for dynamic scenes.
A commonly used scheme for texture filtering that is implemented in hardware is mipmapping and, in the form of trilinear mipmapping, this provides relatively high quality filtering. A disadvantage is that overblurring can occur. However, it should be noted that this may be preferred over aliasing. Mipmapping is discussed for example by Lance Williams in “Pyramidal Parametrics,” (Computer Graphic, SIGGRAPH '83 Proceedings, pp. 1-11, July 1983), the disclosure of which is hereby incorporated herein in its entirety by reference.
Trilinear mipmapping requires eight texels that are filtered into one color that is used, and thus, in the worst case, eight memory reads can be needed before the filtered color is obtained. Texture caches with prefetching can hide this problem, but such techniques may be expensive in hardware.
Anisotropic filtering schemes may reduce or eliminate overblurring by, e.g., filtering several trilinear mipmap samples. The ultimate goal is that those together may perfectly cover the quadrilateral that is obtained from projecting a pixel to texture space. While increasing quality, a number of memory reads may increase dramatically. Common numbers range from 16-128 texel reads.
Aspects of rendering, texture filtering, texture mapping, and/or parametrics are discussed in the following references: Akenine-Möller, Tomas, and Eric Haines, Real-Time Rendering, 2nd edition, June 2002; Beers, Andrew C., Maneesh Agrawala, and Navin Chaddha, “Rendering from Compressed Textures,” Computer Graphics (SIGGRAPH 96 Proceedings), pp. 373-378, August 1996; Behrens, Uwe, “Averaged Area Tables for Texture Filtering,” SIGGRAPH 2001 Conference Abstracts and Applications, p. 150, 2001; Crow, Franklin C., “Summed-Area Tables for Texture Mapping,” Computer Graphics (SIGGRAPH '84 Proceedings), pp. 207-212, July 1984; McCabe, Dan, and John Brothers, “DirectX 6 Texture Map Compression,” Game Developer Magazine, vol. 5, no. 8, pp. 42-46, August 1998; and Williams, Lance, “Pyramidal Parametrics,” Computer Graphics (SIGGRAPH '83 Proceedings), pp. 1-11, July 1983. The disclosures of each of these references are hereby incorporated herein in their entirety by reference.
For mobile platforms, memory accesses can be extremely expensive. On a standard computer graphics architecture, more than two thirds of the memory accesses can be due to texturing. In the example of trilinear mipmapping for instance, texturing may require eight memory accesses, whereas the rest of the rasterizer may require another three (z-read, z-write and colorbuffer write). With eleven memory accesses per pixel, the memory bandwidth need be very high to obtain reasonable performance. A high clock speed may cost a lot of power and may not be suitable for mobile platforms. It may thus be desirable to reduce the number of memory accesses that are needed for texturing, while maintaining a texture quality that is similar to trilinear mipmapping.
Texture compression is a means often used to save bandwidth in graphics hardware. The idea is that the texel values (which may comprise of, for example, RGB color values, gray scale values or other graphics representations) are stored in a compressed format in the memory, and this can reduce the bandwidth needed when the texture is sent over the bus. When the data reaches the destination, a hardware mechanism can decompress the texel data.
Pioneering work is discussed by Andrew C. Beers et al. in “Rendering from Compressed Textures,” (Computer Graphics, SIGGRAPH 96 Proceedings, pp. 373-378, August 1996), the disclosure of which is hereby incorporated herein in its entirety by reference. Beers et al. discuss using vector quantization, and training the vector set using a number of images.
S3 Graphics Co., Ltd., has invented a texture compression scheme, which is often called S3TC (S3 Texture Compression). S3TC is discussed for example by McGabe et al. in “DirectX 6 Texture Map Compression” (Game Developer Magazine, vol. 5, no. 8, pp. 42-46, August 1998), the disclosure of which is hereby incorporated herein in its entirety by reference. The S3TC has been incorporated into DirectX, where it is called DXTC. The S3TC scheme compresses textures, that is, images that are “glued” onto geometric primitives (e.g., triangles) during rendering. The texture image is divided into 4×4 texel blocks, and each such block is compressed individually into 8 bytes. This may be done as follows. First, two texel reference values are stored in 16 bits each. Each texel reference value may for example be color encoded as red (5 bits), green (6 bits), and blue (5 bits). During decompression, an additional two texel reference values are computed in between the two stored texel reference values. This means that each 4×4 block has access to a total of four texel reference values (e.g., colors). Therefore, each of the 16 (4×4) texels can be encoded as an index into this “palette” of 4 texel reference values. Each index can be coded with 2 bits, and we call these indices texel index values. Each block requires 16+16+4*4*2=64 bits=8 bytes. Without compression, each block requires 3 bytes per texel, which gives 3*16=48 bytes. The compression ratio is thus 1:6.
S3TC decompression may proceed as follows, assuming rendering to a 24-bit display. Colors stored with 16 bits may be converted to 24 bits by zero-padding, although other ways to do this exist.
Assuming that the decompression algorithm receives a 64-bit sequence (00000 000000 00000 10000 100000 00000 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11) as an input, the first two 16-bit values are the two texel reference values (colors), which, after zero padding, equals RGB1=(0, 0, 0) and RGB2=(128, 128, 0). Two more reference values may be found by taking:
RGB3=⅔*RGB1+⅓*RGB2=(45 45 0) and
RGB4=⅓*RGB1+⅔*RGB2=(82 82 0).
Next come the texel index values, one for each texel, each coded with two bits, in row order. In this case, all the texels in the first row have the value 00, which means that RGB1=(0, 0, 0) will be picked. The next row is all RGB2 etc. Finally, the decoded block will have the texel values shown in Table 0:
TABLE 0
(0, 0, 0) (0, 0, 0) (0, 0, 0) (0, 0, 0)
(128, 128, 0) (128, 128, 0) (128, 128, 0) (128, 128, 0)
(45,45, 0) (45, 45, 0) (45, 45, 0) (45, 45, 0)
(82, 82, 0) (82, 82, 0) (82, 82, 0) (82, 82, 0)
SUMMARY
According to some embodiments of the present invention, a block of texel values is stored by storing a first texel reference value, a second texel reference value, and one or more texel mapping values where each texel mapping value represents a 3-tuple of ternary index values. Each texel mapping value represents a k-tuple of references to the first texel reference value, the second texel reference value and/or a third texel reference value. A pixel value for the pixel is generated from the stored texel mapping values and the stored texel reference values, and the pixel is displayed responsive to the generated pixel value. The third texel reference value may be mathematically determined by the first and second texel reference values, e.g., the third texel reference value may represent an arithmetic mean of the first and second texel reference values. Texel reference values may comprise, for example, RGB color values, gray scale values, or other graphics representations.
In further embodiments of the present invention, respective pluralities of texel reference values and texel mapping values that map thereto are stored for respective ones of a plurality of overlapping blocks of texel values. In some embodiments, pixel values for pixels in a pixel map may be generated from stored texel values for sets of nearest neighbor texels in the plurality of overlapping blocks of texels, wherein the texel blocks overlap such that generating a color value for any pixel in the pixel map requires stored texel values for no more than a single block of texels. In further embodiments, pixel values may be generated for pixels in a pixel map from stored texel values for sets of nearest neighbor texels in the plurality of overlapping blocks of texels, wherein the texel blocks overlap such that generating a color value for any pixel in the pixel map requires stored texel values for no more than two blocks of texels.
According to still further embodiments of the invention, a first mipmap value for a pixel is bilinearly interpolated from retrieved texel values for a set of nearest neighbor texel values. A second mipmap value for the pixel is generated by averaging the retrieved texel values for the set of nearest neighbor texel values. A pixel value for the pixel is generated by interpolating between the first and second mipmap values.
Texture compression, block overlapping and texture filtering techniques according to the present invention can be used individually and/or in combination. The present invention may be embodied as methods, apparatus and computer program products. For example, the present invention may be advantageously used in a handheld device, such as a wireless terminal, personal digital assistant (PDA), or the like.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a storage representation for a texel block according to some embodiments of the present invention.
FIG. 2 illustrates two exemplary 3-tuples of ternary texel value mapping values according to further embodiments of the present invention.
FIG. 3 illustrates an exemplary pixel/texel relationship.
FIG. 4 illustrates an overlapping texel block arrangement according to some embodiments of the present invention.
FIG. 5 illustrates a sample point for a pixel in a texture map according to exemplary embodiments of the present invention.
FIG. 6 illustrates an exemplary set of nearest neighbor texel values according to some embodiments of the present invention.
FIG. 7 illustrates a pixel location for texture filtering purposes according to some embodiments of the present invention.
FIG. 8 illustrates a wireless terminal configured to provide texture processing according to some embodiments of the present invention.
FIG. 9 is a flowchart illustrating exemplary texture processing operations according to further embodiments of the present invention.
DETAILED DESCRIPTION
The present invention will now be described more fully with reference to the accompanying drawings, in which exemplary embodiments of the present invention are shown. These embodiments are provided so that this application will be thorough and complete. Like numbers refer to like elements throughout.
According to various embodiments of the present invention described herein, novel approaches to texture filtering are presented that can significantly reduce bandwidth usage. Aspects of the invention can include:
Texture Compression; and/or
Texture Block Overlapping; and/or
Texture Filtering.
These three aspects can be combined according to embodiments of the present invention to provide a Poor Man's Texture Filtering System (POOMA). A brief summary of exemplary embodiments of such a system will first be given, and greater detail of how aspects of the present invention can be built will follow.
In some embodiments of the present invention, a texture image can be divided into small blocks (e.g. 3×2 texels), and texture compression can be used to reduce the memory bandwidth needed to fetch such a block, typically down to one 32-bit memory read. The next step, texture overlapping, can amount to making the blocks overlapping, so that every 2×2-neighbor group of texel values is always completely contained in one of the blocks. This makes it possible to do bilinear filtering with one memory access. Texture filtering as described herein provides a way of filtering four texel values to obtain the color of the pixel. Just as in the case of mipmapping, bilinear filtering on the four pixels can be used on the bottom mipmap level. However, instead of fetching texel values from the upper mipmap level, the average of the four recently read texel values is computed and that value is used instead. The result can provide a significantly better texturing than using nearest neighbor mipmapping, and can produce almost as good results as trilinear mipmapping. The cost may only be one 32-bit memory read per filtered color, compared to two for nearest neighbor mipmapping (poor quality) and eight for trilinear mipmapping (high quality).
A. Texture Compression
Aspects of texture compression decoders according to embodiments of the present invention described herein can read an entire block in just one 32-bit memory transfer. In the example of a 32-bit architecture, the following features taken alone or in combination, allow the ratio 1 block/memory transfer:
    • The block size is significantly smaller, e.g. 2×3 texels;
    • Three colors (two reference colors plus one in between) are used instead of four;
    • The reference colors are coded with 11 bits per color instead of 16; and/or
    • The three colors are coded with a ternary representation (as opposed to a binary representation).
      These modifications make it possible to read an entire block in one 32-bit memory transfer (four bytes).
Before describing more in detail how a block can be stored, ternary representation will be explained. When going from 64 to 32 bits, it becomes undesirable to store two bits per index value for each texel. Having two bits means that each index value can assume one of four values. Instead, we allow only three different values. Either the index value refers to the first texture reference value, the second texture reference value, or a third texture reference value that can be a function of the first two reference values, e.g., the arithmetic average of the first two values. Each index variable is then ternary, since it can assume one of three possible values. Storing a single ternary value in a binary representation can be wasteful—two bits are needed, which is no better than the S3TC method.
To overcome this problem, a texture mapping value may be introduced. Each texture mapping value represents a small group (“tuple”) of index values. By lumping together ternary index values, they can be stored more efficiently in a binary representation. For instance, a 3-tuple (group of three) of ternary index variables can be stored in five bits, since the number of possible combinations, 3^3=27, is smaller than 32. In this way, a 3-tuple of ternary symbols can be represented using five bits. Those skilled in the art will understand that it is also possible to use 4-tuples, 5-tuples, and 6-tuples. In general, it is possible to represent a k-tuple of ternary symbols using ceiling (log(3k)/log(2)) bits. In our example we have used 3-tuples, since this creates a look-up table of desirable size.
A 2×3 block of texel values can be represented using a data element 100 as shown in FIG. 1. In FIG. 1, the bits marked with rL, gL and bL represent the red, green and blue components of a first reference color, here marked with “L” as in “left”. In the same way, the bits marked with rR, gR and bR represent a second reference color, marked with “R” as in “right”. From these two colors, a “middle” reference color is created, by taking the arithmetic mean of R and L. This new reference color is denoted “M” as in “middle”.
Moreover, the bits marked with x in FIG. 1 represent the first texel mapping value, which represents the texel index values of three of the texels in the block. For instance, we can choose that the top most three texels get their color from x, and that the lower-most texels are controlled by y. Both x and y are mapped to three-tuples of L, M and R by using Table 1. The range from 27 through 31 is not used.
TABLE 1
 0: LLL
 2: LLR
 3: LML
 4: LMM
 5: LMR
 6: LRL
 7: LRM
 8: LRR
 9: MLL
10: MLM
11: MLR
12: MML
13: MMM
14: MMR
15: MRL
16: MRM
17: MRR
18: RLL
19: RLM
20: RLR
21: RML
22: RMM
23: RMR
24: RRL
25: RRM
26: RRR
27: —
28: —
29: —
30: —
31: —
An exemplary decoding process for a texel block will now be explained. Again, we will assume that conversion from 11 to 24 bits of color will be performed with zero padding for simplicity, but those skilled in the art will understand that other, better schemes for color conversion exist.
Assume that the decompression algorithm gets the 32-bit sequence (0000 0000 000 10111 1000 1000 000 00000) as an input. According to the bit layout in FIG. 1, the first texel reference value equals (0000 0000 000). Converted to 24 bits using zero padding, R=(the “right” color)=(0, 0, 0). Likewise, the second texel reference value is (1000 1000 000), which, after conversion to 24 bits, yields L=(the “left” color)=(128, 128 0). From these two texel reference values, a third reference value is created by using M=(the “middle” color)=(R+L)/2=(64, 64, 0).
Examining FIG. 1 again, there are two texel mapping values; x=23 (10111) and y=0 (00000). Starting with x, Table 1 indicates that 23 corresponds to the 3-tuple (R, M, R). This means that the indices for the top three texels in the block are R, M, and R, respectively. Doing the same for y shows that the lower three texels in the block have indices L, L, and L. Thus, the index values for the texels in the block may be decoded from the texel mapping values as shown in Table 2:
TABLE 2
R M R
L L L
Each index value relates to one of the texel references values. For instance, the first texel has an index value “R” and should be given the texel value (0, 0, 0). Thus, after decoding, the block will have the texel values show in Table 3:
TABLE 3
(0, 0, 0) (64, 64, 0) (0, 0, 0)
(128, 128, 0) (128, 128, 0) (128, 128, 0)

This allows 2×3=6 texel values to be read in just one 32-bit memory transfer. With 32 bits for the entire 2×3 block, compared to 16 bits per texel value, the compression ratio is 32:16×2×3, i.e., 1:3. Note that, if the texture is magnified, there is a rather big chance that the next pixel will address the same block. Thus, zero memory transfers may be needed for the texturing of that pixel.
B. Texture Block Overlapping
When doing conventional bilinear interpolation, the four texel values closest to the pixel's sample point in the texture map may be needed. For example, as shown in FIG. 3, if the sample point of a pixel is within the gray area 310, all four of the nearest neighbor texel color values are found in the same block, and just one memory transfer is necessary. However, it may be necessary to fetch up to four blocks in order to get all the closest neighbors.
In FIG. 4, it is shown how blocks can be laid out in an overlapping fashion according to embodiments of the invention to avoid additional reads for bilinear interpolation. The block 400 a marked with a solid line thus overlaps both the block 400 b marked with square dashes (to the right), and the block 400 c marked with round dashes (underneath). For instance, the first 32-bit word in the memory can represent the block 400 a, and the following 32-bit word in the memory can represent block 400 b. In this fashion, it is always possible to find one 32-bit word that represents a block that contains all the four neighbors of a certain pixel's sample point. The four neighbors can thus be accessed in just one memory fetch.
This may come at the cost of expanding the data 1.5 times in the x-direction and 2 times in the y-direction. However, since the compression ratio of the texture compression is 1:3, we will end up with the same memory requirements as if neither texture compression nor texture overlapping were used.
Overlapping may be limited to one direction. For instance, by overlapping only in the x-direction, data is only expanded by a factor of 1.5. (Including the compression, the total storage is only 0.5 of the original.) Then, in 50% of the cases, all four texels are inside the block. In the remaining cases, another block must be read. Table 4 shows what memory requirements and what average bandwidth may be needed.
TABLE 4
Memory Memory
Data Data storage bandwidth
Overlap expansion compression requirements (32 bit words)
x, y 1.5 × 2 = 3 1 = 100% 1
y 2 ⅔ = 66% 1.33
x 1.5 ½ = 50% 1.5
no overlap 1 ⅓ = 33% 2
We will now give an example of how the texture overlapping can work in practice. Assuming that the sample point of a pixel is situated as indicated by the cross in FIG. 5, the block 520 indicated with a solid outline contains the four nearest neighbor texels 103, 104, 110, 111.
It is desirable to fetch the nearest neighbor texels 103, 104, 110 and 111. The texel blocks may be stored in an overlapping fashion. For instance, the representation for the texels in FIG. 5 can be laid out in the memory such as:
 0xffa7b043 0x00178800 0xfa8787fa,
where, referring to FIG. 5, 0xffa7b043 represents the block 510 marked with a dotted outline, 0x00178800 corresponds to the block 520 marked with a solid outline, and 0xfa8787fa corresponds to the block 530 marked with a dashed outline. In order to obtain all the nearest neighbor texels, the block marked 520 with a solid outline should be read. Thus, the value compression 0x00178800 should be from the memory. This may then be decoded according to the exemplary techniques described above.
C. Texture Filtering
Once the four texel value neighbors of the pixel's sample point have been acquired, texturing can begin. Denoting the four nearest neighbor texel values with A, B, C and D as shown in FIG. 6, by using bilinear interpolation over A, B, C and D, a first, a lower level mipmap value Q can be obtained. By averaging A, B, C and D, a second, upper level mipmap value P can be obtained. A linear interpolation may be performed between the first and second mipmap values Q and P to determine a value for the pixel, depending upon how close the pixel is to the lower- and upper-mipmap levels.
Note that, if A is on even positions in both x and y direction in the texel map on a certain mipmap level, P will be the corresponding texel in the mipmap hierarchy one level up. In this case, the result will be equal to that of using bilinear interpolation in the lower mipmap level and nearest neighbor interpolation in the higher mipmap level. However, if A is not on even positions in both x and y direction, a value may be obtained that is more correct than just using nearest neighbor in the higher mipmap level. Thus the quality may be improved over using bilinear interpolation in the lower level and nearest neighbor interpolation in the upper level.
Sometimes, the result of the aforedescribed POOMA texture filtering even looks better than trilinear filtering, since the overblurring may not be as severe. Note that this texturing filtering may halve the number of memory transfers independently of texture compression and texture block overlapping.
According to aspects of the present invention, an ability to gain bits in the representation of the texels may be provided by using 3 levels (L, M and R) instead of four levels. The ternary representation may use only ceil(log(3^k)/log(2)) bits for k texels, instead of 2*k bits that may be required when four levels are used. This increases compression efficiency per block. According to other aspects, use of overlapping blocks may make it possible to lower the average number of blocks that need to be accessed in order to render a pixel down to one 32-bit memory access per pixel. According to yet additional aspects, filtering of the four neighboring texel values can be used to produce the pixel color. This means that only one mip-map level may need to be accessed per pixel, instead of two as in the case of trilinear mipmapping, thereby halving the number of memory accesses required. It will be appreciated that these features can be used in various combinations and/or separately.
An example of how a pixel value is calculated will now be explained. Assume that the sample point of the pixel is situated at the cross in block 520 as shown in FIG. 5. Assume further that we have already decoded the texel values for the block, and that they are as shown in Table 5:
TABLE 5
(0, 0, 0) (64, 64, 0) (0, 0, 0)
(128, 128, 0) (128, 128, 0) (128, 128, 0)
A first mipmap value can be calculated by bilinearly interpolating among the left most four texel values in the block. This can be done the following way. Assume that the pixel is situated according to the “x” in FIG. 7. Then the bilinear coordinates are 0.3 and 0.4, respectively: mipmap1 = ( 1 - 0.4 ) × ( ( 1 - 0.3 ) × ( 0 , 0 , 0 ) + 0.3 × ( 128 , 128 , 0 ) ) + 0.4 × ( ( 1 - 0.3 ) × ( 64 , 64 , 0 ) + 0.3 × ( 128 , 128 , 0 ) ) = ( 56 , 56 , 0 )
After this, a second mipmap value can be calculated by averaging the four left most texel values in the block: mipmap2 = ( ( 0 , 0 , 0 ) + ( 64 , 64 , 0 ) + ( 128 , 128 , 0 ) + ( 128 , 128 , 0 ) ) / 4 = ( 80 , 80 , 0 )
The two mipmap values can be linearly interpolated to get a pixel value. The coefficients in this linear interpolation depend on proximity to the different mipmap levels. Assuming that the lower level is 0.2 away and the higher level is 0.8 away, then: pixel = ( 1 - 0.2 ) × mipmap1 + ( 1 - 0.8 ) × mipmap2 = 0.8 × ( 56 , 56 , 0 ) + 0.2 × ( 80 , 80 , 0 ) = ( 61 , 61 , 0 ) .
Thus, (61, 61, 0) is the pixel value that is drawn to the screen.
D. Exemplary Implementations
In the present application, FIGS. 8 and 9 are diagrams illustrating exemplary apparatus and operations according to embodiments of the present invention. It will be understood that operations depicted in the diagrams, and combinations thereof, may be implemented using one or more electronic circuits, such as a circuits included in a component of a wireless communications system or in a wireless terminal. It will also be appreciated that, in general, operations depicted in the diagrams, and combinations thereof, may be implemented in one or more electronic circuits, such as in one or more discrete electronic components, one or more integrated circuits (ICs), one or more application specific integrated circuits (ASICs), and application specific circuit modules, as well as by computer program instructions which may be executed by a computer or other data processing apparatus, such as a microprocessor or digital signal processor (DSP), to produce a machine such that the instructions which execute on the computer or other programmable data processing apparatus create electronic circuits or other means that implement the specified operations. The computer program instructions may also be executed on one or more computers or other data processing apparatus to cause a series of actions to be performed by the computer(s) or other programmable apparatus to produce a computer implemented process that includes the specified operations.
The computer program instructions may also be embodied in the form of a computer program product in a computer-readable storage medium, i.e., as computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. The computer-readable storage medium may include, but is not limited to, electronic, magnetic, optical or other storage media, such as a magnetic or optical disk or an integrated circuit memory device. For example, the computer program instructions may be embodied in memory included in a component of a wireless communications apparatus and/or storage medium operable to program such memory. Accordingly, blocks of the schematic diagrams of FIGS. 6 and 7 support electronic circuits and other apparatus that perform the specified operations, acts for performing the specified operations, and computer program products configured to perform the specified operations.
FIG. 8 illustrates a wireless terminal 800 in which the present invention may be embodied. The terminal 800 includes a display 810 that is controlled by a data processor 820, such as a microprocessor, microcontroller, digital signal processor (DSP), or graphics processor, and associated memory 830. A texture processor circuit 822, here shown as implemented in the processor 820, stores and retrieves texel block information in and from the memory 830. A display generator circuit 824, here also shown as implemented in the processor 820, controls the display 810 responsive to the texture processor circuit 822. The texture processor 822 circuit may be configured to perform texture compression and decompression, block overlapping and texture filtering techniques described herein.
It will be appreciated that the apparatus of FIG. 8 is provided for exemplary purposes, and that the invention may be embodied in any of a number of other forms. For example, the invention is equally amenable to application in other types of devices that generate graphics displays, including, but not limited to, desktop PCs and workstations, laptop, notebook, tablet and other portable computers, personal digital assistants (PDAs), and e-book readers and other portable graphic devices. It will be further appreciated that the graphics processing architecture illustrated in FIG. 6 is merely exemplary, and that a variety of architectures, such as architectures that use special-purpose dedicated graphics hardware to generate graphic displays, may be used with the invention. According to various embodiments of the present invention, the texture compression, texel block arrangement and texture filtering described herein may be used individually or in combination, and these operations may be applied in any of a number of different graphics processing environments, including that shown in the wireless terminal 800 of FIG. 8.
FIG. 9 illustrates exemplary texture processing operations according to some embodiments of the present invention, which may be implemented, for example, by the processor 820 and memory 830 of the wireless terminal of FIG. 8. Respective data elements (e.g., 32-bit words including RGB color information as described above) are stored for respective ones of a plurality of overlapping texel blocks (Block 910). Each of the data elements includes first and second texel reference values and one or more texel mapping values for the texels in the block, wherein the one or more texel values map 3-tuples of the texels to 3-tuples of ternary index values. Each index value refers to either the first texel reference value, the second texel reference value or a third texel reference value that is determined by the first and second reference values, e.g., as an arithmetic mean of the first and second texel reference values. It will be appreciated that the texel values may include, but are not limited to, RGB color values, gray scale values, and/or other representational forms commonly used in graphics applications.
Texturing of a pixel begins with retrieval of the data element or elements associated with the texel block or blocks including nearest neighbor texels, e.g., nearest four neighbors, for the pixel (Block 920). The texel mapping values in the retrieved data element(s) are then mapped to 3-tuples of the texel reference values (Block 930). A first mipmap value is bilinearly interpolated from the texel values for the nearest neighbor texels (Block 940) and a second mipmap value is generated by averaging the texel values for the nearest neighbor texels (Block 950). A pixel value for the pixel is linearly interpolated from the first and second mipmap values (Block 960), and the generated pixel value is used to display the pixel (Block 970).
Although FIG. 9 illustrates combined use of the novel texture compression, overlapping texel block arrangements, and texture filtering techniques of the present invention, it will be appreciated that use of subsets of these techniques in combination with conventional techniques falls within the scope of the present invention. For example, the novel texture compression techniques of the present invention can be used with a conventional, non-overlapping texel block arrangement and conventional bilinear, trilinear or other texture filtering techniques. Similarly, conventional texture storage and/or compression and conventional texture filtering techniques can be used with the novel texel block arrangements of the present invention. Finally, conventional texture storage and/or compression techniques and conventional texel block arrangements can be used with the novel texture filtering techniques of the present invention.
In the drawings and specification, there have been disclosed exemplary embodiments of the invention. Although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation.

Claims (32)

1. A method of texturing a pixel, comprising:
storing a first texel reference value, a second texel reference value, an one or more texel mapping values to thereby represent a block of texels, wherein each texel mapping value maps k texels to a k-tuple of texel reference values derivable from the first texel reference value and the second texel reference value;
generating a pixel value for the pixel from the stored texel reference and texel mapping values; and
displaying the pixel responsive to the generated pixel value.
2. A method according to claim 1, where n the k-tuple of texel reference values includes a third texel reference value mathematically determined by the first and second texel reference values.
3. A method according to claim 2, wherein the third texel reference value represents an arithmetic mean of the first and second texel reference values.
4. A method according to claim 1, where storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises storing a first RGB color reference value, a second RGB color reference value, and two texel mapping values for a 2×3 block of texels, wherein each of the two texel mapping values maps three texels to a 3-tuple of the first RGB color reference value, the second RGB color reference value and a third RGB color reference value.
5. A method according to claim 4, wherein storing a first RGB color reference value, a second RGB color reference value, and two texel mapping values comprises storing the first RGB color reference value, the second RGB color reference value and the two texel mapping values for a 2×3 block of texels in a single 32-bit word.
6. A method according to claim 1, wherein storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises storing respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels.
7. A method according to claim 1:
wherein storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises storing respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels; and
wherein generating a pixel value for the pixel comprises:
processing stored texel reference and texel mapping values for at least one texel block to obtain texel values for a set of nearest neighbor texels for the pixel;
bilinearly interpolating a first mipmap value for the pixel from the texel values for the set of nearest neighbor texels;
averaging the texel values for the set of nearest neighbor texels to generate a second mipmap value; and
interpolating between the first and second mipmap values to generate the pixel value for the pixel.
8. An apparatus, comprising:
a display;
means for storing a first texel reference value, a second texel reference value, and one or more texel mapping values to thereby represent a block of texels, wherein each texel mapping value maps k texels to a k-tuple of texel reference values derivable from the first texel reference value and the second texel reference value;
means for generating a pixel value for the pixel from the stored texel values; and
means for displaying the pixel on the display responsive to the generated pixel value.
9. An apparatus according to claim 8, wherein the means for storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises means for storing a first RGB color reference value, a second RGB color reference value, and one or more texel mapping values wherein each texel mapping value maps 3 texels to a 3-tuple of the first RGB color reference value, the second RGB color reference value and a third RGB color reference value.
10. An apparatus according to claim 8, wherein the means for storing, the means for generating a pixel value, and the means for displaying are implemented in a wireless terminal.
11. An apparatus according to claim 9, wherein the means for storing a first RGB color reference value, a second RGB color reference value, and two texel mapping values comprises means for storing the first RGB color reference value, the second RGB color reference value and the two texel mapping values for a 2×3 block of texels in a single 32-bit word.
12. An apparatus according to claim 8, wherein the k-tuple of texel reference values includes a third texel reference value mathematically determined by the first and second texel reference values.
13. An apparatus according to claim 12, wherein the third texel reference value represents an arithmetic mean of the first and second texel reference values.
14. An apparatus according to claim 8, wherein the means for storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises means for storing respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels.
15. An apparatus according to claim 8:
wherein the means for storing a first texel reference value, a second texel reference value, and one or more texel mapping values comprises means for storing respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels; and
wherein the means for generating a pixel value for the pixel comprises:
means for processing stored texel reference and texel mapping values for at least one texel block to obtain texel values for a set of nearest neighbor texels for the pixel;
means for bilinearly interpolating a first mipmap value for the pixel from the texel values for the set of nearest neighbor texels;
means for averaging the texel values for the set of nearest neighbor texels to generate a second mipmap value; and
means for interpolating between the first and second mipmap values to generate the pixel value for the pixel.
16. A wireless terminal including an apparatus according to claim 8.
17. An apparatus, comprising:
a display;
a memory;
a texture processor circuit operative to store in the memory a first texel reference value, a second texel reference value, and one or more texel mapping values to thereby represent a block of texels, wherein each texel mapping value maps k texels to a k-tuple of texel reference values derivable from the first texel reference value and the second texel reference value, and further operative to generate a pixel value for the pixel from the stored texel mapping values; and
a display generator circuit operative to display the pixel on the display responsive to the generated pixel value.
18. An apparatus according to claim 17, wherein the k-tuple of texel reference values includes a third texel reference value mathematically determined by the first and second texel reference values.
19. An apparatus according to claim 18, wherein the third texel reference value represents an arithmetic mean of the first and second texel reference values.
20. An apparatus according to claim 17, wherein the texture processor circuit is operative to store a first RGB color reference value, a second RGB color reference value, and two texel mapping values for a 2×3 block of texels, wherein each of the two texel mapping values maps three texels to a 3-tuple of the first RGB color reference value, the second RGB color reference value and a third RGB color reference value.
21. An apparatus according to claim 20, wherein the texture processor circuit is operative to store the first RGB color reference value, the second RGB color reference value and the two texel mapping values for a 2×3 block of texels in a single 32-bit word.
22. An apparatus according to claim 17, wherein the texture processor circuit is operative to store respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels.
23. An apparatus according to claim 17, wherein the texture processor circuit is operative to store respective first texel reference values, second texel reference values and one or more texel mapping values of respective ones of a plurality of overlapping blocks of texels, to process stored texel reference and texel mapping values for at least one texel block to obtain texel values for a set of nearest neighbor texels for the pixel, to bilinearly interpolate a first mipmap value for the pixel from the texel values for the set of nearest neighbor texels, to average the texel values for the set of nearest neighbor texels to generate a second mipmap value, and to interpolate between the first and second mipmap values to generate the pixel value for the pixel.
24. A wireless terminal comprising an apparatus according to claim 17.
25. A computer program product for texturing a pixel, the computer program product comprising computer-readable program code embodied in a computer-readable program storage medium, the computer-readable program code comprising:
program code configured to store a first texel reference value, a second texel reference value, and one or more texel mapping values to thereby represent a block of texels, wherein each texel mapping value maps k texels to a k-tuple of texel reference values derivable from the first texel reference value and the second texel reference value;
program code configured to generate a pixel value for the pixel from the stored texel reference and texel mapping values; and
program code configured to cause a display of the pixel responsive to the generated pixel value.
26. A computer program product according to claim 25, wherein the program code configured to store a first texel reference value, a second texel reference value, and one or more mapping values comprises program code configured to store respective first texel reference values, second texel reference values and texel mapping values for texels of respective ones of a plurality of overlapping blocks of texels.
27. A computer program product according to claim 25,
wherein the program code configured to store a first texel reference value, a second texel reference value, and one or more texel mapping values comprises program code configured to store respective first texel reference values, second texel reference values and texel mapping values for texels of respective ones of a plurality of blocks of texels; and
wherein the program code configured to generate a pixel value for the pixel comprises:
program code configured to process stored texel reference and mapping values for at least one texel block to obtain texel values for a set of nearest neighbor texels for the pixel;
program code configured to bilinearly interpolate a first mipmap value for the pixel from the texel values for the set of nearest neighbor texels;
program code configured to average the texel values for the set of nearest neighbor texels to generate a second mipmap value; and
program code configured to interpolate between the first and second mipmap values to generate the pixel value for the pixel.
28. A computer program product according to claim 25, wherein the k-tuple of texel reference values includes a third texel reference value mathematically determined by the first and second texel reference values.
29. A computer program product according to claim 28, wherein the third texel reference value represents an arithmetic mean of the first and second texel reference values.
30. A computer program product according to claim 25, wherein the program code configured to store a first texel reference value, a second texel reference value, and one or more texel mapping values comprises program code configured to store a first RGB color reference value, a second RGB color reference value, and two texel mapping values for a 2×3 block of texels, wherein each of the two texel mapping values maps three texels to a 3-tuple of the first RGB color reference value, the second RGB color reference value and a third RGB color reference value.
31. A computer program product according to claim 30, wherein the program code configured to store a first RGB color reference value, a second RGB color reference value, and two texel mapping values comprises program code configured to store the first RGB color reference value, the second RGB color reference value and the two texel mapping values for a 2×3 block of texels in a single 32-bit word.
32. A computer program product according to claim 25, wherein the computer-readable program code embodied in a computer-readable storage medium is configured to be executed on a wireless terminal.
US10/326,849 2002-06-07 2002-12-20 Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering Expired - Lifetime US6940511B2 (en)

Priority Applications (16)

Application Number Priority Date Filing Date Title
US10/326,849 US6940511B2 (en) 2002-06-07 2002-12-20 Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering
ES06126695T ES2331327T3 (en) 2002-06-07 2003-06-02 METHOD AND APPLIANCE TO TEXTURIZE A PIXEL.
AT06126695T ATE438903T1 (en) 2002-06-07 2003-06-02 METHOD AND DEVICE FOR PIXEL TEXTURING
DE60310720T DE60310720T2 (en) 2002-06-07 2003-06-02 METHOD AND DEVICE FOR CODING TEXTURE INFORMATION
AU2003245901A AU2003245901A1 (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
EP06126695A EP1768059B1 (en) 2002-06-07 2003-06-02 Method and apparatus for texturing a pixel
PCT/EP2003/005747 WO2003105090A1 (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
KR1020047019919A KR101034925B1 (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
DE60328733T DE60328733D1 (en) 2002-06-07 2003-06-02 Method and device for pixel texturing
EP03737982A EP1520259B1 (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
AT03737982T ATE349743T1 (en) 2002-06-07 2003-06-02 METHOD AND DEVICE FOR CODING TEXTURE INFORMATION
ES03737982T ES2277086T3 (en) 2002-06-07 2003-06-02 METHOD AND APPLIANCE FOR CODING TEXTURE INFORMATION.
JP2004512087A JP4648701B2 (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
CN038129752A CN1659595B (en) 2002-06-07 2003-06-02 Method and apparatus for encoding texture information
US11/179,704 US7633507B2 (en) 2002-06-07 2005-07-12 Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filtering
JP2009298002A JP5091220B2 (en) 2002-06-07 2009-12-28 Method and apparatus for encoding texture information

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US38704902P 2002-06-07 2002-06-07
US10/326,849 US6940511B2 (en) 2002-06-07 2002-12-20 Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/179,704 Continuation US7633507B2 (en) 2002-06-07 2005-07-12 Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filtering

Publications (2)

Publication Number Publication Date
US20030227462A1 US20030227462A1 (en) 2003-12-11
US6940511B2 true US6940511B2 (en) 2005-09-06

Family

ID=29714997

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/326,849 Expired - Lifetime US6940511B2 (en) 2002-06-07 2002-12-20 Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering
US11/179,704 Expired - Lifetime US7633507B2 (en) 2002-06-07 2005-07-12 Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filtering

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/179,704 Expired - Lifetime US7633507B2 (en) 2002-06-07 2005-07-12 Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filtering

Country Status (10)

Country Link
US (2) US6940511B2 (en)
EP (2) EP1768059B1 (en)
JP (2) JP4648701B2 (en)
KR (1) KR101034925B1 (en)
CN (1) CN1659595B (en)
AT (2) ATE349743T1 (en)
AU (1) AU2003245901A1 (en)
DE (2) DE60328733D1 (en)
ES (2) ES2331327T3 (en)
WO (1) WO2003105090A1 (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040081356A1 (en) * 2002-10-28 2004-04-29 Web Technology Corp Method and apparatus for image compression in block units
US20040151372A1 (en) * 2000-06-30 2004-08-05 Alexander Reshetov Color distribution for texture and image compression
US20070018994A1 (en) * 2005-07-20 2007-01-25 Kabushiki Kaisha Toshiba Texture encoding apparatus, texture decoding apparatus, method, and program
US20090315905A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation Layered texture compression architecture
US7683910B2 (en) 2006-06-29 2010-03-23 Microsoft Corporation Strategies for lossy compression of textures
US7714873B2 (en) 2006-06-29 2010-05-11 Microsoft Corporation Strategies for compressing textures
US7760936B1 (en) * 2006-09-12 2010-07-20 Nvidia Corporation Decompressing image-based data compressed using luminance
US8311347B2 (en) 2006-11-10 2012-11-13 Microsoft Corporation Image compression based on parameter-assisted inpainting
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US8594441B1 (en) * 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8780128B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
US8891886B2 (en) 2011-09-30 2014-11-18 Arm Limited Method of and apparatus for encoding data
US9041723B2 (en) 2011-05-05 2015-05-26 Arm Limited Method of and apparatus for encoding and decoding data
US9142037B2 (en) 2012-07-04 2015-09-22 Arm Limited Methods of and apparatus for encoding and decoding data
US9177415B2 (en) 2013-01-30 2015-11-03 Arm Limited Methods of and apparatus for encoding and decoding data
US10147202B2 (en) 2013-03-15 2018-12-04 Arm Limited Methods of and apparatus for encoding and decoding data
US11825106B2 (en) 2006-08-31 2023-11-21 Ati Technologies Ulc Texture decompression techniques

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100995022B1 (en) 2003-12-13 2010-11-19 엘지디스플레이 주식회사 Display device and driving mehtod thereof
WO2006016303A2 (en) * 2004-08-11 2006-02-16 Philips Intellectual Property & Standards Gmbh Stripe-based image data storage
US20070177553A1 (en) * 2006-01-31 2007-08-02 Nokia Corporation Apparatus, method and computer program product providing efficient signaling of user allocations in an optimum manner
US8165393B2 (en) 2008-06-05 2012-04-24 Microsoft Corp. High dynamic range texture compression
US20090322777A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Unified texture compression framework
EP2304958B1 (en) 2008-06-27 2018-03-21 Thomson Licensing DTV Methods and apparatus for texture compression using patch-based sampling texture synthesis
GB2462589B (en) * 2008-08-04 2013-02-20 Sony Comp Entertainment Europe Apparatus and method of viewing electronic documents
WO2010082886A1 (en) * 2009-01-19 2010-07-22 Telefonaktiebolaget Lm Ericsson (Publ) Image processing
US9153064B2 (en) * 2009-12-23 2015-10-06 Intel Corporation Grouping pixels to be textured
WO2015035129A2 (en) * 2013-09-09 2015-03-12 Lynx Laboratories Inc. Rendering engine for multi-dimensional tracking, reconstruction and mapping
US9619898B2 (en) * 2013-12-28 2017-04-11 Intel Corporation Angle-dependent anisotropic filtering
KR20160032597A (en) * 2014-09-16 2016-03-24 삼성전자주식회사 Method and apparatus for processing texture
KR102477264B1 (en) * 2015-09-22 2022-12-13 삼성전자주식회사 Method and apparatus for processing compressed texture
CN111515149B (en) * 2020-04-26 2020-12-29 广东弓叶科技有限公司 Man-machine cooperation sorting system and robot grabbing position obtaining method thereof
CN115943421A (en) * 2020-09-17 2023-04-07 华为技术有限公司 Single-channel rendering and post-processing filtering

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1517383A (en) 1974-08-26 1978-07-12 Philips Electronic Associated Data compression for facsimile transmission
JPH0944695A (en) 1995-07-25 1997-02-14 Matsushita Electric Ind Co Ltd Texture mapping method and texture mapping device
WO1999022519A2 (en) 1997-10-28 1999-05-06 Koninklijke Philips Electronics N.V. Compressing and decompressing an image
US5920495A (en) 1997-05-14 1999-07-06 Cirrus Logic, Inc. Programmable four-tap texture filter
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
WO1999067748A2 (en) 1998-06-24 1999-12-29 Micron Technology, Inc. An improved method and apparatus for per pixel mip mapping and trilinear filtering
US6016152A (en) 1997-08-01 2000-01-18 Avid Technology, Inc. Apparatus and method for non-uniform image scaling
JP2000155851A (en) 1998-11-20 2000-06-06 Sony Corp Texture mapping device and rendering device equipped with the same and information processor
US6181347B1 (en) 1997-09-17 2001-01-30 Cirrus Logic, Inc. Selectable mode smoothing texture filter for computer graphics
US6184893B1 (en) 1998-01-08 2001-02-06 Cirrus Logic, Inc. Method and system for filtering texture map data for improved image quality in a graphics computer system
US6236405B1 (en) 1996-07-01 2001-05-22 S3 Graphics Co., Ltd. System and method for mapping textures onto surfaces of computer-generated objects
US6259460B1 (en) * 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
US6292193B1 (en) 1998-07-30 2001-09-18 Compaq Computer Corporation Techniques for anisotropic texture mapping using multiple space-invariant filtering operations per pixel
US6304268B1 (en) * 1997-06-26 2001-10-16 S3 Graphics Co., Ltd. Trilinear texture filtering of two levels of detail based on a single level of detail
US6366290B1 (en) 1997-03-31 2002-04-02 Cirrus Logic, Inc. Dynamically selectable texture filter for a software graphics engine
US20020122043A1 (en) * 2001-03-02 2002-09-05 Mitsubishi Electric Research Laboratories, Inc. Texture synthesis and transfer for pixel images
US6459433B1 (en) * 1997-04-30 2002-10-01 Ati Technologies, Inc. Method and apparatus for compression of a two dimensional video object

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3365293B2 (en) * 1998-02-12 2003-01-08 株式会社日立製作所 Cache memory using DRAM and logic embedded LSI and graphics system using the same
GB2343599B (en) * 1998-11-06 2003-05-14 Videologic Ltd Texturing systems for use in three dimensional imaging systems
US6452603B1 (en) * 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
US7050063B1 (en) * 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme
JP2001126084A (en) * 1999-10-28 2001-05-11 Sega Corp Device and method for displaying texture and recording medium
JP2003115056A (en) * 1999-12-16 2003-04-18 Sega Corp Image generation method and image generator using the same
US6819793B1 (en) * 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US20020180749A1 (en) * 2001-06-01 2002-12-05 Chien-Chung Hsiao Method of bilinear texture filtering
TW544636B (en) * 2001-11-22 2003-08-01 Silicon Integrated Sys Corp Method of texture mapping
US7336284B2 (en) * 2004-04-08 2008-02-26 Ati Technologies Inc. Two level cache memory architecture

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1517383A (en) 1974-08-26 1978-07-12 Philips Electronic Associated Data compression for facsimile transmission
JPH0944695A (en) 1995-07-25 1997-02-14 Matsushita Electric Ind Co Ltd Texture mapping method and texture mapping device
US6236405B1 (en) 1996-07-01 2001-05-22 S3 Graphics Co., Ltd. System and method for mapping textures onto surfaces of computer-generated objects
US6366290B1 (en) 1997-03-31 2002-04-02 Cirrus Logic, Inc. Dynamically selectable texture filter for a software graphics engine
US6459433B1 (en) * 1997-04-30 2002-10-01 Ati Technologies, Inc. Method and apparatus for compression of a two dimensional video object
US5920495A (en) 1997-05-14 1999-07-06 Cirrus Logic, Inc. Programmable four-tap texture filter
US6304268B1 (en) * 1997-06-26 2001-10-16 S3 Graphics Co., Ltd. Trilinear texture filtering of two levels of detail based on a single level of detail
US6016152A (en) 1997-08-01 2000-01-18 Avid Technology, Inc. Apparatus and method for non-uniform image scaling
US6181347B1 (en) 1997-09-17 2001-01-30 Cirrus Logic, Inc. Selectable mode smoothing texture filter for computer graphics
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
WO1999022519A2 (en) 1997-10-28 1999-05-06 Koninklijke Philips Electronics N.V. Compressing and decompressing an image
US6184893B1 (en) 1998-01-08 2001-02-06 Cirrus Logic, Inc. Method and system for filtering texture map data for improved image quality in a graphics computer system
US6259460B1 (en) * 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
WO1999067748A2 (en) 1998-06-24 1999-12-29 Micron Technology, Inc. An improved method and apparatus for per pixel mip mapping and trilinear filtering
US6292193B1 (en) 1998-07-30 2001-09-18 Compaq Computer Corporation Techniques for anisotropic texture mapping using multiple space-invariant filtering operations per pixel
JP2000155851A (en) 1998-11-20 2000-06-06 Sony Corp Texture mapping device and rendering device equipped with the same and information processor
US20020122043A1 (en) * 2001-03-02 2002-09-05 Mitsubishi Electric Research Laboratories, Inc. Texture synthesis and transfer for pixel images

Non-Patent Citations (16)

* Cited by examiner, † Cited by third party
Title
Akenine-Moller, T., et al. Graphics for the Masses: A Hardware Rasterization Architecture for Mobile Phones. ACM Transaction of Graphics. Jul. 2003. p. 801-808. *
Beers et al., "Rendering from Compressed Textures," Computer Graphics (SIGGRAPH 96 Proceedings), Aug. 1996, 4 pages.
Cross, Jason, "DXTn Texture Compression," http://www.cdmag.com/articles/021/068/dxt.feature.html, 1999, 4 pages.
Delp et al., "Image Compression Using Block Truncation Coding," IEEE Transactions on Communications, IEEE Inc., New York, US, vol. COM-27, No. 9, Sep. 1979, pp. 1335-1342.
Franklin C. Crow, "Summed-Area Tables for Texture Mapping," Computer Graphics (SIGGRAPH '84 Proceedings), Jul. 1974, pp. 207-212.
International Search Report, PCT/EP03/05747, Sep. 29, 2003.
Ivanov et al., "Color Distribution-a new approach to texture compression," Computer Graphics Forum, Amsterdam, NL, vol. 19, No. 3, Aug. 21, 2000, pp. C283-C289, C535.
Levkovich-Maslyuk, L., et al. Texture Compression With adaptive Block Partitions. Proceedings of the 8th ACM International Conference on Multimedia. Oct. 2000. p. 401-403. *
McCabe et al., "DirectX 6 Texture Map Compression," Game Developer, Aug. 1998, 4 pages.
Möller et al., "Real-Time Rendering," 2<SUP>nd </SUP>edition, Chapter 5 Texturing, Jun. 2002, pp. 117-145.
Standard Search Report, U.S. Appl. No. 10/326,849, filed Dec. 20, 2002, May 23, 2003.
Tseng, Jeffrey, "The Truth About S3TC," http://www.hardwarecentral.com/hardwarecentral/print/140/1, May 29, 1999, 5 pages.
Uwe Behrens, "Averaged Area Tables for Texture Filtering," SIGGRAPH 2001 Conference Abstracts and Applications, 2001, p. 150.
Williams, Lance, "Pyramidal Parametrics," Computer Graphics, vol. 7, No. 3, Jul. 1983, pp. 65-75.
Woo, R., et al. A 80/20MHz Multimedia Processor Integrated With Embedded DRAM MPEG-4 Accelerator and 3D Rendering Engine for Mobile Applications. ISSCC 2001, Session 9, Integrated Multimedia Processors, p. 142-143. *
Zavacky et al., "Resampling of an Image By Block-Based Interpolation or Decimation with Compensation," Radioengineering, Prague, CZ, vol. 9, No. 2, Jun. 2000, pp. 18-24.

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040151372A1 (en) * 2000-06-30 2004-08-05 Alexander Reshetov Color distribution for texture and image compression
US7397946B2 (en) * 2000-06-30 2008-07-08 Intel Corporation Color distribution for texture and image compression
US7082217B2 (en) * 2002-10-28 2006-07-25 Web Technology Corp. Method and apparatus for image compression in block units
US20040081356A1 (en) * 2002-10-28 2004-04-29 Web Technology Corp Method and apparatus for image compression in block units
US20070018994A1 (en) * 2005-07-20 2007-01-25 Kabushiki Kaisha Toshiba Texture encoding apparatus, texture decoding apparatus, method, and program
US7683910B2 (en) 2006-06-29 2010-03-23 Microsoft Corporation Strategies for lossy compression of textures
US7714873B2 (en) 2006-06-29 2010-05-11 Microsoft Corporation Strategies for compressing textures
US12047592B2 (en) 2006-08-31 2024-07-23 Ati Technologies Ulc Texture decompression techniques
US11843793B2 (en) 2006-08-31 2023-12-12 Ati Technologies Ulc Texture decompression techniques
US11825106B2 (en) 2006-08-31 2023-11-21 Ati Technologies Ulc Texture decompression techniques
US8594441B1 (en) * 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US7760936B1 (en) * 2006-09-12 2010-07-20 Nvidia Corporation Decompressing image-based data compressed using luminance
US8774531B2 (en) 2006-11-10 2014-07-08 Microsoft Corporation Image compression based on parameter-assisted inpainting
US8311347B2 (en) 2006-11-10 2012-11-13 Microsoft Corporation Image compression based on parameter-assisted inpainting
US9106892B2 (en) 2006-11-10 2015-08-11 Microsoft Technology Licensing, Llc Image compression based on parameter-assisted inpainting
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8780128B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
US8508543B2 (en) 2008-06-18 2013-08-13 Microsoft Corporation Layered texture compression architecture
US20090315905A1 (en) * 2008-06-18 2009-12-24 Microsoft Corporation Layered texture compression architecture
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US9626730B2 (en) 2011-05-05 2017-04-18 Arm Limited Method of and apparatus for encoding and decoding data
US9524535B2 (en) 2011-05-05 2016-12-20 Arm Limited Method of and apparatus for encoding and decoding data
US9524566B2 (en) 2011-05-05 2016-12-20 Arm Limited Method of and apparatus for encoding and decoding data
US9582845B2 (en) 2011-05-05 2017-02-28 Arm Limited Method of and apparatus for encoding and decoding data
US9058637B2 (en) 2011-05-05 2015-06-16 Arm Limited Method of and apparatus for encoding and decoding data
US9041723B2 (en) 2011-05-05 2015-05-26 Arm Limited Method of and apparatus for encoding and decoding data
US8891886B2 (en) 2011-09-30 2014-11-18 Arm Limited Method of and apparatus for encoding data
US9142037B2 (en) 2012-07-04 2015-09-22 Arm Limited Methods of and apparatus for encoding and decoding data
US9177415B2 (en) 2013-01-30 2015-11-03 Arm Limited Methods of and apparatus for encoding and decoding data
US10147202B2 (en) 2013-03-15 2018-12-04 Arm Limited Methods of and apparatus for encoding and decoding data

Also Published As

Publication number Publication date
JP2005531833A (en) 2005-10-20
EP1520259A1 (en) 2005-04-06
ATE349743T1 (en) 2007-01-15
EP1768059B1 (en) 2009-08-05
EP1768059A8 (en) 2007-06-20
WO2003105090A1 (en) 2003-12-18
DE60310720D1 (en) 2007-02-08
KR101034925B1 (en) 2011-05-17
CN1659595B (en) 2010-05-12
US20050264573A1 (en) 2005-12-01
ES2331327T3 (en) 2009-12-29
JP4648701B2 (en) 2011-03-09
JP2010102729A (en) 2010-05-06
ES2277086T3 (en) 2007-07-01
EP1768059A3 (en) 2007-06-27
DE60328733D1 (en) 2009-09-17
US20030227462A1 (en) 2003-12-11
EP1520259B1 (en) 2006-12-27
EP1768059A2 (en) 2007-03-28
DE60310720T2 (en) 2007-10-11
KR20050004915A (en) 2005-01-12
AU2003245901A1 (en) 2003-12-22
JP5091220B2 (en) 2012-12-05
ATE438903T1 (en) 2009-08-15
US7633507B2 (en) 2009-12-15
CN1659595A (en) 2005-08-24

Similar Documents

Publication Publication Date Title
US7633507B2 (en) Graphics texture processing methods, apparatus and computer program products using block overlapping and/or texture filtering
US5831624A (en) Level of detail texture filtering with dithering and mipmaps
US6518974B2 (en) Pixel engine
US6747663B2 (en) Interpolating sample values from known triangle vertex values
US8855410B2 (en) Method and apparatus for compressing and decompressing data
US9111328B2 (en) Texture compression and decompression
US6154216A (en) Method and apparatus for decompression of a two dimensional video texture map
WO2017222633A1 (en) Image rotation method and apparatus
US6459433B1 (en) Method and apparatus for compression of a two dimensional video object
US8655063B2 (en) Decoding system and method operable on encoded texture element blocks
JP2001507823A (en) Image compression and decompression
US9129543B2 (en) Texture compression and decompression
JP2000182069A (en) Image processing unit and its method
US6738058B1 (en) Method and apparatus for three dimensional graphics processing
US8918440B2 (en) Data decompression with extra precision
JPH11265459A (en) Storage circuit controller and graphic arithmetic unit
JP2003187260A (en) Image rendering program, recording medium in which image rendering program is recorded, image rendering apparatus and method
US20030142107A1 (en) Pixel engine
GB2387520A (en) Graphics system with a buddy/quad mode for faster writes
JP2000306113A (en) Signal processor and image processor

Legal Events

Date Code Title Description
AS Assignment

Owner name: TELEFONAKTIEBOLAGET L M ERICSSON (PUBL), SWEDEN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:AKENINE-MOLLER, TOMAS;STROM, JACOB;REEL/FRAME:014343/0033;SIGNING DATES FROM 20030131 TO 20030203

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12