+ All Categories
Home > Documents > Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2...

Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2...

Date post: 17-Apr-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
93
ftc floating precision texture compression Philipp Klaus Krause February 26, 2009
Transcript
Page 1: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

ftcfloating precision texture compression

Philipp Klaus Krause

February 26, 2009

Page 2: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

2

Abstract

This work presents new fixed-rate texture compression systems for RGB andRGBA images. Experiments using hundreds of textures show that they achievehigher quality than the commonly used S3TC at the same ratio or (for RGBAimages) similar quality to S3TC at twice the compression ratio. The new texturecompression systems have been designed to share most of the decompressionhardware with S3TC implementations. Since S3TC is the standard texturecompression system today it will have to be supported for the foreseeable future.Thus the additional hardware needed to support the new texture compressionsystems in graphics hardware is minimal.

Page 3: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Contents

1 Introduction 51.1 Computer graphics and graphics hardware . . . . . . . . . . . . . 51.2 Texture mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Texture compression . . . . . . . . . . . . . . . . . . . . . . . . . 71.4 Main contributions . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Thesis organization . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Related research 112.1 Indexed color and vector quantization . . . . . . . . . . . . . . . 112.2 Block-based compression systems . . . . . . . . . . . . . . . . . . 122.3 HDR texture compression . . . . . . . . . . . . . . . . . . . . . . 122.4 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Error measures 153.1 Mean absolute error . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 Mean squared error . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Image dissimilarity . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Common texture compression systems 194.1 Indexed color and vector quantization . . . . . . . . . . . . . . . 194.2 S3TC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.3 ETC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.4 Compression of normal maps . . . . . . . . . . . . . . . . . . . . 254.5 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.6 Squish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5 ftc 295.1 Compression of RGB images . . . . . . . . . . . . . . . . . . . . . 305.2 Error bounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.3 Compression algorithm . . . . . . . . . . . . . . . . . . . . . . . . 355.4 RGB image experiments . . . . . . . . . . . . . . . . . . . . . . . 365.5 Compression of RGBA images . . . . . . . . . . . . . . . . . . . . 395.6 RGBA image experiments . . . . . . . . . . . . . . . . . . . . . . 435.7 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3

Page 4: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

4 CONTENTS

5.8 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.9 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

A Implementing ftc 51A.1 OpenGL extensions . . . . . . . . . . . . . . . . . . . . . . . . . . 51A.2 C code for ftc1 decompression . . . . . . . . . . . . . . . . . . . . 66A.3 Karhunen-Loeve transform . . . . . . . . . . . . . . . . . . . . . . 69A.4 Texture filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . 70A.5 Premultiplied alpha . . . . . . . . . . . . . . . . . . . . . . . . . 71

B Detailed experimental results 73

C German summary 85C.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85C.2 S3TC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87C.3 ftc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Page 5: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Chapter 1

Introduction

This chapter provides a brief introduction, starting with computer graphics androughly outlining how graphics hardware works in section 1.1. Section 1.2 intro-duces textures and how they are applied to graphics primitives. Why texturecompression is necessary and how it differs from generic image compression isstated in section 1.3. Section 1.4 presents the main contributions and section1.5 shows the organization of the thesis.

1.1 Computer graphics and graphics hardware

Computer graphics is the subfield of computer science concerned with the cre-ation of digital images using computers.

The first computer known to have graphical input/output and thus computergraphics capabilities was the Whirlwind I, built at the Massachusetts Instituteof Technology in the late 1940s and early 1950s. It used a cathode ray tubeto display geographical and aircraft movement information and a light pen forinput.

From the beginning [49] video games used graphical output, so computergraphics naturally became a necessity for video games using computers.

Computer graphics found their place in many areas, from computer aideddesign, games, movies to graphical user interfaces.

The rising quality of computer graphics required special hardware. Initiallygraphics output devices started to natively support simple 2D operations likesuperimposing sprites on a background. Such devices found widespread adop-tion in second generation video game consoles such as the ColecoVision and theIntellivision in the early 1980s.

Hardware acceleration for 3D graphics was first proposed in 1982 [15] andsoon implemented in the SGI IRIS workstations. In the 1990s consumer-levelgraphics cards gained 3D acceleration. Today it is being adopted in embeddedsystems such as smartphones.

Hardware for 3D graphics today is typically structured like the rendering

5

Page 6: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

6 CHAPTER 1. INTRODUCTION

Figure 1.1: Rendering pipeline

Figure 1.2: Data in the rendering pipeline

pipeline in figure 1.1: Its input are vertices (leftmost in figure 1.2, mostly thepositions of corners of polygons and additional data associated with them). Thehardware first performs some transformations of these vertices (associated dataincluding position can change, but not the number of vertices) and then raster-izes the corresponding polygons, creating fragments. The fragments are furthertransformed (associated data, excluding position can be changed, fragments canbe thrown away) and finally end up in the framebuffer as pixels (rightmost infigure 1.2).

1.2 Texture mapping

With computation time restricting the number of polygons and other primitivesin a computer generated image a different way of representing surface detailsis necessary. In texture mapping [24] fragments are modified based on thecontents of textures, relatively large multidimensional arrays of data. Texturesare typically one-, two- or three-dimensional; at each point in that space one tofour values are stored. The stored data at that point is called a texel (in manycases a texel consists of a color, with its red, green and blue components). Themost common example of texture mapping is pasting a two-dimensional imageonto a surface [14] (e. g using an image of a brick wall as a texture on a quad todisplay a brick wall instead of using polygons for the individual bricks and themortar), but various other applications of texture mapping like bump mapping[10] exist.

Page 7: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

1.3. TEXTURE COMPRESSION 7

1.3 Texture compression

In computer graphics achieving high visual quality typically requires high-re-solution textures. However the desire for increasing texture resolution conflictswith the limited amount of graphics memory available.

Memory bandwidth is the most important aspect of graphics system perfor-mance today [4]. Most bandwidth is consumed by texture accesses, not accessesto vertex data or framebuffer updates. One reason for this is texture filtering(see section A.4 in the appendix for details), which increases visual quality: Thecommon trilinear texture filtering needs to access 8 texels during each textureread.

Increasing memory bandwidth is expensive; it can be done in two ways: In-creasing memory clock frequency requires more expensive and power-consumingmemory chips. Increasing the number of data lines often results in increasingthe number of memory chips increasing cost and power consumption, too. Es-pecially for embedded systems increasing the memory bandwidth may not bean option.

Texture compression can help to achieve higher graphics quality with givenmemory and bandwidth or reduce memory and bandwidth consumption withoutdegrading quality too much.

Texture compression systems must allow fast random access to texels.A fixed compression ratio eases address computations. While lossless texture

compression systems have been proposed [25] they require additional hardwareto implement. Only texture compression systems with a fixed compression ratio(and thus only lossy systems) will be considered herein.

Since computer graphics systems are typically highly pipelined it is desirableto keep the number of indirections during texture lookup low. Most of thediscussed texture compression systems have no indirections.

Texture caches are used in graphics hardware to speed up texture accesses.A texture compression system should work well with existing caches, thus it isimportant that it preserves the locality of reference on which caches are based.Most texture compression systems split the texture into blocks of equal size,which are compressed independently from each other to preserve locality ofreference.

The decompression algorithm should be simple, fast, and easy to imple-ment in hardware. There is no such requirement on the compression algorithmthough.

Since these requirements differ from those of other image compression sys-tems, those are typically not suitable for texture compression (e. g in PNG pixelvalues depends on the pixels to the left and above, which makes decompressionof the whole image necessary when obtaining the lower right pixel, JPEG decom-pression is complex, requires many reads, neither one has a fixed compressionratio).

In many texture compression systems the compressed texture contains colorcodewords, from which the colors of individual texels are derived. Often thequality of compressed textures is limited by the precision of the color codewords

Page 8: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

8 CHAPTER 1. INTRODUCTION

if those codewords are near to each other, but limited by other aspects of thecompression system when the color codewords contain colors that are far fromeach other in color space.

1.4 Main contributions

Related work is discussed, including an overview of related research and anin-depth discussion of texture compression systems of practical importance. Er-ror metrics, needed to measure the quality of texture compression systems arepresented and compared.

New texture compression systems for both RGB and RGBA textures havebeen developed. Compared to the de-facto standard S3TC the new systemsprovides superior image quality at the same compression ratio or comparablequality at twice the compression ratio. They are designed to use variable pre-cision in the color codewords, sacrificing precision when the codewords are farapart to increase precision when the coded colors are near. The new texturecompression systems are still similar enough to existing common systems thatin hardware implementations a large part of decompression hardware can beshared.

Compression and decompression programs for the new texture compressionsystems have been created. OpenGL extension specifications that show how thenew texture compression systems could be supported in OpenGL have been writ-ten. For one of the texture compression systems an alternative implementationof the decompression has been developed, which is more suited for integrationinto OpenGL drivers. This implementation has been used to add support forthe texture compression system to the software renderer of the Mesa OpenGLimplementation.

The new texture compression systems have been compared to existing sys-tems by compressing benchmark images and measuring the quality using theerror metrics. It is shown that for classic textures even in the worst case thenew texture compression systems won’t produce an error much higher than themost important existing system.

1.5 Thesis organization

This chapter 1 provides an introduction to the work. Related research intotexture compression systems is discussed in chapter 2, followed by error mea-sures, which are needed to compare texture compression systems, in chapter3. Chapter 4 starts by presenting existing texture compression systems: Un-like the chapter on related research only texture compression systems that havebeen adopted by graphics hardware vendors are discussed; The discussion ofthese systems is more detailed (down to the meaning of individual bits forthe most important systems). The discussion of texture compression systemsis followed by an introduction to squish, a texture compression algorithm for

Page 9: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

1.5. THESIS ORGANIZATION 9

the most important texture compression system. Chapter 5 presents the newtexture compression systems developed in this work including experimental re-sults comparing them to existing texture compression systems. The appendix Amostly contains some detail information about how to implement ftc in OpenGLand sample code. Detailed experimental results for RGB images can be foundin appendix B. Appendic C contains a summary of the work in German.

Page 10: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

10 CHAPTER 1. INTRODUCTION

Page 11: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Chapter 2

Related research

This chapter gives an overview of research into texture compression. There issome overlap with chapter 4, which focuses on a more detailed presentation oftexture compression systems that have been used in the industry.

The earliest approaches were adaptions of generic lossy compression systemsto texture compression: Scalar quantization (called indexed color in image com-pression) and vector quantization, presented in section 2.1. Since they sufferedfrom low compression quality and an indirection during memory access latertexture compression systems that compress blocks of texels independently weredeveloped; these systems are still the most important ones and presented insection 2.2. High dynamic range imaging took a long time to find its way intodigital imaging (see [17] and [16] for the pioneering works in this area by Debevecin the late 1990s), nearly a decade later texture compression research started tofocus on high dynamic range texture compression, presented in section 2.3; eventhough they are presented in an extra section these are block-based, too. A lessconventional block-based approach where neighbouring blocks can no longer bedecoded independently from each other is mentioned in section 2.4.

2.1 Indexed color and vector quantization

Probably the earliest image compression system was indexed color. Howeverthere wasn’t much research into color quantization algorithms for RGB imagesbefore Paul Heckbert [23]. A per-texture color palette is chosen and texels areapproximated by using the nearest color from the palette.

Indexed color can be considered a special case of vector quantization, ageneric, well-researched lossy compression technique. Vector quantization wasfirst proposed for texture compression by Andrew C. Beers et al. in [9]. For tex-tures that contain many repeating patterns vector quantization can be superiorto texture compression systems discovered later; see Li-Yi Wei [52] for modernresearch into this topic.

11

Page 12: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

12 CHAPTER 2. RELATED RESEARCH

2.2 Block-based compression systems

Block-based compression systems achieve locality of reference by compressingblocks of texels independently from each other.

An early block-based image compression system is Block truncation coding(BTC), proposed by E. Delp and Robert Mitchell [18] for grayscale images. Ithas been used for color images by encoding each color-channel separately. ColorCell compression (CCC), which is similar to BTC, but more efficient for colorimages, was the first approach to block-based texture compression, proposed byGraham Campbell et al. in 1986 [13] as a generic image compression system. Itwas also the first approach to be considered for hardware implementation as atexture compression system by G. Knittel et al. [27].

The most common texture compression system today is S3TC (see e. g theOpenGL extension [39] for a specification). For each block of 4 × 4 pixels twocolor codewords are chosen; colors of the compressed texture lie at discretepoints on the line connecting the color codewords. A variation of S3TC usinga smaller block size has been presented by Tomas Akenine-Moller and JacobStrom in 2003 [5].

Another approach that has found some use is ETC, discovered by JacobStrom et al. in 2005 [46], an improvement of their earlier proposal [47]. Each4 × 4 texel block is divided into two subblocks, with a color codewords storedfor each subblock. Colors in the compressed subblock lie at discrete points ona line in the (1, 1, 1) direction through the subblock’s color codeword, allowingfor more luminance than chrominance variation. Since ETC image quality wasstill worse than S3TC a further improved, but more complex variant has beenproposed by Jacob Strom et al. in 2007 [26].

There have been some efforts to optimize texture compression systems fornormal maps used in bump mapping; normal maps typically contain two com-ponents. These approaches are based on variants of S3TC; Most are very similarto ATI’s 3Dc [6], using two color codewords per component with the componentsof the compressed normal vectors lying at discrete points on lines connecting thecolor codewords. Thus for each block all compressed normals lie in a axis-alignedrectangle. In 2006 Jacob Munkberg et al. [34] improved this by modifying thecompression system to allow rotations of this rectangle and introducing a newmode. It was further improved by Jacob Munkberg et al. in 2007 [36].

In 1999 A. Pereberin [42] proposed a block-based system that compressesindividual blocks in a JPEG-like way, however image quality and compressionratio were below that of S3TC.

2.3 HDR texture compression

Recently there has been research into compression of high dynamic range (HDR)textures. Roimela et al. [43] proposed a complex high-quality texture compres-sion system for HDR textures in 2006; in the same year Munkberg et al. [35]proposed a simpler system, easier to implement in hardware but yielding lower

Page 13: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

2.4. OTHERS 13

image quality. In 2008 Roimela et al. [44] proposed a system that tries to com-bine the advantages of both systems mentioned before. The approach proposedby Wang et al. in 2007 [50] used two S3TC(DXT5) compressed textures to storeHDR and LDR parts separately. More recent approaches based on S3TC wereproposed by Banterle et al. [7] and Wen Sun et al. [48] in 2008.

2.4 Others

In 2003 Simon Fenney [21] proposed PVRTC, a texture compression system,that stores two color codewords and modulation data for each 4 × 4 block oftexels, however the blocks are not independent. During decompression the colorcodewords of 4 neighbouring blocks are mixed using bilinear interpolation. Theresulting values are then used similar to the color codewords in S3TC.

Page 14: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

14 CHAPTER 2. RELATED RESEARCH

Page 15: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Chapter 3

Error measures

When comparing a notion of “better” is necessary. In texture compression im-ages that are similar to the original are desired. Thus error metrics are neededthat measure distance between images. Section 3.1 presents the oldest and sim-plest error measure, mean absolute error, section 3.2 the mean squared error,the most common error measure. Both are established generic error measuresthat have been used in many different fields for centuries. However this genericnature is their main weakness, too: For comparing digital images an error mea-sure based on to human perception is desirable. Some such error measures havebeen developed more recently, all more complex than the mean absolute andsquared error. Only one of them has found somewhat widespread use. It ispresented in section 3.3.

3.1 Mean absolute error

Let x and y be images with N pixels xi and yi. The mean absolute error ofimages x and y is

MAE(x, y) =1N

N−1∑i=0

|xi − yi|.

It is a very intuitive and simple error metric. According to Gauß [22] it wasthe first error measure used and proposed by Laplace. The main disadvantageis that it is not differentiable at its minimum.

3.2 Mean squared error

With x as above the mean squared error is

MSE(x, y) =1N

N−1∑i=0

(xi − yi)2.

15

Page 16: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

16 CHAPTER 3. ERROR MEASURES

This error measure was proposed by Gauß [22]. His goal was to find a differ-entiable, simple, easy to calculate error measure; otherwise it was an arbitrarychoice. It has the side effect of making few, large errors worse than common,small errors. MSE has found widespread use as an error measure. Often peaksignal-to-noise ratio, which is a function of MSE is used instead:

PSNR(x, y) = 10 log10

M2

MSE(x, y)

M is the maximum possible pixel value. The root mean squared error (RMSE),is an error metric based on the MSE:

RMSE(x, y) =√MSE(x, y)

3.3 Image dissimilarity

While simple to calculate and mathematically convenient the error metrics men-tioned above are not very well matched to the human visual system. Structuralsimilarity (SSIM) has been proposed as alternative more closely modelling per-ceived visual quality [51]. It is a function of luminance (l), contrast (c) andstructure comparison (s): SSIM(x, y) = f(l(x, y), c(x, y), s(x, y). Luminance,contrast and structure are defined as functions of mean value, standard devi-ation and correlation coefficient: For a single-channel image x let xi be its Npixels.

µx =1N

N∑i=1

xi

σx =

√√√√ 1N − 1

N∑i=1

(xi − µx)2

σxy =1

N − 1

N∑i=1

(xi − µx)(yi − µy)

l(x, y) =1µxµy + C1

µ2x + µ2

y + C1

c(x, y) =2σxσy + C2

σ2x + σ2

y + C2

s(x, y) =σxy + C3

σxσy + C3

SSIM(x, y) = l(x, y)αc(x, y)βs(x, y)γ .

The purpose of the constants Ci is to avoid numerical instability when calculat-ing SSIM. SSIM is symmetric, nonnegative and bounded, SSIM(x, y) = 1⇔ x =y. The exponents α, β, γ > 0 are used to adjust the impact of each measurementon SSIM.

Page 17: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

3.3. IMAGE DISSIMILARITY 17

Image dissimilarity (DSSIM) has been defined to keep the advantages ofSSIM, but make it more similar to distance measures [28]:

D(x, y) =1

SSIM(x,y)− 1

D(x, y) = l(x, y)−αc(x, y)−βs(x, y)−γ − 1.

In image dissimilarity the constants Ci are set to zero leading to

D(x, y) =(

1µxµyµ2x + µ2

y

)−α( 2σxσyσ2x + σ2

y

)−β (σxyσxσy

)−γ− 1.

Image dissimilarity is nonegative, reflexive and symmetric:

D(x, y) ≥ 0D(x, y) = 0⇔ x = y

D(x, y) = D(y, x).

DSSIM, like SSIM is defined for single-channel (e. g. grayscale) images only.The minimum over all channels has been used when calculating SSIM for multi-channel images (e. g. [38]); here the maximum of the individual channel’s DSSIMvalues is used as DSSIM for multichannel images.

Page 18: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

18 CHAPTER 3. ERROR MEASURES

Page 19: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Chapter 4

Common texturecompression systems

Many texture compression systems have been discovered and implemented. Inchapter 2 information about many of them can be found. This chapter discussesthe few texture compression systems that have found widespread use in moredetail.

The oldest, indexed color and vector quantization are discussed in section4.1. The most common system today is S3TC, discussed together with somederived systems in section 4.2. A newer approach, ETC and its related systems,which favours exact representation of luminance over chrominance and is tar-geted at embedded systems is discussed in section 4.3. For these three systemsthe lorikeet image (and a closeup of the beak) compressed at a 6 : 1 compres-sion ratio with each system is shown to give a simple basic visual comparisonto the reader. Texture compression systems designed for efficient compressionof normal maps (used in bumpmapping) are presented in section 4.4. Someother systems with have been implemented in hardware and found some use arepresented in section 4.5. Since for texture compression systems typically onlythe decompression is specified there exist multiple compression algorithms for agiven texture compression system. Section 4.6 discusses the squish compressionalgorithm for S3TC.

4.1 Indexed color and vector quantization

Indexed color was used in early graphics systems to reduce memory and band-width consumption of the framebuffer, so it was a natural choice for use intexture compression, too. While common on older graphics hardware and beingpart of the OpenGL ES 1.1 common profile [3] today’s consumer-level hardwareno longer supports it except for embedded systems such as mobile phones, whereOpenGL ES 1.x is used. A texture compressed using a texture compression sys-tem based on indexed color is called a palettized textures.

19

Page 20: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

20 CHAPTER 4. COMMON TEXTURE COMPRESSION SYSTEMS

(a) Compressed image (b) Uncompressed image

(c) Compressed image (d) Uncompressed image

Figure 4.1: Lorikeet compressed using indexed color

A palettized texture has a color table, which contains a number of colorsstored at high precision. For each texel an index into the color table is stored.This results in one indirection per texel lookup which is the reason palettizedtextures are rarely used today. While indexed color can not compete in qualitywith other texture compression systems for most images it is excellent at imagesthat contain only few colors, like drawings, comics and images rendered usingcell-shading.

Indexed color can be considered a special case of vector quantization bytreating the individual texels as vectors in color space.

Vector quantization [9] is a generic lossy compression method. It is used inmany areas like audio and image compression. Vector quantization has beenused for texture compression in early ATI cards and the Sega Dreamcast videogame console.

Vector quantization tries to find a small number of vectors to approximatea given distribution of vectors keeping the error small. In texture compressionthe vectors are typically 2× 2 or 4× 4 texel blocks. Indexed color can be seenas vector quantization using 1x1 blocks. Vector quantization is no longer used

Page 21: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

4.2. S3TC 21

B G R

0

16

32

Texel indices

5 11

RGB

21 27

16

64

32

Figure 4.2: DXT1 data layout

today since it requires an indirection (accessing the table of tiles from which thetexture is composed).

A similar system has been proposed to create large non-repeating texturesfrom a small sample texture [52].

4.2 S3TC

S3TC [39] is the most common texture compression system. It is available onall consumer-level graphics hardware, with the exception of some embeddedsystems. S3TC has been integrated into Microsoft’s DirectX and has been con-sidered for inclusion in OpenGL 3 [8]. However the rgtc compression mentionedbelow in section 4.4 is the only texture compression system that made it intoOpenGL 3.

S3TC consists of 5 different formats, called DXT1 through DXT5, whichdiffer in their handling of the alpha channel. DXT2 and DXT4 are rarely usedand will not be discussed here; they were never available as OpenGL extensionsand have been removed from DirectX in version 10. A variant called VTC [32]has been proposed by Nvidia to extend S3TC to three-dimensional textures.

DXT1 [40] stores a 64 bit value per 4× 4 texel block. The block’s first halfis used to store two 16 bit RGB565 color codewords. The second half is usedto store a 2 bit control code per texel. It has only very primitive alpha channelsupport.

If the first color as a 16 bit unsigned integer is greater than the second onethe color for a given texel is the first color for code 0, the second color for code 1.A linear interpolation is done to get the colors for control codes 2 (the first colortimes two thirds plus the second color times one third) and 3 (the first colortime one third plus the second color times two thirds.). The block is opaque.

If the first color is not greater than the second one texel color is given as

Page 22: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

22 CHAPTER 4. COMMON TEXTURE COMPRESSION SYSTEMS

(a) Compressed image (b) Uncompressed image

(c) Compressed image (d) Uncompressed image

Figure 4.3: Lorikeet compressed using DXT1

above for control codes 0 and 1. For control code 2 the average between the twocolors is used, 3 means black. The texel is opaque for control codes 0, 1 and 2.It is transparent for control code 3.

DXT3 and DXT5 store a 128 bit value per 4×4 texel block. 64 bits are usedto store RGB information as in DXT1. DXT3 contains a 4 bit alpha value pertexel. DXT5 stores two 8 bit alpha values and a 3 bit index per texel. If the firstalpha value is greater than the second one the index value is used to smoothlyinterpolate between the two alpha values. If the first alpha value is equal to orless than the second one indices 0 to 5 are used to interpolate between the alphavalues, while indices 6 and 7 have special meanings of completely transparentand completely opaque.

S3TC is relatively good at chrominance variations (compared to the othertexture compression systems in this chapter). However for small color variationsand color gradients as common in watercolor paintings, pictures of sunsets, etcthe limited precision in the color codewords will lead to artifacts (color bandsin the case of color gradients).

FXT1 [1] was a competitor to S3TC created by 3Dfx. Its most popular mode,

Page 23: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

4.3. ETC 23

Figure 4.4: ETC data layout

called CC MIXED is similar to DXT1. Initially FXT1-compressed textures wereof higher quality than those compressed using S3TC, but this changed with moreadvanced S3TC compression algorithms. Since the end of 3Dfx only Intel stillimplements it in their graphics chips. A royalty-free FXT1 license was availablefrom 3Dfx [19].

4.3 ETC

The idea behind ETC [46] (Ericsson Texture Compression, originally callediPACKMAN) is that humans are more sensitive to changes in luminance thanin chrominance. ETC varies the luminance per texel while the chrominance canbe changed for multiple texels at a time only.

ETC is used in high-end smartphones and was considered for inclusion intoOpenGL ES 2.

As DXT1 ETC stores a 64 bit value per 4×4 texel block. The block is dividedinto two 4× 2 or 2× 4 subblocks, controlled by a flip bit. Each subblock has abase color. These base colors are either stored as independent RGB444 colorsor as one RGB555 color and a 3× 3 bit difference vector (this differential modeis the main difference from the older PACKMAN [47] algorithm; it is useful toaccuracy in blocks where color does not vary much between subblocks). Foreach subblock one of 16 hardcoded luminance tables is selected. For each texela 2 bit index into the subblock’s luminance table is stored.

The luminance tables vary from (−8,−2, 2, 8) to (−127,−42, 42, 127). Sincethey contain nonzero entries only the base color is not used unmodified for anytexel. Since the luminance variation is applied after expanding the base colorsto 24 bit colors and there are luminance tables with small entries ETC canrepresent fine luminance variations.

ETC is good at areas of uniform chromacity where only luminance varies. It

Page 24: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

24 CHAPTER 4. COMMON TEXTURE COMPRESSION SYSTEMS

(a) Compressed image (b) Uncompressed image

(c) Compressed image (d) Uncompressed image

Figure 4.5: Lorikeet compressed using ETC

Page 25: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

4.4. COMPRESSION OF NORMAL MAPS 25

fails at representing smooth chrominance changes or hard lines between colorsof the same luminance though.

PACKMAN [47] is the predecessor to ETC. It is based on the same ideaas ETC and has been created as a texture compression algorithm for mobilephones.

ETC2 [26] is the successor to ETC. Not all 64 bit values represent valid ETCblocks. ETC2 uses these to introduce three new modes targeted at blocks thatare problematic for ETC: The T and H-modes, which are similar to ETC, butallow for some per-texel variation in chrominance at the cost of less luminancevariation and one mode for smoothly varying chrominance. ETC2 can achievebetter image quality, however the compression and decompression algorithmsbecome the most complex among the texture compression systems presented inthis chapter.

4.4 Compression of normal maps

Normal maps are used in dot3 bumpmapping. They contain surface normals.Since surface normals in three-dimensional space always lie in the upper half ofthe unit sphere two components are sufficient. The three texture compressionsystems created for two-component textures are based on DXT5’s alpha channelcompression. They treat each channel similar to how DXT5 compresses its alphachannel. ATI’s texture compression system for normal maps is called 3Dc [6].Nvidia, S3 and Holografika created similar systems called latc [29] and rgtc [30].latc and rgtc both store one or two channels per image resulting in 64 bit or128 bits per 4× 4 pixel block. In 2008 rgtc got promoted to an ARB extension[31] and became part of OpenGL 3.

4.5 Others

PVRTC [21] is Imagination Technologies’ texture compression algorithm forembedded systems. It tries to take advantage of the correlation of texel positionand color. While it stores a 64 bit value per 4× 4 or 8× 4 texel block reading atexel requires access to the values of the nearest three neighbouring blocks, too.It is implemented in PowerVR graphics chips used in PDAs and smartphones.

ATC is AMD’s new texture compression algorithm for embedded systems.Technical detail is unknown, though it probably is based on the patent [37]registered by the person that wrote ATC’s OpenGL ES extension specification[2] (which states ”The details of these formats is not disclosed”).

Hierarchical texture compression [42] uses wavelets, which have been verysuccessful in general image compression (JPEG), but not in texture compression.To preserve locality of reference 4×4 pixel blocks are compressed independently.The YCbCr color space is used. For each block a mean luminance value isstored, together with two levels of wavelet coefficients. For chrominance a meanvalue together with one level of wavelet coefficients is used. Thus, like ETC

Page 26: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

26 CHAPTER 4. COMMON TEXTURE COMPRESSION SYSTEMS

this compression system favors representation of luminance over chrominance.However the authors of [42] admit that compression quality using hierarchicaltexture compression at a compression ratio of 4 : 1 is worse than the quality ofS3TC at a compression ratio of 6 : 1.

4.6 Squish

Squish [12] is a free compression (and decompression) library for S3TC imple-menting the compression algorithms briefly introduced in [11], written by SimonBrown. It has been adopted by Nvidia as their texture compression library ofchoice abandoning their own proprietary compression library. However thereare many other compression libraries in use including the free libtxc dxtn byRoland Scheidegger [45], which is used by Mesa.

Input : A 4× 4 block of uncompressed texelsOutput: DXT1-compressed blockDetermine the principle component;Order the texel colors by their projection onto the principle component;for all clusterings of texel colors into three clusters preserving order do

Compute optimal endpoints;Clamp endpoints to grid of possible values;Keep solution if it results in the minimal error encountered so far;

for all clusterings of texel colors into four clusters preserving order doCompute optimal endpoints;Clamp Endpoints to grid of possible values;Keep solution if it results in the minimal error encountered so far;

Use the kept solution to encode the block;Algorithm 1: Squish “Cluster Fit” DXT1 compression algorithm

Squish has multiple algorithms for DXT1 compression; the “Cluster Fit”algorithm gives the highest quality (at the cost of being slower than the others)and is discussed here (also shown in pseudocode as algorithm 1). Remember thatDXT1 compresses blocks of 4× 4 texels and uses two color codewords, creating4 or 3 colors by interpolation of the color codewords, so color codewords haveto be chosen and colors have to be approximated by the nearest colors that canbe created by interpolating the color codewords.

• Compute the principle axis of the color distribution (see appendix A.3 forthe Karhunen-Loeve transform)

• Project colors onto axis and construct a total ordering of colors along theaxis.

• Assign colors to 4 (or 3) clusters preserving the ordering (each cluster willcorrespond to a point created by interpolation of color codewords)

Page 27: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

4.6. SQUISH 27

• Calculate optimal color codewords for the clustering

The last two steps are repeated for each clustering that preserves the ordering.The result that gives the lowest error is chosen.

Page 28: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

28 CHAPTER 4. COMMON TEXTURE COMPRESSION SYSTEMS

Page 29: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Chapter 5

ftc

Most existing texture compression systems use a small number of color code-words, generate more colors from these in some way and then choose one of thegenerated colors on a per-texel basis. Often the image quality is limited by theprocess that generates more colors (and their limited number) when the colorcodewords are far away from each other in color space, while it is limited bythe precision of the color codewords, when these are near to each other in colorspace. The approaches to texture compression in this chapter sacrifice someprecision in the color codewords when they are far from each other to be able tosignificantly increase precision for color codewords that are near to each otherin color space.

Floating precision texture compression refers to texture compression systemsthat use variable precision in color codewords, depending on how near thesecolor codewords are to each other in color space: Instead of storing the colorcodewords independently with fixed precision only one is stored directly, andthe other(s) is (are) stored as a difference from the first one. When the colorcodewords are near to each other more bits are used for the first one, whilethe difference(s) is (are) stored with less bits and is (are) sign-extended beforeadding it (them) to the first one to retrieve the the final color codeword(s).

Section 5.1 presents ftc1, the ftc texture compression system for RGB images.The two earlier approaches from which it evolved are discussed in section 5.8.The design goal of ftc was to preserve the strengths of DXT1 while achievingimprovements for textures where DXT1 does not perform so well. Section 5.2proves that ftc will never perform much worse than DXT1 for a given texture.For real-world images and textures the situation is even better: The textureswhere ftc performs worse than DXT1 or ETC are few and the difference is nevernoticeable, while there are textures, where ftc performs a lot better than DXT1and ETC. These experimental results can be found in section 5.4. As usual withtexture compression systems only the decompression algorithm, but not thecompression algorithm is specified. Section 5.3 presents a possible compressionalgorithm derived from the squish compression algorithm for DXT1. It is thealgorithm used to obtain the experimental results mentioned above.

29

Page 30: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

30 CHAPTER 5. FTC

R R G

0

30

10

BBG

20

32

30

32

Texel indices

64

Exponent

Figure 5.1: ftc1 data layout

In section 5.5 three approaches to applying floating precision texture com-pression to RGBA images are discussed, the first suitable for simple 1-bit trans-parency, the other two for images with a full alpha channel. The second ap-proach combines ftc1 with S3TC’s alpha-channel compression to create a formatthat will offer (in the RGB channels) the same advantages over DXT5 that ftc1offers over DXT1 and performs identically in the alpha channel. The third for-mat presents a more novel approach, which uses ftc’s strengths to achieve a8:1 compression ratio (currently used texture compression systems for RGBAimages achieve a 4:1 compression ratio) while still achieving competitive imagequality. Corresponding experimental results can be found in section 5.6.

Limitations of ftc are presented in section 5.7; Possible directions for futureresearch based on ftc are discussed in section 5.9.

5.1 Compression of RGB images

The ftc texture compression system for RGB images, ftc1, has been designedto replace DXT1. It offers better image quality than DXT1 at the same com-pression ratio. Decompression algorithm and hardware are rather simple andhave some potential for parallelization. In hardware implementations a largepart of the decompression hardware can be shared with DXT1 decompressionhardware. Compression algorithms can be implemented to provide sufficientspeed for texture compression at runtime.

Basically ftc1 operates in a way similar to DXT1. Two color codewords arestored, four colors are obtained by interpolation between these colors, for eachtexel one of the four colors is chosen. The main difference is in the way thecolor codewords are stored, with ftc1 offering higher precision when the colorcodewords are near to each other in color space.

Page 31: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.2. ERROR BOUNDS 31

The ftc1 data layout can be seen in figure 5.1: There is a 2-bit exponent sand for each of the three colors 10 bits are stored. The first (5 + s) bits are thecomponent of the primary color p. The other (5− s) bits are a difference valued that gives the component of the secondary color relative to the primary color.To obtain the secondary color at (5 + s) bits of precision the difference value dis sign-extended to (5 + s) bits and added to p. Thus depending on the distanceof the color codewords the effective precision can be anywhere from 5 to 8 bits.Both values are then expanded to the number of bits used per color channel bythe implementation (typically 8).

Let (rp, gp, bp) be the first color codeword obtained, (rs, gs, bs) the sec-ond color codeword obtained. It can be seen that their role is symmetric:In the previous approach for each pair of color codewords generated there isa compressed block from which the same color codewords are generated, butwith their roles reversed. Both color codewords have a precision of (5 + s)bits. Thus one additional bit of information can be encoded by the order ofthese color codewords. This is used to choose the interpolation mode. Iffrs < rp ∨ rs = rp ∧ gs < gp ∨ rs = rp ∧ gs = gp ∧ gs ≤ gp the alternativeinterpolation mode is used.

The pseudocode of algorithm 2 is the algorithm just described in wordsabove. A C implementation of the algorithm can be found in section A.2 in theappendix.

As can be seen in figure 5.1 for each color channel primary color and dif-ference value are stored next to each other. This results in fixed boundariesbetween the bits allocated to each color channel, easing hardware implementa-tion and parallelization.

Figure 5.2 illustrates that this approach achieves the design goal of improv-ing compression quality for textures with small local chrominance variations: Incontrast to other compression systems ftc1 causes no visible comrpession arti-facts in the image gradient (while the example image features an image gradientcreated to better show the differences in compression quality, image gradientsare common e. g in watercolor paintings or sunsets).

5.2 Error bounds

Since S3TC is the most used texture compression system and some textures areeven created by modifying textures that already were S3TC-compressed onceit is important for new texture compression systems to achieve high quality attextures where S3TC does.

The following result shows that ftc1’s worst-case error is bounded by S3TC’serror:

For a given RGB texture image with 8 bits per channel let DMAE be theMAE of the ftc1-compressed texture minus the MAE of the DXT1-compressedtexture. Let DRMSE be the analogue for RMSE.

Page 32: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

32 CHAPTER 5. FTC

Input : A compressed block, 64 bit long, consisting of base colorcodeword (rb, gb, bb), color distance (rd, gd, bd), 2-bit exponente, 2-bit texel indices i0...15

Output: A 4× 4 block of RGB texels t0...15(rp, rs) := DecodeColor(rb, rd, e);(gp, gs) := DecodeColor(gb, gd, e);(bp, bs) := DecodeColor(bb, bd, e);c0 := (rp, gp, bp);c1 := (rs, gs, bs);// Color interpolation:if rs < rp ∨ rs = rp ∧ gs < gp ∨ rs = rp ∧ gs = gp ∧ bs ≤ bp then

// Alternative color interpolation modec2 := (c0 + c1)/2;c3 := (0, 0, 0);

elsec2 := (2c0 + c1)/3;c3 := (c0 + 2c1)/3;

for j = 0 . . . 15 dotj := cij ;

Algorithm 2: ftc1 decompression algorithm

Input : A (5 + e)-bit base color b, a (5− e)-bit distance d and the 2-bitexponent e

Output: Two 8-bit colors p and s// Expand b to 8 bits to get p:p := (b << (3− e))|(b >> (2 + e ∗ 2));// Calculate t by adding the signed value d to b:t := (b+ sign extend(d))&(0xff >> (3− e);// Expand t to 8 bits to get s:s := (t << (3− e))|(t >> (2 + e ∗ 2));

Algorithm 3: DecodeColor

Page 33: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.2. ERROR BOUNDS 33

(a) Original image (b) ftc1-compressed image, no visiblecompression artifacts, RMSE ≈ 0.95

(c) DXT1-compressed image, colorbands, RMSE ≈ 1.58

(d) ETC-compressed image, color bandswith jagged edges, RMSE ≈ 3.62

Figure 5.2: Image gradient

Page 34: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

34 CHAPTER 5. FTC

DMAE, DRMSE ≤255

2(25 − 1)≈ 4.11,

Proof: Since both MAE and RMSE are metrics, by the triangle inequalityDMAE ans DRMSE are bounded by the maximum difference (in the respectivemetric) of a DXT1-compressed texture to the nearest ftc1-compressed texture.Let δ0, . . . , δ3 be the differences of the 4 colors used in a block. Since themiddle colors are obtained by interpolation from the color codewords δ1, δ2 ≤max{δ0, δ3}. Since ftc1 is able to exactly represent the red and blue parts ofcolor codewords used in DXT1 it is sufficient to look at the green channel tocalculate these differences. There is only one case where ftc1 cannot representDXT1’s green values exactly: When DXT1 used a precision of 6 bits, while ftc1uses 5 bits. In the worst case the green value used by DXT1 is near the middlebetween two possible green values from ftc1. Thus the maximum δ0, δ3 is halfof the distance between ftc1’s green values:

δ0, δ3 ≤255(25 − 1)−1

2From this we can obtain the claimed values:

DMAE ≤1N

N−1∑i=0

maxj{δij} ≤ maxj{δj} ≤255(25 − 1)−1

2=

2552(25 − 1)

DRMSE ≤

√√√√ 1N

N−1∑i=0

maxj{δ2ij} ≤√

maxj{δ2j } ≤

√(255(25 − 1)−1

2

)2

=255

2(25 − 1).

In a similar way DXT1’s worst-case error is bounded by ftc1’s error:For a given RGB texture image with 8 bits per channel let D′MAE be the

MAE of the DXT1-compressed texture minus the MAE of the ftc1-compressedtexture.

D′MAE ≤255

(25 − 1)+

2552(26 − 1)

≈ 10.25,

The proof is similar to the above, but with

δ′1,3;r,b ≤255(25 − 1)−1

2, δ′1,3;g ≤

255(26 − 1)−1

2since the color codeword can differ in all three color channels, and DXT1

has a precision of 5 bits in red and blue channels and a precision of 6 bits in thegreen channel.

Page 35: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.3. COMPRESSION ALGORITHM 35

5.3 Compression algorithm

While the basic structure of this ftc1 compression algorithm 4 is derived fromthe DXT1 squish algorithm 1 there are some important differences.

The floating precision in the color codewords leads to two changes.Endpoints have to be encoded and decoded instead of just clamping to a

grid, since the possible precision depends on their distance.

Input : A 4× 4 block of uncompressed texelsOutput: FTC1-compressed blockDetermine the principle component;Order the texel colors by their projection onto the principle component;for all clusterings of texel colors into three clusters preserving order do

Compute optimal endpoints;EncodeEndpoints() at standard precision;Keep solution if it results in the minimal error encountered so far;if Previous EncodeEndpoints() suggested to try at reduced precisionthen

EncodeEndpoints() at reduced precision;Keep solution if it results in the minimal error encountered so far;

for all clusterings of texel colors into four clusters preserving order doCompute optimal endpoints;EncodeEndpoints() at standard precision;Keep solution if it results in the minimal error encountered so far;if Previous EncodeEndpoints() suggested to try at reduced precisionthen

EncodeEndpoints() at reduced precision;Keep solution if it results in the minimal error encountered so far;

Use the kept solution to encode the block;Algorithm 4: ftc1 compression algorithm

Instead of just using the maximum number of bits allowed by the distanceof endpoints it can be a better choice to use less bits instead, since the encodedendpoints are expanded to R8G8B8 values before use: some R8G8B8 that can-not be exactly represented using the maximum number of possible bits can berepresented with less bits. To illustrate consider a simplified example, 2- and3-bit values that are expanded to 4-bit values. Since expansion is done by repli-cating the more significant bits in the new less significant bits, the expansionof 2-bit values is 00 7→ 0000, 01 7→ 0101, 10 7→ 1010, 11 7→ 1111. Consider thevalue 0101, which can be obtained by expanding the 2-bit value 01. It cannotbe expanded from a 3-bit value (the nearest values are 0100, obtained from 010and 0110, obtained from 011). Therefore if the exponent was 1 or 2, encodingwith a smaller exponent will be tried, too. For exponent 0 this is unnecessary,since no smaller exponent is allowed, for exponent 3 8-bit precision is obtained,thus R8G8B8 values are represented exactly.

Page 36: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

36 CHAPTER 5. FTC

Input : Two RGB colors and a choice between standard and reducedprecision

Output: Encoded colors and a suggestion whether to try again atreduced precision

for e = 3 . . . 0 doTryEncode(e);if TryEncode() succeeded then

if precision = reduced ∨ e = 0 thenif e = 1 ∨ e = 2 then

Suggest to try at reduced precision, too.Return encoding given by TryEncode() above;

elseprecision: = standard;

Algorithm 5: EncodeEndpoints()

Since the compression algorithm operates on individual, independent blocksof 4×4 texels it can be easily parallelized. On modern graphics hardware, whereshaders are available the compression algorithm could be implemented directlyon the graphics card.

5.4 RGB image experiments

To compare ftc1 to existing texture compression systems benchmark images havebeen chosen. Since images typically used for comparison in image compressionare rather different from typically used textures, most of the benchmark imageschosen are real-world examples of textures used in video games. These havebeen compressed with multiple texture compression systems and the resultingimage quality has been measured.

The benchmark images chosen come from three categories:

• Images typically used for this purpose in other papers on texture com-pression: The most important ones are the lena image, commonly used inimage compression for comparison purposes and the lorikeet image, whichhas been used in the papers on PVRTC and ETC.

• Images from the strategy game glest: The textures that do not use analpha channel have been selected for the comparison. These textures showhow the texture compression systems perform at textures that are used inapplications that show a relatively large scene.

• Images from the role-playing game scourge: The textures that do not havean alpha channel together with some images where a 1-bit alpha channelhas been removed have been selected for the comparison. These texturesshow how the texture compression systems perform at textures that areused in applications that display a world from a closeup perspective.

Page 37: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.4. RGB IMAGE EXPERIMENTS 37

(a) lena (b) lorikeet

(c) glest/forest/surface1/surface1h (d) scourge/textures/mutton

Figure 5.3: Some RGB images used for comparison

Page 38: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

38 CHAPTER 5. FTC

Image ftc1 DXT1 ETC fast mode ETC medium modelena 12.1 s 4.7 s 2.4 s 901.9 slorikeet 11.8 s 5.1 s 2.4 s 927.1 s

Table 5.1: Compression time on one core of a 1.4 GHz Core 2 Duo

Resulting in a total of 333 images.ftc1 has been compared to two other texture compression systems, DXT1

and ETC. DXT1 has been chosen since it is still the most used compressionsystem for RGB images, ETC as an example of a newer compression system.Even though PVRTC has gained some popularity in embedded systems ftc1 hasnot been compared to it due to the lack of information and tools about PVRTC.No sourcecode of a PVRTC compression algorithm is available to the public.There are no publications on currently used PVRTC compression algorithms(the original paper [21] described PVRTC compression algorithms as an area ofongoing research).

For DXT1 squish has been used for compression, for ftc the algorithm fromsection 5.3, which is derived from squish. For ETC the program etcpack, avail-able from Ericsson [20] including source code has been used. It offers differentspeed / quality tradeoffs (fast, medium and slow mode). Since the fast mode isthe only one to offer compression speed comparable to the compression programsused for DXT1 and ftc1 it has been used (see table 5.1). For all three texturecompression systems parameters have been set to minimize the (R)MSE.

To calculate the DSSIM a C++ SSIM implementation [33] has been modified.The detailed results of the quality comparison can be found in the appendix:

Table B.1 shows the quality of ftc1, DXT1 and ETC measured using all threeerror measures from chapter 3. Table B.2 shows ftc1’s error relative to the errorsof the other two texture compression systems.

Comparing ftc1 to DXT1 using RMSE yields no surprises: For most imagesftc1 is better than DXT1, there are few exceptions and for these exceptionsthe difference between DXT1 and ftc1 is small. About as common as theseexceptions are cases where ftc1 performs a lot better than DXT1. The situationis similar when comparing using MAE. As expected differences between DXT1and ETC comparing RMSE and MAE are bigger, but the general tendency is thesame: ftc1 give better quality than ETC, exceptions are few and and for theseexceptions the difference in quality tends to be much smaller than in the caseswhere ftc1 gives better quality. Again about as common as these exceptions arecases where ftc1 performs a lot better than ETC.

However when using DSSIM, the error measure based on human perception,the situation changes. For nearly all images ftc1 yields better quality thanDXT1 and ETC, again the number of exceptions is small. Comparing ftc1 toDXT1 we see that only very rarely is ftc1’s error bigger than DXT1’s (7 outof 333 images). For six of these images the difference in DSSIM is only 0.01(for the other one it’s 0.04). On the other hand for images where ftc1 is betterthan DXT1 the difference goes as high as 5.08. Comparing ftc1 to ETC gives

Page 39: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.5. COMPRESSION OF RGBA IMAGES 39

similar results: For 66 out of 333 images ETC yields better quality than ftc1. Inthe most extreme case the difference is 0.20. On the other hand for the imageswhere ftc1 gives better quality than ETC the difference goes as high as 5.62.

5.5 Compression of RGBA images

For transparency effects many images have an alpha channel in addition to theirRGB channels. Three ftc variants for such images are discussed here.

A common use of the alpha channel is billboarding, where instead of usinga large number of polygons to model a complex object a small (typically oneor two) number of textured polygons is used. Typical use cases of billboardingare distant trees in realtime computer graphics. Each texel is either part of theobject, then RGB colors matters and it is opaque or it is not part of the object,then it is fully transparent and the color doesn’t matter that much. Thus asingle bit of precision in the alpha channel is sufficient. S3TC offers support forthis in the DXT1 format through the transparent black texels in the alternativecolor interpolation mode. The rationale for making transparent colors blackwas that this would act like a premultiplied alpha [39] as used in the DXT2 andDXT4 formats and would be suitable to bilinear texture filtering. See sectionA.5 in the appendix for more information about premultiplied alpha.

Input : A compressed block, 64 bit long, consisting of base colorcodeword (rb, gb, bb), color distance (rd, gd, bd), 2-bit exponente, 2-bit texel indices i0...15

Output: A 4× 4 block of RGBA texels t0...15(rp, rs) := DecodeColor(rb, rd, s);(gp, gs) := DecodeColor(gb, gd, s);(bp, bs) := DecodeColor(bb, bd, s);c0 := (rp, gp, bp, 1.0);c1 := (rs, gs, bs, 1.0);// Color interpolation:if rs < rp ∨ rs = rp ∧ gs < gp ∨ rs = rp ∧ gs = gp ∧ bs ≤ bp then

// Alternative color interpolation modec2 := (c0 + c1)/2;c3 := (c0 + c1)/2;c3,3 := 0.0;

elsec2 := (2c0 + c1)/3;c3 := (c0 + 2c1)/3;

for j = 0 . . . 15 dotj := cij ;

Algorithm 6: ftc1 decompression algorithm with 1-bit alpha

ftc1 can support this in a similar way to DXT1: In the alternative color

Page 40: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

40 CHAPTER 5. FTC

(a) Original image (b) ftc1-compressed image, preservesedge well, RMSE ≈ 2.33

(c) DXT1-compressed image, preservesedge well, RMSE ≈ 2.62

(d) ETC-compressed image, artifacts atthe edge, RMSE ≈ 23.47

Figure 5.4: Part of a texture where ftc1 performs better than both DXT1 andETC, scourge/texture/snakesta

Page 41: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.5. COMPRESSION OF RGBA IMAGES 41

R R G

0

24

8

BBG

16

32

24

32

Texel indices

64

A A

30

Exponent

Figure 5.5: ftc2 data layout

interpolation mode make the color c3 (in algorithm 2) transparent. This leadsto the decompression algorithm 6. Since it has been designed to be used withnormal alpha instead of premultiplied alpha in transparent texels a color usedby nearby opaque texels should be used instead of black: Set c3 = (c0 + c1)/2instead of c3 = (0, 0, 0). For premultiplied alpha another format that only differsby using black for transparent texels could be designed.

For textures with a real alpha channel this approach is not suitable. Oneapproach is to create a RGBA format from ftc1 in a similar way to how DXT5has been created from DXT1. DXT3 uses a normal 4-bit alpha channel. WhileDXT3 would be superior to DXT5 in some rare cases, most notably white noisein the alpha channel for practical cases DXT5 is superior to DXT3. Thus theftc5 format consists of two 64-bit values per 4 × 4 texel block, the first valuecontaining the RGB channels and to be decompressed like ftc1, the second valuecontains the alpha channel and is to be decompressed like the alpha channel inDXT5. Like ftc1 was designed to deliver superior graphics quality over DXT1 atthe same compression rate ftc5 is designed to deliver superior graphics qualityover DXT5 at the same compression rate. Like with ftc1 there is only a minimalamount of additional hardware needed to support ftc5 when support for S3TCis already implemented.

Since floating-precision texture compression makes better use of the bitsused for color codewords an approach to RGBA texture compression where lessbits than in S3TC are allocated to individual color channels makes sense. Inftc2 the precision of color codewords is reduced to (4 + s) bits per RGB channelcompared to (5 + s) for ftc1. The six bits no longer used for RGB channels areused for the alpha channel resulting in a precision of (3 + s) bits in the alphachannel. The resulting data layout can be seen in figure 5.5, the decompressionalgorithm in algorithm 7. This results in a compression ratio of 8 : 1 (whencompressing 32 bit RGBA images; DXT2-DXT5 have a compression ratio of

Page 42: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

42 CHAPTER 5. FTC

Input : A compressed block, 64 bit long, consisting of base colorcodeword (rb, gb, bb, ab), color distance (rd, gd, bd, ad), 2-bitexponent e, 2-bit texel indices i0...15

Output: A 4× 4 block of RGBA texels t0...15(rp, rs) := DecodeColor2(rb, rd, e);(gp, gs) := DecodeColor2(gb, gd, e);(bp, bs) := DecodeColor2(bb, bd, e);(ap, as) := DecodeAlpha(ab, ad, e);c0 := (rp, gp, bp, ap);c1 := (rs, gs, bs, as);// Color interpolation:if rs < rp ∨ rs = rp ∧ (gs < gp ∨ gs = gp ∧ (bs < bp ∨ bs = bp ∧ as ≤ ap))then

// Alternative color interpolation modec2 := (c0 + c1)/2;c3 := (c0 + c1)/2;c3,3 := 0.0;

elsec2 := (2c0 + c1)/3;c3 := (c0 + 2c1)/3;

for j = 0 . . . 15 dotj := cij ;

Algorithm 7: ftc2 decompression algorithm

Input : A (4 + e)-bit base color b, a (4− e)-bit distance d and the 2-bitexponent e

Output: Two 8-bit colors p and s// Expand b to 8 bits to get p:p := (b << (4− e))|(b >> (0 + e ∗ 2));// Calculate t by adding the signed value d to b:t := (b+ sign extend(d))&(0xff >> (4− e);// Expand t to 8 bits to get s:s := (t << (4− e))|(t >> (0 + e ∗ 2));

Algorithm 8: DecodeColor2

Page 43: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.6. RGBA IMAGE EXPERIMENTS 43

Input : A (3 + e)-bit base alpha b, a (3− e)-bit distance d and the 2-bitexponent e

Output: Two 8-bit colors p and s// Expand b to 8 bits to get p:p := (b << (5− e))|((b << 2) >> (e ∗ 2))|(b >> (1 + e ∗ 3));// Calculate t by adding the signed value d to b:t := (b+ sign extend(d))&(0xff >> (5− e);// Expand t to 8 bits to get s:s := (t << (5− e))|((t << 2) >> (2 + e ∗ 2))|(t >> (1 + e ∗ 3));

Algorithm 9: DecodeAlpha

4 : 1 in this case). As for ftc2 above this format has been designed for normalalpha, thus setting the RGB values c3 to the middle point. For premultipliedalpha a format that sets the RGB channels of c3 to black could be designed.

At the abstraction level of pseudocode the compression algorithm is basicallythe same as for RGB images (algorithm 4), with one change in EncodeEnd-points(): Retrying at reduced precision should be tried for exponent 3, too,since it is no longer possible to represent all 8-bit color values exactly in thecolor codewords, even when they lie near to each other.

5.6 RGBA image experiments

For the RGBA variant of ftc1 no experiments are necessary, since the resultsfrom RGB images will still hold. Similar for ftc5 vs DXT5 since they encodethe alpha channel in the same way and for the difference in RGB encodingthe results from RGB images will mostly hold (except for DXT5 lacking ftc2’salternative color interpolation mode). Thus only ftc2 has to be compared toexisting texture compression systems for RGBA images. Since ETC does notsupport RGBA textures ftc2 has been compared to DXT5 and the rarely usedDXT3 only.

squish is heavily optimized and many aspects of S3TC are hardcoded in it,thus it would have been very difficult to create compression and decompressionprograms for ftc2 based on squish. Instead these have been implemented fromscratch based on the pseudocode of algorithm 4. For DXT5 and DXT3 squishhas been used.

For the comparison three RGBA textures from glest have been used. Theexperimental results can be seen in table 5.2. It can be seen that both DXT5and DXT3 yield better image quality than ftc2. However the difference is notlarge and when measured by DSSIM, the error measure based on human per-ception, it is very small. Considering that ftc2 has twice the compression ratioof DXT5/DXT3 these results are excellent, since for a given image size ftc2 willyield superior quality due to the higher resolution possible (in figure 5.6 this isshown for the archer texture).

Page 44: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

44 CHAPTER 5. FTC

Image ftc2 DXT5 DXT3archer 9.24 / 9.12 / 0.27 7.69 / 7.57 / 0.24 8.03 / 7.70 / 0.24swordman 10.64 / 10.55 / 0.30 9.09 / 9.04 / 0.29 9.39 / 9.14 / 0.29worker 9.86 / 9.89 / 0.21 8.57 / 8.35 / 0.21 8.70 / 8.38 / 0.21

Table 5.2: Experimental results for RGBA images (MAE / RMSE / DSSIM)

(a) Uncompressed image, 88× 88 texels (b) ftc2-compressed image, 256 × 256texels

(c) DXT5-compressed image, 180× 180texels

(d) DXT3-compressed image, 180× 180texels

Figure 5.6: Archer texture resized (linear interpolation) and compressed toachieve a file size of 32 KB. Trousers and collar, here displayed gray, are semi-transparent in the texture (and in game show the player’s color).

Page 45: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.7. LIMITATIONS 45

(a) Original block (b) ftc1-compressed block RMSE ≈104.21

(c) DXT1-compressed block RMSE ≈104.16

(d) ETC-compressed block RMSE ≈146.05

Figure 5.7: Block with three colors that do not lie near a line in color spaceconstructed as example

5.7 Limitations

ftc chooses a line in color space for each block and approximates all colors in theoriginal image by colors on this line. Thus it will not perform well for imageswhere colors in 4 × 4-texel blocks cannot be well approximated by such a line.The most obvious example of such a situation is three different colors in a block.

This is illustrated by the example constructed in figure 5.7. Fortunately suchblocks are rare in common textures and images; one can be found in the lorikeetimage used earlier: See figure 5.8.

However as can be seen in the figures such blocks are highly problematic forother texture compression systems, too.

Page 46: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

46 CHAPTER 5. FTC

(a) Original block (b) ftc1-compressed block RMSE ≈29.47

(c) DXT1-compressed block RMSE ≈29.39

(d) ETC-compressed block RMSE ≈28.02

Figure 5.8: Block with three colors that do not lie near a line in color spacetaken from lorikeet image

Page 47: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.8. DISCUSSION 47

B G R

0

18

30

6 12

RGB

22 26

18

32

30

32

Texel indices

64

Exponent

Figure 5.9: First approach: Fixed precision primary color, floating precisionsecondary color

5.8 Discussion

ftc1 has been created by analyzing DXT1 and creating a texture compressionsystem that preserves DXT1’s strengths while eliminating its weakness of notbeing able to represent small variations in color exactly. Before ftc1 as presentedabove in section 5.1 there were two earlier approaches trying to achieve this goal.Analyzing their weaknesses led to ftc1.

The first approach was to use floating precision in the second color code-word only. The two RGB565 color codewords from DXT1 have been replacedby a RGB666 base codeword, a RGB444 distance and a 2 bit exponent for thedistance. The alternative color interpolation mode has been removed for sim-plicity since in this approach the role of the two color codewords is no longersymmetric, thus their order can’t be used to encode additional information.

A compressed texture block can be decompressed as follows:

• Appending the two most-significant bits of each color to the end expandseach 6-bit color from the base codeword to an 8 bit color. This yields aRGB888 color, which is used as the first color for interpolation.

• The distance is sign sign extended, shifted to the right by the exponentand extended to 6 bits of precision. This distance is added to the basecodeword. The result is expanded to 8 bits to yield the second color forinterpolation.

• Four colors are obtained by interpolation between the two colors. Decod-ing of individual texels is done as in DXT1.

While this approach yielded quality improvements over DXT1 for some im-ages the quality was worse than DXT1 for others.

Page 48: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

48 CHAPTER 5. FTC

B G R

0

30

RGB

32

30

32

Texel indices

64

Exponent

Figure 5.10: Floating precision primary and secondary colors

The next step was to allow for floating precision in both color codewords.The color codewords are stored as follows: A RGB(5 + e)(5 + e)(5 + e) basecodeword followed by a RGB(5 − e)(5 − e)(5 − e) distance and the two bitexponent e. Depending on the distance between the two colors they thus havea precision between RGB555 to RGB888.

A compressed texture block is decoded as follows:

• Using the value e, which is at a fixed position in the data block the basecodeword and distance are extracted.

• The base codeword is expanded to a RGB888 value by appending the3 − e last bits of each color to the end. This yields the first color forinterpolation.

• The distance value’s colors are sign-extended to (5+e) bits. The resultingRGB(5 + e)(5 + e)(5 + e) value is added to the base codeword. The resultis expanded to an RGB888 value to obtain the second color codeword forinterpolation.

• Four colors are obtained by interpolation between the two colors. Decod-ing of individual texels is done as in DXT1.

This approach yielded superior quality to DXT1 for nearly all images. An-alyzing the exceptions showed that the blocks were it performed significantlyworse than DXT1 were those were the alternative interpolation (creating threeinstead of four colors by interpolation and using black as the fourth color) wasused by DXT1. Thus the final approach reintroduced this alternative inter-polation (and changed the data layout to ease (hardware) implementation andparallelization).

Page 49: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

5.9. FUTURE WORK 49

5.9 Future Work

The idea of floating precision texture compression can be applied to any texturecompression system that uses color codewords.

While this work focused on creating systems similar to S3TC, PVRTC [21]is likely to profit from such an approach. While PVRTC needs more memoryaccesses than S3TC it can yield better quality at the same compression ratio.It seems reasonable to assume that the image quality could be improved furtherwithout changing compression ratio or number of memory accesses needed byusing floating precision texture compression. Unfortunately the secrecy, non-disclosure-agreements and patents surrounding PVRTC make this a difficulttask. There is no source code or description of a currently used compressionalgorithm available. No OpenGL extension specification has been submitted tothe OpenGL extension registry. Since the original paper [21] no further researchhas been published.

Other possible directions for future work would be creating a normal mapcompression system based on ftc or applying it to the various S3TC-based HDRtexture compression systems.

Page 50: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

50 CHAPTER 5. FTC

Page 51: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Appendix A

Implementing ftc

This appendix contains information mostly relevant to implementing ftc. Start-ing with two OpenGL/OpenGL ES extension specifications (OpenGL (OpenGLES) extensions are a mechanism to allow to add new functionality to OpenGL(OpenGL ES) before it becomes part of the standard) in section A.1 that showhow ftc texture compression can be exposed in the OpenGL (OpenGL ES) API.The first specification contains support for ftc1 only, as can be suitable for someembedded systems where available resources are very limited. The second ex-tension contains all texture compression systems (ftc1, ftc2 and ftc5) mentionedabove. Section A.2 contains an implementation of the ftc1 decompression algo-rithm in C. It has been used to implement the first extension specification in thesoftware rasterizer of the Mesa OpenGL implementation. Section A.3 discussesthe Karhunen-Loeve transform useful for implementing compression algorithms.Section A.4 discusses texture filtering, one of the reasons fast access to individ-ual texels is so important in texture compression. Finally section A.5 discussesthe alpha channel and premultiplied alpha. The use of normal or premultipliedalpha affects the design of texture compression algorithms or images with analpha channel, like ftc2.

A.1 OpenGL extensions

In OpenGL and OpenGL ES new features are usually exposed through exten-sions before they make it into the OpenGL standard. This section containsextension specifications for use of ftc in OpenGL.

The first extension, GL EXT texture compression ftc1 provides support foruse of precompressed ftc1 textures in rendering. It does not require the hardwaredriver to be capable of compressing textures. It exposes functionality suited evenfor low-end embedded systems.

Name

EXT_texture_compression_ftc1

51

Page 52: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

52 APPENDIX A. IMPLEMENTING FTC

Name Strings

GL_EXT_texture_compression_ftc1

Contributors

Philipp Klaus Krause

Contact

Philipp Klaus Krause (philipp ’at’ colecovision.eu)

Status

NOT YET COMPLETE

Notice

Copyright Philipp Klaus Krause, 2008-2009

Version

Date: February 22, 2009

Revision: 0.2

Number

OpenGL Extension # NOT YET ASSIGNED

OpenGL ES Extension # NOT YET ASSIGNED

Dependencies

OpenGL-ES 1.0 or OpenGL 1.1 with GL_ARB_texture_compression or

OpenGL 1.3 is required. This extension references the OpenGL 1.3

specification, on which the OpenGL-ES 1.0 specification is based.

Overview

This extension introduces two new block-based texture compression

formats, one suited for RGB textures, the other suited for RGBA

textures requiring only a 1-bit alpha channel.

The formats are designed to reduce the storage requirements

and memory bandwidth required by a factor of 6-to-1 over

uncompressed RGB8 textures and by a factor of 8-to-1 over

uncompressed RGBA textures. The formats achieve the same compression

ratio as DXT1 and can provide better image quality.

To ease implementation in embedded systems the driver is not

Page 53: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 53

required to be capable of compressing textures into the ftc1 formats.

IP Status

TODO: WRITE THIS

New Procedures and Functions

None

New Tokens

Accepted by the <internalformat> parameter of CompressedTexImage2D

and the <format> parameter of CompressedTexSubImage2D:

COMPRESSED_RGB_FTC1_EXT 0x6000

COMPRESSED_RGBA_FTC1_EXT 0x6001

TODO: 0x6000 and 0x6001 ARE ENUMERANT VALUES FOR TEMPORARY USE.

THEY WILL HAVE TO BE CHANGED BEFORE THE FINAL VERSION

CompressedTexImage2D and CompressedTexSubImage2D are the only

functions that support the ftc1 texture formats.

Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)

-- Section 3.8.1, Texture Image Specification

Table 3.17: Specific Compressed Internal Formats

Compressed Internal Format Base Internal Format

========================== ====================

COMPRESSED_RGB_FTC1_EXT RGB

COMPRESSED_RGBA_FTC1_EXT RGBA

-- Section 3.8.3, Compressed Texture Images

Add at the end of the CompressedTexImage discussion:

"If <internalformat> is COMPRESSED_RGB_FTC1_EXT or COMPRESSED_RGBA_FTC1_EXT,

the compressed texture is stored using in a ftc1 compressed texture image

format. The ftc1 texture compression systems supports only 2D images

without borders. CompressedTexImage1D and CompressedTexImage3D produce an

INVALID_ENUM error if <internalformat> is COMPRESSED_RGB_FTC1_EXT or

COMPRESSED_RGBA_FTC1_EXT. CompressedTexImage2D will produce an

INVALID_OPERATION error if <border> is non-zero. CompressedTexSubImage2D

will result in an INVALID_OPERATION error only if one of the following

conditions occurs:

* <width> is not a multiple of four or equal to TEXTURE_WIDTH.

Page 54: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

54 APPENDIX A. IMPLEMENTING FTC

* <height> is not a multiple of four or equal to TEXTURE_HEIGHT.

* <xoffset> or <yoffset> is not a multiple of four.

The contents of any 4x4 block of texels of an ftc1 compressed texture

image that does not intersect the area being modified are preserved

during valid TexSubImage2D and CopyTexSubImage2D calls."

Dependencies on ARB_texture_compression

If ARB_texture_compression is supported, all the

errors and accepted tokens for CompressedTexImage1D,

CompressedTexImage2D, CompressedTexImage3D, CompressedTexSubImage1D,

CompressedTexSubImage2D, and CompressedTexSubImage3D also apply

respectively to the ARB-suffixed CompressedTexImage1DARB,

CompressedTexImage2DARB, CompressedTexImage3DARB,

CompressedTexSubImage1DARB, CompressedTexSubImage2DARB, and

CompressedTexSubImage3DARB.

Dependencies on ARB_texture_compression

If ARB_texture_compression is supported, all the

errors and accepted tokens for CompressedTexImage1D,

CompressedTexImage2D, CompressedTexImage3D, CompressedTexSubImage1D,

CompressedTexSubImage2D, and CompressedTexSubImage3D also apply

respectively to the ARB-suffixed CompressedTexImage1DARB,

CompressedTexImage2DARB, CompressedTexImage3DARB,

CompressedTexSubImage1DARB, CompressedTexSubImage2DARB, and

CompressedTexSubImage3DARB.

Errors

INVALID_ENUM is generated by CompressedTexImage1D

or CompressedTexImage3D if <internalformat> is

COMPRESSED_RGB_FTC1_EXT or COMPRESSED_RGBA_FTC1_EXT.

INVALID_OPERATION is generated by CompressedTexImage2D

if <internalformat> is COMPRESSED_RGB_FTC1_EXT or COMPRESSED_RGBA_FTC1_EXT

and <border> is not equal to zero.

INVALID_ENUM is generated by CompressedTexSubImage1D or

CompressedTexSubImage3D if <format> is COMPRESSED_RGB_FTC1_EXT or

COMPRESSED_RGBA_FTC1_EXT.

INVALID_OPERATION is generated by TexSubImage2D, CopyTexSubImage2D,

or CompressedTexSubImage2D if TEXTURE_INTERNAL_FORMAT is

COMPRESSED_RGB_FTC1_EXT or COMPRESSED_RGBA_FTC1_EXT and any of the

following apply: <width> is not a multiple of four or equal to

TEXTURE_WIDTH; <height> is not a multiple of four or equal to

TEXTURE_HEIGHT; <xoffset> or <yoffset> is not a multiple of four.

Page 55: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 55

The following restrictions from the ARB_texture_compression

specification do not apply to the ftc1 texture format, since subimage

modification is straightforward as long as the subimage is properly

aligned.

DELETE: INVALID_OPERATION is generated by TexSubImage1D, TexSubImage2D,

DELETE: TexSubImage3D, CopyTexSubImage1D, CopyTexSubImage2D, or

DELETE: CopyTexSubImage3D if the internal format of the texture image is

DELETE: compressed and <xoffset>, <yoffset>, or <zoffset> does not equal

DELETE: -b, where b is value of TEXTURE_BORDER.

DELETE: INVALID_VALUE is generated by CompressedTexSubImage1D,

DELETE: CompressedTexSubImage2D, or CompressedTexSubImage3D if the

DELETE: entire texture image is not being edited: if <xoffset>,

DELETE: <yoffset>, or <zoffset> is greater than -b, <xoffset> + <width> is

DELETE: less than w+b, <yoffset> + <height> is less than h+b, or <zoffset>

DELETE: + <depth> is less than d+b, where b is the value of

DELETE: TEXTURE_BORDER, w is the value of TEXTURE_WIDTH, h is the value of

DELETE: TEXTURE_HEIGHT, and d is the value of TEXTURE_DEPTH.

Appendix

ftc1 Compressed Texture Image Formats

Compressed texture images stored using the ftc1 compressed image formats

are represented as a collection of 4x4 texel blocks, where each block

contains 64 bits of texel data. The image is encoded as a normal 2D

raster image in which each 4x4 block is treated as a single pixel. If

an ftc1 image has a width or height less than four, the data corresponding

to texels outside the image are irrelevant and undefined.

When an ftc1 image with a width of <w>, height of <h>, is decoded, the

corresponding image size (in bytes) is:

ceil(<w>/4) * ceil(<h>/4) * 4.

When decoding an ftc1 image, the block containing the texel at offset

(<x>, <y>) begins at an offset (in bytes) relative to the base of the

image of:

4 * (ceil(<w>/4) * floor(<y>/4) + floor(<x>/4)).

The data corresponding to a specific texel (<x>, <y>) are extracted from a

4x4 texel block using a relative (x,y) value of

(<x> modulo 4, <y> modulo 4).

There are two ftc1 image formats:

COMPRESSED_RGB_FTC1_EXT:

Page 56: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

56 APPENDIX A. IMPLEMENTING FTC

Each RGB image data block is encoded as a sequence of 8 bytes, called (in

order of increasing address):

c_0, c_1, c_2, c_3, bits_0, bits_1, bits_2, bits_3

The 8 bytes of the block are decoded into three quantities:

color = c_0 + 256 * (c_1 + 256 * (c_2 + 256 * c_3))

bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3))

color is a 32-bit unsigned integer. Its two most significant bits

interpreted as 2-bit unsigned integer ar the exponent. The least

significant 10 bits are the red component, bits 10 to 19 are the green

component, bits 20 to 29 are the blue component. For each component the

least significant (5 + exponent) bits form the base value, while the

other (5 - exponent) bits form the difference value. The base value is

unpacked directly to get the respective component of RGB0. The difference

value is sign extended to (5 + exponent bits) and added to the base value.

The result is unpacked to get the respective component of RGB1.

bits is a 32-bit unsigned integer, from which a two-bit control code

is extracted for a texel at location (x,y) in the block using:

code(x,y) = bits[2*(4*y+x)+1..2*(4*y+x)+0]

where bit 31 is the most significant and bit 0 is the least

significant bit.

When the red component of RGB1 is less than the red component of RGB0 or

they are equal and the green component of RGB1 is less than the one of

RGB1 or both red and green components are equal and the blue component of

RGB1 is less than or equal to the blue component of RGB1 the alternative

color interpolation mode is used.

The RGB color for a texel at location (x,y) in the block is given by:

RGB0, if not in alternative mode and code(x,y) == 0

RGB1, if not in alternative mode code(x,y) == 1

(2*RGB0+RGB1)/3, if not in alternative mode code(x,y) == 2

(RGB0+2*RGB1)/3, if not in alternative mode code(x,y) == 3

RGB0, if in alternative mode and code(x,y) == 0

RGB1, if in alternative mode and code(x,y) == 1

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 2

BLACK, if in alternative mode and code(x,y) == 3

Arithmetic operations are done per component, and BLACK refers to an

RGB color where red, green, and blue are all zero.

Page 57: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 57

Since this image has an RGB format, there is no alpha component and the

image is considered fully opaque.

COMPRESSED_RGBA_FTC1_EXT:

RGB0 and RGB1 and whether to use the alternative color interpolation mode

are extracted in the same way as or COMPRESSED_RGB_FTC1_EXT.

The RGB color for a texel at location (x,y) in the block is given by:

RGB0, if not in alternative mode and code(x,y) == 0

RGB1, if not in alternative mode and code(x,y) == 1

(2*RGB0+RGB1)/3, if not in alternative mode and code(x,y) == 2

(RGB0+2*RGB1)/3, if not in alternative mode and code(x,y) == 3

RGB0, if in alternative mode and code(x,y) == 0

RGB1, if in alternative mode and code(x,y) == 1

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 2

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 3

The alpha component for a texel at location (x,y) in the block is

given by:

0.0, if in alternative mode and code(x,y) == 3

1.0, otherwise

This format will never be used when a generic compressed internal

format (Table 3.16.2) is specified, although the nearly identical

format COMPRESSED_RGB_FTC1_EXT (above) may be.

Revision History

Revision 0.1, November 21, 2008: philipp

- Initial revision.

Revision 0.2, November 30, 2008: philipp

- Added COMPRESSED_RGBA_FTC1_EXT to provide some limited

alpha-channel support.

- Added appendix describing the compressed texture formats.

- Added dependencies on ARB_texture_compression section.

Revision 0.3, February 22, 2009: philipp

- Corrected typos.

The extension GL EXT texture compression ftc provides support for ftc1and the ftc5 and ftc2 formats better suited to RGBA images. It exposes morehardware functionality including support for compression of textures by theOpenGL implementation.

Name

Page 58: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

58 APPENDIX A. IMPLEMENTING FTC

EXT_texture_compression_ftc

Name Strings

GL_EXT_texture_compression_ftc

Contributors

Philipp Klaus Krause

Contact

Philipp Klaus Krause (philipp ’at’ colecovision.eu)

Status

NOT YET COMPLETE

Notice

Copyright Philipp Klaus Krause, 2008-2009

Version

Date: February 22, 2009

Revision: 0.2

Number

OpenGL Extension # NOT YET ASSIGNED

OpenGL ES Extension # NOT YET ASSIGNED

Dependencies

OpenGL-ES 1.0 or OpenGL 1.1 with GL_ARB_texture_compression or

OpenGL 1.3 is required. This extension references the OpenGL 1.3

specification, on which the OpenGL-ES 1.0 specification is based.

Overview

This extension introduces four new block-based texture compression

formats suited for RGB and RGBA textures.

The formats are designed to reduce the storage requirements

and memory bandwidth required by a factor of 6-to-1 over

uncompressed RGB8 textures and by a factor of 8-to-1 or 4-to-1 over

uncompressed RGBA textures. The formats achieve the same compression

ratio as DXT1 and DXT5 and can provide better image quality. One

format achieves a better compression ratio than DXT5.

Page 59: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 59

IP Status

TODO: WRITE THIS

New Procedures and Functions

None

New Tokens

Accepted by the <internalformat> parameter of TexImage2D,

CopyTexImage2D, and CompressedTexImage2D and the <format> parameter

of CompressedTexSubImage2D:

COMPRESSED_RGB_FTC1_EXT 0x6000

COMPRESSED_RGBA_FTC1_EXT 0x6001

COMPRESSED_RGBA_FTC2_EXT 0x6002

COMPRESSED_RGBA_FTC5_EXT 0x6003

TODO: 0x6000 to 0x6003 ARE ENUMERANT VALUES FOR TEMPORARY USE.

THEY WILL HAVE TO BE CHANGED BEFORE THE FINAL VERSION

Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)

-- Section 3.8.1, Texture Image Specification

Table 3.17: Specific Compressed Internal Formats

Compressed Internal Format Base Internal Format

========================== ====================

COMPRESSED_RGB_FTC1_EXT RGB

COMPRESSED_RGBA_FTC1_EXT RGBA

COMPRESSED_RGBA_FTC2_EXT RGB

COMPRESSED_RGBA_FTC5_EXT RGBA

-- Section 3.8.2, Alternative Texture Image Specification Commands

Add to the end of the section:

"If the internal format of the texture image being modified is

COMPRESSED_RGB_FTC1, COMPRESSED_RGBA_FTC1, COMPRESSED_RGBA_FTC2

or COMPRESSED_RGBA_FTC5, the texture is stored using a ftc compressed

texture image encoding (see appendix). Such images are easily edited

along 4x4 texel boundaries, so the limitations on TexSubImage2D or

CopyTexSubImage2D parameters are relaxed. TexSubImage2D and

CopyTexSubImage2D will result in an INVALID_OPERATION error only if

one of the following conditions occurs:

* <width> is not a multiple of four or equal to TEXTURE_WIDTH,

unless <xoffset> and <yoffset> are both zero.

Page 60: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

60 APPENDIX A. IMPLEMENTING FTC

* <height> is not a multiple of four or equal to TEXTURE_HEIGHT,

unless <xoffset> and <yoffset> are both zero.

* <xoffset> or <yoffset> is not a multiple of four.

The contents of any 4x4 block of texels of an ftc compressed texture

image that does not intersect the area being modified are preserved

during valid TexSubImage2D and CopyTexSubImage2D calls."

-- Section 3.8.3, Compressed Texture Images

Add at the end of the CompressedTexImage discussion:

"If <internalformat> is COMPRESSED_RGB_FTC1, COMPRESSED_RGBA_FTC1

COMPRESSED_RGBA_FTC2 or COMPRESSED_RGBA_FTC5, the compressed texture

is stored using a ftc compressed texture image format. The ftc

texture compression algorithms support only 2D images without borders.

CompressedTexImage1D and CompressedTexImage3D produce an INVALID_ENUM

error if <internalformat> is an ftc format. CompressedTexImage2D will

produce an INVALID_OPERATION error if <border> is non-zero.

Add at the end of the CompressedTexSubImage discussion:

"If the internal format of the texture image being modified is

COMPRESSED_RGB_FTC1, COMPRESSED_RGBA_FTC1, COMPRESSED_RGBA_FTC2 or

COMPRESSED_RGBA_FTC5, the texture is stored using a ftc compressed

texture image format. Since the ftc texture compression algorithms

support only 2D images, CompressedTexSubImage1D and

CompressedTexSubImage3D produce an INVALID_ENUM error if <format> is

an ftc format. Since ftc images are easily edited along 4x4 texel

boundaries, the limitations on CompressedTexSubImage2D are relaxed.

CompressedTexSubImage2D will result in an INVALID_OPERATION error

only if one of the following conditions occurs:

* <width> is not a multiple of four or equal to TEXTURE_WIDTH.

* <height> is not a multiple of four or equal to TEXTURE_HEIGHT.

* <xoffset> or <yoffset> is not a multiple of four.

The contents of any 4x4 block of texels of an ftc compressed texture

image that does not intersect the area being modified are preserved

during valid TexSubImage2D and CopyTexSubImage2D calls."

Dependencies on ARB_texture_compression

If ARB_texture_compression is supported, all the

errors and accepted tokens for CompressedTexImage1D,

CompressedTexImage2D, CompressedTexImage3D, CompressedTexSubImage1D,

CompressedTexSubImage2D, and CompressedTexSubImage3D also apply

respectively to the ARB-suffixed CompressedTexImage1DARB,

CompressedTexImage2DARB, CompressedTexImage3DARB,

CompressedTexSubImage1DARB, CompressedTexSubImage2DARB, and

Page 61: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 61

CompressedTexSubImage3DARB.

Errors

INVALID_ENUM is generated by CompressedTexImage1D

or CompressedTexImage3D if <internalformat> is

COMPRESSED_RGB_FTC1_EXT, COMPRESSED_RGBA_FTC1_EXT,

COMPRESSED_RGBA_FTC2_EXT or COMPRESSED_RGBA_FTC5_EXT.

INVALID_OPERATION is generated by CompressedTexImage2D

if <internalformat> is COMPRESSED_RGB_FTC1_EXT,

COMPRESSED_RGBA_FTC1_EXT, COMPRESSED_RGBA_FTC2_EXT or

COMPRESSED_RGBA_FTC5_EXT and <border> is not equal to zero.

INVALID_ENUM is generated by CompressedTexSubImage1D or

CompressedTexSubImage3D if <format> is COMPRESSED_RGB_FTC1_EXT,

COMPRESSED_RGBA_FTC1_EXT, COMPRESSED_RGBA_FTC2_EXT or

COMPRESSED_RGBA_FTC5_EXT.

INVALID_OPERATION is generated by TexSubImage2D, CopyTexSubImage2D,

or CompressedTexSubImage2D if TEXTURE_INTERNAL_FORMAT is

COMPRESSED_RGB_FTC1_EXT, COMPRESSED_RGBA_FTC1_EXT,

COMPRESSED_RGBA_FTC2_EXT or COMPRESSED_RGBA_FTC5_EXT and any of the

following apply: <width> is not a multiple of four or equal to

TEXTURE_WIDTH; <height> is not a multiple of four or equal to

TEXTURE_HEIGHT; <xoffset> or <yoffset> is not a multiple of four.

The following restrictions from the ARB_texture_compression

specification do not apply to ftc texture formats, since subimage

modification is straightforward as long as the subimage is properly

aligned.

DELETE: INVALID_OPERATION is generated by TexSubImage1D, TexSubImage2D,

DELETE: TexSubImage3D, CopyTexSubImage1D, CopyTexSubImage2D, or

DELETE: CopyTexSubImage3D if the internal format of the texture image is

DELETE: compressed and <xoffset>, <yoffset>, or <zoffset> does not equal

DELETE: -b, where b is value of TEXTURE_BORDER.

DELETE: INVALID_VALUE is generated by CompressedTexSubImage1D,

DELETE: CompressedTexSubImage2D, or CompressedTexSubImage3D if the

DELETE: entire texture image is not being edited: if <xoffset>,

DELETE: <yoffset>, or <zoffset> is greater than -b, <xoffset> + <width> is

DELETE: less than w+b, <yoffset> + <height> is less than h+b, or <zoffset>

DELETE: + <depth> is less than d+b, where b is the value of

DELETE: TEXTURE_BORDER, w is the value of TEXTURE_WIDTH, h is the value of

DELETE: TEXTURE_HEIGHT, and d is the value of TEXTURE_DEPTH.

See also errors in the GL_ARB_texture_compression specification.

Appendix:

Page 62: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

62 APPENDIX A. IMPLEMENTING FTC

ftc Compressed Texture Image Formats

Compressed texture images stored using the ftc compressed image formats

are represented as a collection of 4x4 texel blocks, where each block

contains 64 or 128 bits of texel data. The image is encoded as a normal 2D

raster image in which each 4x4 block is treated as a single pixel. If

an ftc image has a width or height less than four, the data corresponding

to texels outside the image are irrelevant and undefined.

When an ftc image with a width of <w>, height of <h>, and block

size of <blocksize> (8 or 16 bytes) is decoded, the corresponding

image size (in bytes) is:

ceil(<w>/4) * ceil(<h>/4) * blocksize.

When decoding an ftc image, the block containing the texel at offset

(<x>, <y>) begins at an offset (in bytes) relative to the base of the

image of:

blocksize * (ceil(<w>/4) * floor(<y>/4) + floor(<x>/4)).

The data corresponding to a specific texel (<x>, <y>) are extracted from a

4x4 texel block using a relative (x,y) value of

(<x> modulo 4, <y> modulo 4).

There are four ftc image formats:

COMPRESSED_RGB_FTC1_EXT: Each 4x4 block of texels consists of 64

bits of RGB image data.

Each RGB image data block is encoded as a sequence of 8 bytes, called (in

order of increasing address):

c_0, c_1, c_2, c_3, bits_0, bits_1, bits_2, bits_3

The 8 bytes of the block are decoded into three quantities:

color = c_0 + 256 * (c_1 + 256 * (c_2 + 256 * c_3))

bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3))

color is a 32-bit unsigned integer. Its two most significant bits

interpreted as 2-bit unsigned integer ar the exponent. The least

significant 10 bits are the red component, bits 10 to 19 are the green

component, bits 20 to 29 are the blue component. For each component the

least significant (5 + exponent) bits form the base value, while the

other (5 - exponent) bits form the difference value. The base value is

unpacked directly to get the respective component of RGB0. The difference

value is sign extended to (5 + exponent bits) and added to the base value.

Page 63: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 63

The result is unpacked to get the respective component of RGB1.

bits is a 32-bit unsigned integer, from which a two-bit control code

is extracted for a texel at location (x,y) in the block using:

code(x,y) = bits[2*(4*y+x)+1..2*(4*y+x)+0]

where bit 31 is the most significant and bit 0 is the least

significant bit.

When the red component of RGB1 is less than the red component of RGB0 or

they are equal and the green component of RGB1 is less than the one of

RGB1 or both red and green components are equal and the blue component of

RGB1 is less than or equal to the blue component of RGB1 the alternative

color interpolation mode is used.

The RGB color for a texel at location (x,y) in the block is given by:

RGB0, if not in alternative mode and code(x,y) == 0

RGB1, if not in alternative mode and code(x,y) == 1

(2*RGB0+RGB1)/3, if not in alternative mode and code(x,y) == 2

(RGB0+2*RGB1)/3, if not in alternative mode and code(x,y) == 3

RGB0, if in alternative mode and code(x,y) == 0

RGB1, if in alternative mode and code(x,y) == 1

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 2

BLACK, if in alternative mode and code(x,y) == 3

Arithmetic operations are done per component, and BLACK refers to an

RGB color where red, green, and blue are all zero.

Since this image has an RGB format, there is no alpha component and the

image is considered fully opaque.

COMPRESSED_RGBA_FTC1_EXT: Each 4x4 block of texels consists of 64

bits of RGB image data and minimal alpha information.

RGB0 and RGB1 and whether to use the alternative color interpolation mode

are extracted in the same way as or COMPRESSED_RGB_FTC1_EXT.

The RGB color for a texel at location (x,y) in the block is given by:

RGB0, if not in alternative mode and code(x,y) == 0

RGB1, if not in alternative mode and code(x,y) == 1

(2*RGB0+RGB1)/3, if not in alternative mode and code(x,y) == 2

(RGB0+2*RGB1)/3, if not in alternative mode and code(x,y) == 3

RGB0, if in alternative mode and code(x,y) == 0

RGB1, if in alternative mode and code(x,y) == 1

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 2

Page 64: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

64 APPENDIX A. IMPLEMENTING FTC

(RGB0+RGB1)/2, if in alternative mode and code(x,y) == 3

The alpha component for a texel at location (x,y) in the block is

given by:

0.0, if in alternative mode and code(x,y) == 3

1.0, otherwise

This format will never be used when a generic compressed internal

format (Table 3.16.2) is specified, although the nearly identical

format COMPRESSED_RGB_FTC1_EXT (above) may be.

COMPRESSED_RGBA_FTC2_EXT: Each 4x4 block of texels consists of 64

bits of RGBA data.

Each RGBA image data block is encoded as a sequence of 8 bytes, called (in

order of increasing address):

c_0, c_1, c_2, c_3, bits_0, bits_1, bits_2, bits_3

The 8 bytes of the block are decoded into three quantities:

color = c_0 + 256 * (c_1 + 256 * (c_2 + 256 * c_3))

bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3))

color is a 32-bit unsigned integer. Its two most significant bits

interpreted as 2-bit unsigned integer ar the exponent. The least

significant 8 bits are the red component, bits 8 to 15 are the green

component, bits 16 to 24 are the blue component. Bits 24 to 29 are the

alpha component. For each RGB component the least significant (4 + exponent)

bits form the base value, while the other (4 - exponent) bits form the

difference value. For alpha the least significant (3 + exponent)bits from

the base value, while the other (3 - exponent) bits form the difference

value. The base value is unpacked directly to get the respective component

of RGBA0. The difference value is sign extended to (5 + exponent bits)

and added to the base value. The result is unpacked to get the respective

component of RGBA1.

bits is a 32-bit unsigned integer, from which a two-bit control code

is extracted for a texel at location (x,y) in the block using:

code(x,y) = bits[2*(4*y+x)+1..2*(4*y+x)+0]

where bit 31 is the most significant and bit 0 is the least

significant bit.

When the red component of RGBA1 is less than the red component of RGBA0 or

they are equal and the green component of RGB1 is less than the one of

RGBA1 or both red and green components are equal and the blue component of

RGBA1 is less than the blue component of RGBA1 or red, green and blue

Page 65: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.1. OPENGL EXTENSIONS 65

components are euqal and the alpha component of RGBA1 is less than or equal

to the alpha component of RGBA1 the alternative color interpolation mode

is used.

The RGBA color for a texel at location (x,y) in the block is given by:

RGBA0, if not in alternative mode and code(x,y) == 0

RGBA1, if not in alternative mode and code(x,y) == 1

(2*RGBA0+RGBA1)/3, if not in alternative mode and code(x,y) == 2

(RGBA0+2*RGBA1)/3, if not in alternative mode and code(x,y) == 3

RGBA0, if in alternative mode and code(x,y) == 0

RGBA1, if in alternative mode and code(x,y) == 1

(RGBA0+RGBA1)/2, if in alternative mode and code(x,y) == 2

If in alternative mode and code(x,y) == 3 the RGB color for the texel at

location (x,y) is given by (RGB0+RGB1)/2, the alpha value is 0.0.

Arithmetic operations are done per component.

COMPRESSED_RGBA_FTC5_EXT: Each 4x4 block of texels consists of 64

bits of RGB data followed by 64 bits of alpha image data.

Each RGB image data block is encoded according to the

COMPRESSED_RGB_FTC1_EXT format.

Each alpha image data block is encoded as a sequence of 8 bytes, called

(in order of increasing address):

alpha0, alpha1, bits_0, bits_1, bits_2, bits_3, bits_4, bits_5

The alpha0 and alpha1 are 8-bit unsigned bytes converted to alpha

components by multiplying by 1/255.

The 6 "bits" bytes of the block are decoded into one 48-bit integer:

bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * (bits_3 +

256 * (bits_4 + 256 * bits_5))))

bits is a 48-bit unsigned integer, from which a three-bit control code

is extracted for a texel at location (x,y) in the block using:

code(x,y) = bits[3*(4*y+x)+1..3*(4*y+x)+0]

where bit 47 is the most significant and bit 0 is the least

significant bit.

The alpha component for a texel at location (x,y) in the block is

given by:

Page 66: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

66 APPENDIX A. IMPLEMENTING FTC

alpha0, code(x,y) == 0

alpha1, code(x,y) == 1

(6*alpha0 + 1*alpha1)/7, alpha0 > alpha1 and code(x,y) == 2

(5*alpha0 + 2*alpha1)/7, alpha0 > alpha1 and code(x,y) == 3

(4*alpha0 + 3*alpha1)/7, alpha0 > alpha1 and code(x,y) == 4

(3*alpha0 + 4*alpha1)/7, alpha0 > alpha1 and code(x,y) == 5

(2*alpha0 + 5*alpha1)/7, alpha0 > alpha1 and code(x,y) == 6

(1*alpha0 + 6*alpha1)/7, alpha0 > alpha1 and code(x,y) == 7

(4*alpha0 + 1*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 2

(3*alpha0 + 2*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 3

(2*alpha0 + 3*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 4

(1*alpha0 + 4*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 5

0.0, alpha0 <= alpha1 and code(x,y) == 6

1.0, alpha0 <= alpha1 and code(x,y) == 7

Revision History

Revision 0.1, November 30, 2008: philipp

- Initial revision.

Revision 0.2, February 22, 2009: philipp

- Corrected typos.

A.2 C code for ftc1 decompression

This implementation of the ftc1 decompression algorithm provides reasonablyfast access to individual texels. It has been used to add support for ftc1 toMesa’s OpenGL software rasterizer. For decompression of whole images at atime the implementation based on the squish library will be faster.

// libtxc_ftc1.h

#include <GL/gl.h>

#define RCOMP 0

#define GCOMP 1

#define BCOMP 2

#define ACOMP 3

// Fetch texel from compressed ftc1 RGB texture

void fetch_2d_texel_rgb_ftc1

(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel);

// Fetch texel from compressed ftc1 RGBA texture

void fetch_2d_texel_rgba_ftc1

(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel);

Page 67: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.2. C CODE FOR FTC1 DECOMPRESSION 67

// libtxc_ftc1.c

#include "txc_ftc1.h"

#include <stdint.h>

#include <stdbool.h>

static int sign_extend(int x, int x_bits, int res_bits)

{

const bool neg = (x >> (x_bits - 1));

if(!neg)

return(x);

for(; x_bits < res_bits; x_bits++)

x |= (1 << x_bits);

return(x);

}

static inline uint_fast8_t expand_to_8_bits(uint_fast8_t input, uint_fast8_t exponent)

{

return((input << (3 - exponent) ) | (input >> (2 + exponent * 2)));

}

static inline uint_fast8_t get_primary_color(uint_fast16_t encoded, uint_fast8_t exponent)

{

return(expand_to_8_bits(encoded & (0xff >> (3 - exponent)), exponent));

}

static inline uint_fast8_t get_secondary_color(uint_fast16_t encoded, uint_fast8_t exponent)

{

const uint_fast8_t primary = (uint_fast8_t)

(encoded & (0xff >> (3 - exponent)));

const uint_fast8_t secondary = (uint_fast8_t)

((primary + sign_extend((encoded >> (5 + exponent)) & (0x1f >> exponent), 5 - exponent, 5 + exponent))

& (0xff >> (3 - exponent)));

return(expand_to_8_bits(secondary, exponent));

}

static void get_texel_from_ftc1_block(GLubyte *texel, const GLubyte *block, GLint i, GLint j, bool rgba)

{

const uint_fast32_t colors =

((uint_fast32_t)block[0] << 0) |

((uint_fast32_t)block[1] << 8) |

((uint_fast32_t)block[2] << 16) |

((uint_fast32_t)block[3] << 24);

const uint_fast32_t texel_indices =

((uint_fast32_t)block[4] << 0) |

((uint_fast32_t)block[5] << 8) |

((uint_fast32_t)block[6] << 16) |

((uint_fast32_t)block[7] << 24);

const uint_fast8_t index_pos = 2 * (j * 4 + i);

Page 68: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

68 APPENDIX A. IMPLEMENTING FTC

const uint_fast8_t texel_index = (uint_fast8_t)((texel_indices >> index_pos) & 0x03);

const uint_fast8_t exponent = (colors >> 30);

const uint_fast16_t red_colors = (colors >> 0) & 0x3ff;

const uint_fast16_t green_colors = (colors >> 10) & 0x3ff;

const uint_fast16_t blue_colors = (colors >> 20) & 0x3ff;

texel[ACOMP] = 255;

if(texel_index == 0)

{

texel[RCOMP] = get_primary_color(red_colors, exponent);

texel[GCOMP] = get_primary_color(green_colors, exponent);

texel[BCOMP] = get_primary_color(blue_colors, exponent);

}

else if(texel_index == 1)

{

texel[RCOMP] = get_secondary_color(red_colors, exponent);

texel[GCOMP] = get_secondary_color(green_colors, exponent);

texel[BCOMP] = get_secondary_color(blue_colors, exponent);

}

else

{

const uint_fast8_t primary_red = get_primary_color(red_colors, exponent);

const uint_fast8_t primary_green = get_primary_color(green_colors, exponent);

const uint_fast8_t primary_blue = get_primary_color(blue_colors, exponent);

const uint_fast8_t secondary_red = get_secondary_color(red_colors, exponent);

const uint_fast8_t secondary_green = get_secondary_color(green_colors, exponent);

const uint_fast8_t secondary_blue = get_secondary_color(blue_colors, exponent);

const bool alternative_mode =

(secondary_red < primary_red ||

(secondary_red == primary_red && (secondary_green < primary_green ||

(secondary_green == primary_green && secondary_blue <= primary_blue))));

if(alternative_mode)

{

if(texel_index == 2)

{

texel[RCOMP] = (primary_red + secondary_red) / 2;

texel[GCOMP] = (primary_green + secondary_green) / 2;

texel[BCOMP] = (primary_blue + secondary_blue) / 2;

}

else // texel_index == 3

{

if(rgba) // GL_COMRESSED_RGBA_FTC1_EXT

{

texel[RCOMP] = (primary_red + secondary_red) / 2;

texel[GCOMP] = (primary_green + secondary_green) / 2;

texel[BCOMP] = (primary_blue + secondary_blue) / 2;

texel[ACOMP] = 0;

}

Page 69: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.3. KARHUNEN-LOEVE TRANSFORM 69

else // GL_COMPRESSED_RGB_FTC1_EXT

{

texel[RCOMP] = 0;

texel[GCOMP] = 0;

texel[BCOMP] = 0;

}

}

}

else

{

if(texel_index == 2)

{

texel[RCOMP] = (2 * primary_red + secondary_red) / 3;

texel[GCOMP] = (2 * primary_green + secondary_green) / 3;

texel[BCOMP] = (2 * primary_blue + secondary_blue) / 3;

}

else // texel_index == 3

{

texel[RCOMP] = (primary_red + 2 * secondary_red) / 3;

texel[GCOMP] = (primary_green + 2 * secondary_green) / 3;

texel[BCOMP] = (primary_blue + 2 * secondary_blue) / 3;

}

}

}

}

void fetch_2d_texel_rgb_ftc1

(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel)

{

const GLubyte *blksrc = (pixdata + ((srcRowStride + 3) / 4 * (j / 4) + (i / 4)) * 8);

get_texel_from_ftc1_block(texel, blksrc, i % 4, j % 4, false);

}

void fetch_2d_texel_rgba_ftc1

(GLint srcRowStride, const GLubyte *pixdata, GLint i, GLint j, GLvoid *texel)

{

const GLubyte *blksrc = (pixdata + ((srcRowStride + 3) / 4 * (j / 4) + (i / 4)) * 8);

get_texel_from_ftc1_block(texel, blksrc, i % 4, j % 4, true);

}

A.3 Karhunen-Loeve transform

The principal component analysis (PCA), often called Karhunen-Loeve trans-form in image processing, is a vector space transform reducing dimensionalitywhile minimizing the loss of information (for given input and output dimensionPCA minimizes the MSE), thus being useful in lossy compression algorithms.It was discovered by Karl Pearson in 1901 [41].

Page 70: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

70 APPENDIX A. IMPLEMENTING FTC

It is used in the compression algorithm for ftc5, the squish compressionalgorithm for DXT1 and the compression algorithm for ftc1 which has beenderived from the squish algorithm for DXT1.

The following algorithm performs principal component analysis for a dataset {xi}i=1,...,N ,∀i : xi ∈ RM :

• Subtract the mean value from the data: ∀i : x′i = xi − 1N

∑Ni=1 xi.

• Calculate the empirical covariance matrix using the outer product of thematrix containing the x′i as column vectors with itself: C = 1

NBBT , B =

(x1, . . . , xN ).

• Let Λ be the diagonal matrix of eigenvalues of C in descending order, Γthe orthogonal matrix of corresponding eigenvectors of B: Λ = ΓTBΓ.

• The PCA of xi is ΓTxi. To reduce dimension discard the last componentsof the result.

A.4 Texture filtering

While this section is not directly relevant to ftc implementation it serves toillustrate the need for fast access to individual texels, by showing that a singletexture access often results in accesses to many texels.

Texture are accessed using texture coordinates. Texture coordinates specifywhich part of a texture to read and apply to the currently processed fragment.The process of getting texture data using texture coordinates is called texturefiltering. The most common filtering algorithms for two-dimensional texturesare

• Nearest neighbour

• Bilinear

• Trilinear

Let (r, s) be the texture coordinates, assume that texels are at integer coor-dinates, let t(r, s) be the texel at (r, s).

In nearest neighbour filtering the texel nearest to the point indicated by thetexture coordinates is chosen:

t = t(br + 0.5c, bs+ 0.5c)

In bilinear filtering the four texels nearest to the point indicted by the texturecoordinates are read and linear interpolation is done between them:

tl = (1− s+ bsc)t(brc, bsc) + (s− bsc)t(brc, dse)tr = (1− s+ bsc)t(dre, bsc) + (s− bsc)t(dre, dse)

t = (1− r + brc)tl + (r − brc)tr

Page 71: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

A.5. PREMULTIPLIED ALPHA 71

In trilinear interpolation there are multiple mipmaps instead of a singletexture. There is one mipmap that contains the texture at full resolution andother mipmaps for the texture at lower resolutions (typically half the originalresolution, one fourth, etc). During texture mapping the texture is mignifiedor magnified depending on texture size versus size of the polygon it is mappedonto. In trilinear interpolation the nearest two mipmaps are chosen, bilinearinterpolation is done as above for each mipmap and linear interpolation is doneon the resulting values to obtain the final result.

There exist various other texture filtering algorithms like anisotropic filter-ing, which can giver higher texture quality. There are variants of those men-tioned above for different speed / quality tradeoffs.

A.5 Premultiplied alpha

There are two common ways to represent transparency in RGBA images.The normal one, where the alpha value gives the opacity and the values of

the RGB channels use the full range. For simple blending typically the resultingcolor is calculated as cuαu + cl(1−αu), where cl is the color of the background,cu the color of the pixel being placed on top of the background and αu is it’salpha value.

With premultiplied alpha the values of the RGB channels typically are lim-ited by the alpha value. Blending changes to cu + cl(1− αu).

Both methods have their advantages; an important advantage of premulti-plied alpha is that fully-transparent texels do not contribute to the final coloreven when texture filtering is used. E. g using bilinear filtering the values offour texels are averaged and used. When one of the texels is fully transparent(i. e. has an alpha value of 0) it’s color still contributes to the result. Withpremultiplied alpha the color of fully transparent texels is always black, whichwhen added to other colors does not contribute to the final result.

When using premultiplied alpha transparent texels should be black. Whenusing normal alpha their color should be similar to that of neighbouring non-transparent texels. Texture compression systems can be optimized for eitherone. For ftc1 and ftc2 the color of c2 in alternate color interpolation mode isaffected. For normal alpha it is desirable to have these transparent colors at themiddle point between the two color codewords (as in algorithms 6 and 7 above).For premultiplied alpha it would be better for these to be black instead. Sincethe difference in decoding hardware is minimal it could make sense to supportboth in a hardware implementation.

Page 72: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

72 APPENDIX A. IMPLEMENTING FTC

Page 73: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Appendix B

Detailed experimentalresults

While the experimental results for RGB images were discussed in section 5.4,not all the data could be shown there. This appendix contains the completeresults from the RGB image experiments. The first table shows MAE, RMSEand DSSIM for each of the images and texture compression systems. The secondtable shows MAE, RMSE, DSSIM of ftc minus the respective errors of DXT1 andETC (thus for images where ftc1 performs better the numbers will be negative).

Image ftc1 DXT1 ETCAlsakaSunset-256 4.68 / 4.66 / 0.32 5.33 / 4.88 / 0.48 6.99 / 6.91 / 0.56lorikeet-512 10.06 / 8.44 / 0.69 10.36 / 8.54 / 0.72 11.98 / 9.90 / 0.55Earth 5.74 / 6.18 / 0.63 5.95 / 6.20 / 0.67 6.34 / 6.87 / 0.69glest/forest/surface4/surface4a 8.60 / 6.40 / 0.17 8.71 / 6.42 / 0.19 9.55 / 7.19 / 0.16glest/forest/surface1/surface1c 7.12 / 5.33 / 0.25 7.53 / 5.59 / 0.28 7.89 / 5.85 / 0.27glest/forest/surface1/surface1j 6.26 / 4.66 / 0.31 6.84 / 5.06 / 0.37 7.31 / 5.37 / 0.32glest/forest/surface1/surface1g 7.03 / 5.27 / 0.26 7.46 / 5.54 / 0.29 7.84 / 5.81 / 0.27glest/forest/surface1/surface1h 6.06 / 4.53 / 0.31 6.72 / 4.96 / 0.39 7.21 / 5.29 / 0.34glest/forest/surface1/surface1b 7.08 / 5.31 / 0.26 7.51 / 5.57 / 0.28 7.87 / 5.84 / 0.26glest/forest/surface1/surface1f 6.73 / 5.14 / 0.26 7.29 / 5.45 / 0.32 7.63 / 5.70 / 0.27glest/forest/surface1/surface1i 6.16 / 4.64 / 0.31 6.82 / 5.04 / 0.39 7.28 / 5.37 / 0.34glest/forest/surface1/surface1e 6.28 / 4.71 / 0.33 6.88 / 5.11 / 0.40 7.39 / 5.43 / 0.36glest/forest/surface1/surface1a 7.02 / 5.27 / 0.26 7.44 / 5.55 / 0.29 7.76 / 5.78 / 0.26glest/forest/surface1/surface1d 6.34 / 4.73 / 0.28 6.98 / 5.13 / 0.35 7.47 / 5.47 / 0.29glest/forest/surface3/surface3a 3.43 / 2.60 / 0.11 4.45 / 3.29 / 0.16 5.90 / 4.23 / 0.16glest/forest/surface3/surface3b 3.09 / 2.37 / 0.12 4.22 / 3.13 / 0.17 5.79 / 4.14 / 0.20glest/forest/surface2/surface2c 5.41 / 4.08 / 0.31 6.26 / 4.59 / 0.33 7.29 / 5.27 / 0.40glest/forest/surface2/surface2b 5.45 / 4.10 / 0.30 6.29 / 4.61 / 0.33 7.32 / 5.31 / 0.39glest/forest/surface2/surface2d 5.45 / 4.09 / 0.30 6.30 / 4.61 / 0.33 7.30 / 5.29 / 0.39glest/forest/surface2/surface2e 5.42 / 4.08 / 0.31 6.27 / 4.59 / 0.33 7.30 / 5.28 / 0.40glest/forest/surface2/surface2f 5.41 / 4.08 / 0.31 6.26 / 4.59 / 0.33 7.29 / 5.27 / 0.40glest/forest/surface2/surface2a 5.41 / 4.08 / 0.31 6.26 / 4.59 / 0.33 7.29 / 5.27 / 0.40glest/forest/surface5/surface5a 7.39 / 5.80 / 0.02 7.53 / 5.76 / 0.02 8.30 / 6.60 / 0.03glest/magic/texture archmage tower 15.51 / 12.86 / 0.09 15.45 / 12.78 / 0.09 15.35 / 13.02 / 0.12glest/magic/texture energy source 7.06 / 6.82 / 0.11 7.55 / 6.89 / 0.19 7.26 / 6.92 / 0.25glest/magic/texture library 10.60 / 9.06 / 0.07 10.66 / 9.01 / 0.07 10.67 / 9.19 / 0.08glest/magic/texture summoner guild 8.04 / 7.21 / 0.10 8.30 / 7.24 / 0.12 8.31 / 7.34 / 0.14glest/tech/texture defense tower 9.53 / 7.78 / 0.14 9.58 / 7.74 / 0.16 10.68 / 8.71 / 0.24glest/tech/texture barracks 12.54 / 10.43 / 0.05 12.55 / 10.38 / 0.06 12.09 / 10.25 / 0.06glest/tech/texture technodrome 6.70 / 6.40 / 0.30 6.87 / 6.43 / 0.34 7.40 / 6.89 / 0.40glest/tech/texture farm 11.81 / 9.91 / 0.09 11.82 / 9.86 / 0.09 12.05 / 10.34 / 0.11glest/winter forest/surface4/surface4b 15.88 / 11.78 / 0.04 15.69 / 11.67 / 0.04 14.65 / 11.33 / 0.04glest/winter forest/surface4/surface4a 14.32 / 10.77 / 0.05 14.16 / 10.65 / 0.05 13.66 / 10.63 / 0.04glest/winter forest/surface4/surface4c 15.85 / 11.79 / 0.04 15.70 / 11.67 / 0.04 14.90 / 11.47 / 0.04glest/winter forest/surface1/surface1c 4.79 / 3.54 / 0.05 5.34 / 3.89 / 0.06 6.62 / 4.78 / 0.11glest/winter forest/surface1/surface1b 4.85 / 3.58 / 0.05 5.48 / 3.96 / 0.06 6.61 / 4.76 / 0.11glest/winter forest/surface1/surface1a 4.88 / 3.59 / 0.05 5.45 / 3.95 / 0.06 6.58 / 4.75 / 0.11glest/winter forest/surface3/surface3a 10.29 / 7.73 / 0.35 10.36 / 7.76 / 0.36 11.09 / 8.36 / 0.23glest/winter forest/surface3/surface3b 10.43 / 7.83 / 0.35 10.41 / 7.82 / 0.35 11.02 / 8.29 / 0.23glest/winter forest/surface2/surface2c 19.74 / 14.45 / 0.04 19.62 / 14.36 / 0.04 20.42 / 15.62 / 0.04glest/winter forest/surface2/surface2b 16.43 / 12.76 / 0.04 16.42 / 12.68 / 0.04 17.32 / 14.03 / 0.04glest/winter forest/surface2/surface2d 18.15 / 13.63 / 0.04 18.06 / 13.54 / 0.04 18.97 / 15.03 / 0.04

73

Page 74: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

74 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

glest/winter forest/surface2/surface2e 18.32 / 13.79 / 0.04 18.27 / 13.69 / 0.04 18.72 / 14.87 / 0.04glest/winter forest/surface2/surface2f 15.92 / 12.46 / 0.08 15.98 / 12.40 / 0.08 16.79 / 13.55 / 0.08glest/winter forest/surface2/surface2a 19.83 / 14.46 / 0.04 19.70 / 14.36 / 0.04 20.41 / 15.61 / 0.04glest/winter forest/surface5/surface5a 12.11 / 8.84 / 0.05 11.96 / 8.72 / 0.05 11.39 / 8.47 / 0.04scourge/cave/default/sup074 8.77 / 6.51 / 0.05 8.90 / 6.54 / 0.06 8.61 / 6.41 / 0.05scourge/cave/default/sup076 12.41 / 9.23 / 0.06 12.35 / 9.15 / 0.06 12.10 / 9.15 / 0.05scourge/cave/default/sup106 11.19 / 8.35 / 0.09 11.15 / 8.29 / 0.09 11.09 / 8.40 / 0.07scourge/cave/default/nie039 6.81 / 5.08 / 0.05 7.11 / 5.19 / 0.05 7.48 / 5.49 / 0.06scourge/cave/default/nie060 7.02 / 6.32 / 0.13 7.54 / 6.49 / 0.17 8.31 / 6.96 / 0.17scourge/cave/default/sue094 8.79 / 6.47 / 0.04 8.88 / 6.46 / 0.04 8.46 / 6.20 / 0.03scourge/cave/default/sup075 10.19 / 7.59 / 0.07 10.21 / 7.57 / 0.07 9.94 / 7.47 / 0.06scourge/cave/default/water2 6.49 / 5.49 / 0.38 6.87 / 5.64 / 0.45 6.94 / 5.77 / 0.37scourge/cave/default/sup016 5.40 / 4.04 / 0.06 6.10 / 4.49 / 0.08 6.09 / 4.49 / 0.08scourge/cave/default/sup007 4.47 / 3.47 / 0.13 5.17 / 3.93 / 0.18 5.87 / 4.38 / 0.18scourge/cave/default/nie051 15.77 / 11.94 / 0.04 15.66 / 11.85 / 0.04 13.95 / 10.76 / 0.03scourge/cave/default/sup063 7.94 / 5.87 / 0.06 8.20 / 5.99 / 0.06 8.02 / 5.89 / 0.06scourge/cave/default/lava3 10.67 / 8.36 / 0.65 10.68 / 8.29 / 0.68 14.84 / 12.67 / 0.86scourge/cave/default/sup044 7.98 / 5.97 / 0.05 8.22 / 6.06 / 0.06 8.02 / 5.98 / 0.06scourge/cave/default/nie041 11.06 / 8.29 / 0.04 11.05 / 8.22 / 0.04 10.13 / 7.58 / 0.03scourge/cave/default/lava2 16.71 / 14.42 / 1.03 16.61 / 14.34 / 1.04 21.81 / 18.62 / 2.55scourge/cave/default/water 3.12 / 2.47 / 0.05 4.27 / 3.19 / 0.10 5.08 / 3.68 / 0.12scourge/cave/default/lava 14.12 / 11.96 / 1.22 14.00 / 11.89 / 1.24 18.92 / 16.24 / 2.57scourge/cave/default/sup082 7.61 / 5.61 / 0.05 7.86 / 5.72 / 0.05 7.39 / 5.44 / 0.04scourge/cave/default/lava4 13.11 / 10.40 / 0.74 13.01 / 10.31 / 0.75 16.90 / 13.71 / 1.15scourge/themes/egypt1/block08a 10.06 / 7.53 / 0.04 10.10 / 7.50 / 0.04 9.95 / 7.48 / 0.04scourge/themes/egypt1/block01b 10.19 / 7.75 / 0.05 10.21 / 7.71 / 0.06 9.81 / 7.40 / 0.05scourge/themes/egypt1/marker1bb 10.17 / 8.73 / 0.07 10.34 / 8.74 / 0.07 10.99 / 9.76 / 0.07scourge/themes/egypt1/block09a 10.04 / 7.53 / 0.04 10.09 / 7.50 / 0.04 9.95 / 7.50 / 0.04scourge/themes/egypt1/marker1bg 9.73 / 7.85 / 0.06 9.90 / 7.85 / 0.07 10.61 / 8.82 / 0.07scourge/themes/egypt1/solidgrate2a 10.05 / 7.95 / 0.04 10.33 / 7.99 / 0.04 9.03 / 7.11 / 0.03scourge/themes/egypt1/block08c 10.62 / 7.91 / 0.04 10.60 / 7.85 / 0.04 10.37 / 7.80 / 0.04scourge/themes/outdoor3/mud8 18.73 / 14.02 / 0.03 18.64 / 13.93 / 0.03 16.32 / 12.73 / 0.03scourge/themes/outdoor3/ice 3.06 / 3.13 / 0.19 3.54 / 3.37 / 0.36 3.53 / 3.29 / 0.28scourge/themes/outdoor3/moss13 23.05 / 16.74 / 0.03 22.90 / 16.65 / 0.03 24.89 / 18.16 / 0.03scourge/themes/outdoor3/grass 3 13.24 / 9.67 / 0.04 13.11 / 9.57 / 0.04 12.00 / 8.84 / 0.04scourge/themes/outdoor3/sand d 5.50 / 4.10 / 0.05 6.13 / 4.48 / 0.06 6.50 / 4.76 / 0.06scourge/themes/outdoor3/moss4 2.99 / 2.36 / 0.52 3.85 / 3.04 / 1.04 4.81 / 3.64 / 0.55scourge/themes/outdoor3/grass5 9.54 / 6.93 / 0.05 9.53 / 6.88 / 0.05 9.42 / 6.86 / 0.04scourge/themes/outdoor3/mud7 9.92 / 8.01 / 0.04 10.13 / 8.03 / 0.05 9.66 / 7.75 / 0.05scourge/themes/outdoor3/gold 9.41 / 7.25 / 0.07 9.56 / 7.28 / 0.08 9.44 / 7.30 / 0.07scourge/themes/outdoor3/ground10 14.89 / 10.80 / 0.04 14.74 / 10.68 / 0.04 13.75 / 10.18 / 0.03scourge/themes/outdoor2/02sanda 6.32 / 4.69 / 0.08 6.80 / 5.00 / 0.10 7.19 / 5.29 / 0.10scourge/themes/outdoor2/02grasse 13.50 / 9.85 / 0.06 13.35 / 9.73 / 0.06 12.62 / 9.28 / 0.05scourge/themes/outdoor2/02water 6.74 / 5.34 / 0.06 7.21 / 5.47 / 0.08 8.07 / 6.33 / 0.12scourge/themes/outdoor2/02grassc 13.26 / 9.75 / 0.06 13.13 / 9.64 / 0.06 12.45 / 9.20 / 0.05scourge/themes/outdoor2/grass 6.54 / 4.76 / 0.04 7.02 / 5.05 / 0.05 7.33 / 5.31 / 0.05scourge/themes/outdoor2/02grass 13.57 / 9.90 / 0.06 13.42 / 9.78 / 0.06 12.72 / 9.34 / 0.05scourge/themes/outdoor2/02grassb 13.56 / 9.91 / 0.06 13.41 / 9.79 / 0.06 12.71 / 9.36 / 0.05scourge/themes/infernum/wall 8.20 / 6.44 / 0.18 8.49 / 6.54 / 0.20 9.32 / 7.55 / 0.21scourge/themes/infernum/door 11.36 / 8.79 / 0.05 11.45 / 8.78 / 0.05 10.98 / 8.48 / 0.05scourge/themes/infernum/corner 7.46 / 6.04 / 0.06 7.01 / 6.07 / 0.07 7.64 / 6.07 / 0.07scourge/themes/infernum/floor1 12.12 / 9.28 / 0.07 12.13 / 9.24 / 0.07 11.49 / 8.87 / 0.06scourge/themes/infernum/wall1 8.77 / 7.01 / 0.20 8.98 / 7.07 / 0.21 9.89 / 8.09 / 0.23scourge/themes/infernum/passage2 9.51 / 7.23 / 0.07 9.66 / 7.25 / 0.07 9.34 / 7.05 / 0.06scourge/themes/infernum/floor 11.19 / 8.35 / 0.09 11.15 / 8.29 / 0.09 11.09 / 8.40 / 0.07scourge/themes/infernum/passage1 8.39 / 6.56 / 0.07 8.70 / 6.65 / 0.07 8.56 / 6.53 / 0.07scourge/themes/infernum/passage 11.32 / 8.38 / 0.07 11.28 / 8.32 / 0.07 10.78 / 8.05 / 0.06scourge/themes/infernum/wall2 7.79 / 6.31 / 0.18 8.16 / 6.43 / 0.22 9.17 / 7.55 / 0.24scourge/themes/monastery/headboard f 9.43 / 9.29 / 0.06 9.16 / 9.21 / 0.05 8.96 / 8.25 / 0.06scourge/themes/monastery/corner add 12.15 / 11.25 / 0.04 11.91 / 11.17 / 0.04 10.46 / 9.68 / 0.03scourge/themes/monastery/wall s 7.85 / 6.31 / 0.05 7.21 / 6.28 / 0.05 7.91 / 6.20 / 0.05scourge/themes/monastery/headboard s 9.43 / 9.29 / 0.06 9.16 / 9.21 / 0.05 8.96 / 8.25 / 0.06scourge/themes/monastery/doorns f 5.08 / 4.32 / 0.12 4.75 / 4.37 / 0.13 6.33 / 4.99 / 0.12scourge/themes/monastery/headboard add2 19.01 / 16.33 / 0.03 18.82 / 16.28 / 0.03 14.55 / 13.60 / 0.02scourge/themes/monastery/doorns t 4.92 / 3.90 / 0.16 4.52 / 3.99 / 0.19 6.34 / 4.92 / 0.13scourge/themes/monastery/doorew t 4.91 / 3.88 / 0.15 4.48 / 3.96 / 0.19 6.34 / 4.92 / 0.13scourge/themes/monastery/rfloor t 3.25 / 3.44 / 0.04 4.13 / 3.83 / 0.06 1.18 / 1.88 / 0.05scourge/themes/monastery/corner f 9.18 / 8.47 / 0.05 8.95 / 8.38 / 0.05 8.59 / 7.43 / 0.05scourge/themes/monastery/doorew add 5.09 / 4.30 / 0.12 4.78 / 4.38 / 0.14 6.35 / 5.00 / 0.14scourge/themes/monastery/wall f 7.85 / 6.31 / 0.05 7.21 / 6.28 / 0.05 7.91 / 6.20 / 0.05scourge/themes/monastery/doorns s 5.07 / 4.26 / 0.13 4.74 / 4.34 / 0.15 6.48 / 5.10 / 0.13scourge/themes/monastery/wall add 7.87 / 6.33 / 0.05 7.24 / 6.30 / 0.05 7.94 / 6.23 / 0.05scourge/themes/monastery/wall add2 9.18 / 9.29 / 0.06 8.58 / 9.25 / 0.06 9.68 / 9.88 / 0.07scourge/themes/monastery/pfloor t 6.34 / 7.28 / 0.04 7.27 / 7.43 / 0.07 7.38 / 7.43 / 0.08scourge/themes/monastery/headboard add 11.28 / 10.28 / 0.04 10.96 / 10.20 / 0.04 9.04 / 8.03 / 0.03scourge/themes/monastery/rfloor add 3.53 / 3.82 / 0.05 4.35 / 4.15 / 0.07 3.83 / 3.72 / 0.06scourge/themes/monastery/doorew s 5.08 / 4.32 / 0.12 4.75 / 4.37 / 0.13 6.33 / 4.99 / 0.12scourge/themes/monastery/corner t 2.15 / 2.20 / 0.18 1.86 / 2.12 / 0.17 4.43 / 3.15 / 0.24scourge/themes/monastery/wall t 7.17 / 5.85 / 0.05 6.41 / 5.82 / 0.05 7.45 / 5.84 / 0.05scourge/themes/monastery/corner s 9.18 / 8.47 / 0.05 8.95 / 8.38 / 0.05 8.59 / 7.43 / 0.05scourge/themes/monastery/doorns add 5.09 / 4.30 / 0.12 4.78 / 4.38 / 0.14 6.35 / 5.00 / 0.14scourge/themes/monastery/headboard t 6.76 / 6.07 / 0.07 6.40 / 6.00 / 0.06 6.51 / 5.25 / 0.05scourge/themes/monastery/doorew f 5.07 / 4.26 / 0.13 4.74 / 4.34 / 0.15 6.48 / 5.10 / 0.13scourge/themes/monastery/pfloor add 6.70 / 7.32 / 0.04 7.53 / 7.46 / 0.07 7.65 / 7.55 / 0.08scourge/themes/gurrea1/wall3 10.71 / 7.98 / 0.06 10.70 / 7.93 / 0.07 10.27 / 7.67 / 0.06scourge/themes/gurrea1/wall 10.03 / 7.67 / 0.08 10.13 / 7.68 / 0.09 9.87 / 7.51 / 0.07scourge/themes/gurrea1/door 11.36 / 8.79 / 0.05 11.45 / 8.78 / 0.05 10.98 / 8.48 / 0.05scourge/themes/gurrea1/headboard 10.42 / 7.65 / 0.04 10.37 / 7.58 / 0.04 9.72 / 7.18 / 0.04scourge/themes/gurrea1/corner 9.46 / 7.06 / 0.05 9.53 / 7.04 / 0.05 9.08 / 6.78 / 0.05scourge/themes/gurrea1/floor1 6.13 / 4.73 / 0.04 6.65 / 4.98 / 0.06 6.96 / 5.16 / 0.05scourge/themes/gurrea1/wall1 11.31 / 8.75 / 0.08 11.35 / 8.73 / 0.09 10.93 / 8.49 / 0.07

Page 75: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

75

scourge/themes/gurrea1/cornertop 13.20 / 10.31 / 0.07 13.25 / 10.28 / 0.07 12.14 / 9.50 / 0.05scourge/themes/gurrea1/passage2 8.32 / 6.43 / 0.06 8.58 / 6.51 / 0.06 8.31 / 6.30 / 0.06scourge/themes/gurrea1/floor 5.97 / 4.53 / 0.04 6.52 / 4.82 / 0.06 6.73 / 4.96 / 0.05scourge/themes/gurrea1/passage 8.10 / 6.28 / 0.05 8.35 / 6.34 / 0.05 8.15 / 6.16 / 0.05scourge/themes/gurrea1/wall2 10.83 / 8.15 / 0.07 10.86 / 8.12 / 0.07 10.45 / 7.88 / 0.06scourge/themes/gurrea1/floor2 5.81 / 4.48 / 0.05 6.36 / 4.76 / 0.06 6.80 / 5.01 / 0.06scourge/themes/wb-dragoon/suelo07b 10.63 / 7.88 / 0.04 10.58 / 7.81 / 0.04 10.25 / 7.59 / 0.03scourge/themes/wb-dragoon/piedra1t1 10.78 / 8.11 / 0.05 10.83 / 8.07 / 0.05 11.03 / 8.43 / 0.05scourge/themes/wb-dragoon/maderos01 8.03 / 6.21 / 0.09 8.30 / 6.29 / 0.10 8.35 / 6.31 / 0.09scourge/themes/wb-dragoon/muro03a 10.73 / 7.90 / 0.05 10.67 / 7.82 / 0.05 10.22 / 7.54 / 0.04scourge/themes/wb-dragoon/maderos1 7.83 / 6.08 / 0.07 8.10 / 6.16 / 0.09 8.14 / 6.15 / 0.08scourge/themes/wb-dragoon/kd3 10.46 / 7.96 / 0.14 10.56 / 7.99 / 0.15 10.51 / 7.96 / 0.12scourge/themes/wb-dragoon/ncob01 8.38 / 6.39 / 0.10 8.65 / 6.49 / 0.11 8.71 / 6.57 / 0.10scourge/themes/wb-dragoon/pilarcem16a 6.04 / 4.76 / 0.07 6.56 / 5.02 / 0.09 6.90 / 5.17 / 0.08scourge/themes/egypt5/stone02b 6.33 / 5.04 / 0.09 6.81 / 5.23 / 0.13 8.37 / 6.50 / 0.20scourge/themes/egypt5/stone01b 8.29 / 6.29 / 0.05 8.37 / 6.27 / 0.06 9.25 / 7.00 / 0.08scourge/themes/egypt3/lig 032-04w2 19.31 / 14.31 / 0.04 19.19 / 14.18 / 0.04 21.71 / 16.96 / 0.05scourge/themes/egypt3/lig 128-05w1 12.86 / 9.91 / 0.04 12.76 / 9.81 / 0.04 12.01 / 9.36 / 0.04scourge/themes/egypt3/lig b064-01c 14.47 / 12.82 / 0.08 14.38 / 12.75 / 0.08 12.02 / 9.76 / 0.03scourge/themes/outdoor/grass1 9.02 / 6.64 / 0.04 9.20 / 6.71 / 0.04 2.65 / 3.43 / 0.03scourge/themes/outdoor/grass3 9.86 / 8.56 / 0.07 10.00 / 8.58 / 0.07 10.59 / 9.47 / 0.07scourge/themes/outdoor/grass4 10.67 / 8.87 / 0.07 10.73 / 8.85 / 0.07 11.47 / 10.01 / 0.08scourge/themes/outdoor/grass 6.79 / 4.95 / 0.04 7.20 / 5.18 / 0.05 2.15 / 2.75 / 0.04scourge/themes/outdoor/grass2 10.45 / 9.29 / 0.06 10.62 / 9.33 / 0.06 10.02 / 10.95 / 0.07scourge/themes/outdoor/seamlesscobles 10.92 / 8.70 / 0.06 11.06 / 8.70 / 0.06 10.63 / 8.45 / 0.06scourge/themes/gurrea2/wall 11.99 / 8.80 / 0.07 11.90 / 8.71 / 0.07 11.14 / 8.24 / 0.05scourge/themes/gurrea2/door 12.71 / 9.62 / 0.03 12.64 / 9.54 / 0.03 11.85 / 9.08 / 0.03scourge/themes/gurrea2/corner 4.97 / 3.77 / 0.04 5.73 / 4.22 / 0.06 5.39 / 4.08 / 0.05scourge/themes/gurrea2/cornertop 3.68 / 3.16 / 0.10 4.77 / 3.70 / 0.17 5.65 / 4.32 / 0.21scourge/themes/gurrea2/floor 8.56 / 6.79 / 0.07 8.84 / 6.87 / 0.08 8.81 / 6.87 / 0.07scourge/themes/gurrea2/top 13.00 / 10.04 / 0.04 12.67 / 9.95 / 0.04 12.18 / 9.31 / 0.04scourge/themes/gurrea2/passage 10.49 / 7.80 / 0.07 10.47 / 7.75 / 0.07 10.03 / 7.46 / 0.06scourge/textures/cog 22.11 / 17.93 / 0.18 21.96 / 17.85 / 0.18 26.45 / 22.01 / 0.19scourge/textures/darkuisouthsel 2.97 / 2.58 / 0.10 3.81 / 3.15 / 0.13 5.29 / 4.18 / 0.38scourge/textures/korimbar 6.30 / 6.49 / 1.19 6.65 / 6.57 / 1.19 8.20 / 7.66 / 1.28scourge/textures/rock 5.77 / 4.44 / 0.04 6.45 / 4.77 / 0.05 6.93 / 5.01 / 0.06scourge/textures/floor2v2 3.00 / 3.78 / 0.20 4.24 / 4.15 / 1.40 5.81 / 5.76 / 0.69scourge/textures/map 16.04 / 15.69 / 0.06 16.05 / 15.61 / 0.06 23.62 / 20.66 / 0.14scourge/textures/button 5.35 / 4.16 / 1.37 6.15 / 4.45 / 6.45 9.18 / 6.91 / 4.12scourge/textures/T SKIN29 9.00 / 6.77 / 0.07 9.15 / 6.83 / 0.08 8.80 / 6.50 / 0.06scourge/textures/buttonsel 3.93 / 3.09 / 0.16 4.73 / 3.59 / 0.27 7.10 / 5.44 / 0.43scourge/textures/iconeffect 12.29 / 10.79 / 0.08 11.93 / 10.60 / 0.08 5.01 / 5.23 / 0.00scourge/textures/leather 4.02 / 2.97 / 0.12 4.77 / 3.51 / 0.17 6.61 / 4.89 / 0.26scourge/textures/staff ma 7.15 / 8.93 / 0.13 7.81 / 8.99 / 0.16 16.50 / 23.76 / 1.25scourge/textures/barrel 9.51 / 7.26 / 0.05 9.46 / 7.16 / 0.05 12.42 / 9.74 / 0.16scourge/textures/darkflai 2.30 / 2.14 / 0.36 3.15 / 2.72 / 0.39 0.96 / 1.43 / 0.40scourge/textures/brownclo 8.06 / 5.90 / 0.06 8.15 / 5.90 / 0.06 9.26 / 6.79 / 0.08scourge/textures/candle 9.01 / 7.35 / 0.06 9.41 / 7.41 / 0.10 2.34 / 3.14 / 0.06scourge/textures/darkui 2.99 / 2.27 / 0.04 3.96 / 2.91 / 0.06 1.25 / 1.56 / 0.06scourge/textures/staff ho 10.42 / 8.79 / 0.29 10.58 / 8.81 / 0.31 12.75 / 11.37 / 0.39scourge/textures/sorcersr 6.23 / 5.25 / 0.78 6.50 / 5.45 / 0.94 8.72 / 7.82 / 0.75scourge/textures/ornate03 5.00 / 4.94 / 0.14 5.58 / 5.04 / 0.17 7.10 / 5.86 / 0.21scourge/textures/katana 3.77 / 5.35 / 0.06 4.98 / 5.58 / 0.13 5.31 / 6.50 / 0.17scourge/textures/crate 5.10 / 4.01 / 0.07 5.79 / 4.35 / 0.12 7.04 / 5.38 / 0.18scourge/textures/spells 20.86 / 19.36 / 0.17 20.76 / 19.30 / 0.17 26.48 / 24.66 / 0.26scourge/textures/darkuitop 2.38 / 1.96 / 0.28 3.88 / 2.86 / 0.74 5.17 / 3.88 / 0.76scourge/textures/apple 10.53 / 8.34 / 0.37 10.71 / 8.40 / 0.40 13.51 / 12.44 / 0.34scourge/textures/dwmetrus 11.84 / 10.42 / 0.20 11.94 / 10.38 / 0.22 15.77 / 13.59 / 0.36scourge/textures/leavbr 13.53 / 11.02 / 0.41 13.34 / 10.90 / 0.40 23.93 / 19.02 / 2.31scourge/textures/ornate01 6.83 / 5.36 / 0.19 7.24 / 5.57 / 0.22 8.84 / 7.49 / 0.28scourge/textures/greywood 11.24 / 8.41 / 0.03 11.37 / 8.43 / 0.04 3.27 / 4.31 / 0.03scourge/textures/potion p 3.09 / 3.87 / 0.62 4.06 / 4.12 / 1.79 7.40 / 10.01 / 1.86scourge/textures/T SKIN3 19.44 / 14.09 / 0.04 19.30 / 13.99 / 0.04 17.20 / 12.72 / 0.03scourge/textures/wall 7.33 / 6.06 / 0.13 7.60 / 6.12 / 0.15 9.26 / 7.56 / 0.15scourge/textures/potionpi 5.00 / 5.55 / 1.41 5.48 / 5.62 / 1.74 8.74 / 10.77 / 2.80scourge/textures/bread 8.24 / 6.27 / 0.54 8.52 / 6.43 / 0.62 10.10 / 7.69 / 0.46scourge/textures/hornedhe 8.22 / 6.66 / 0.06 8.35 / 6.61 / 0.07 10.41 / 8.32 / 0.13scourge/textures/bolt orn 3.70 / 4.27 / 0.69 4.59 / 4.56 / 1.16 5.95 / 5.63 / 1.36scourge/textures/T SKIN70 10.87 / 8.29 / 0.04 10.92 / 8.26 / 0.04 9.75 / 7.44 / 0.03scourge/textures/milk 6.32 / 8.31 / 0.39 6.77 / 8.33 / 0.52 7.00 / 8.40 / 0.67scourge/textures/floor5v1 7.31 / 7.46 / 0.07 7.54 / 7.44 / 0.08 8.58 / 8.02 / 0.08scourge/textures/ornatebo 3.44 / 3.57 / 1.12 4.24 / 3.88 / 1.97 6.28 / 5.50 / 2.39scourge/textures/cloud 1.59 / 1.98 / 0.92 2.05 / 2.33 / 1.31 2.67 / 3.03 / 1.43scourge/textures/leaves 19.21 / 14.56 / 0.12 19.09 / 14.46 / 0.12 21.65 / 16.64 / 0.21scourge/textures/chalice 2.67 / 2.48 / 0.32 3.38 / 2.92 / 0.38 4.98 / 3.98 / 0.56scourge/textures/rusty1 7.04 / 5.94 / 0.40 7.40 / 6.02 / 0.43 11.64 / 10.03 / 0.80scourge/textures/elvenste 2.15 / 1.80 / 0.23 3.59 / 2.64 / 0.28 4.67 / 3.42 / 0.68scourge/textures/torchback 2.74 / 2.16 / 0.09 3.57 / 2.77 / 0.12 1.08 / 1.41 / 0.11scourge/textures/bolifurb 2.21 / 2.73 / 5.36 2.48 / 2.93 / 5.65 5.14 / 5.01 / 6.27scourge/textures/amuletwa 4.11 / 4.12 / 2.84 3.16 / 3.98 / 2.80 4.27 / 5.77 / 4.85scourge/textures/T SKIN68 15.33 / 11.09 / 0.04 15.22 / 10.98 / 0.04 13.74 / 10.10 / 0.03scourge/textures/light 5.08 / 5.29 / 0.58 5.15 / 5.27 / 0.63 5.74 / 6.18 / 0.77scourge/textures/milmoril 2.56 / 2.25 / 0.05 3.37 / 2.69 / 0.09 1.21 / 1.55 / 0.10scourge/textures/copper 6.76 / 5.21 / 0.45 7.00 / 5.28 / 0.52 9.36 / 7.41 / 0.66scourge/textures/wooddark 4.57 / 3.84 / 0.03 4.87 / 3.98 / 0.04 5.47 / 4.46 / 0.06scourge/textures/chesttop 8.62 / 7.50 / 0.17 8.97 / 7.55 / 0.20 10.54 / 9.01 / 0.27scourge/textures/floor4v1 8.18 / 6.35 / 0.05 8.51 / 6.47 / 0.05 8.79 / 7.13 / 0.05scourge/textures/fronttop 4.13 / 3.07 / 0.08 5.27 / 3.79 / 0.14 6.36 / 4.52 / 0.15scourge/textures/blackrus 4.93 / 4.38 / 0.39 5.49 / 4.56 / 0.59 9.42 / 8.61 / 1.30scourge/textures/javelin 9.23 / 7.56 / 0.09 9.57 / 7.61 / 0.11 9.47 / 7.52 / 0.11scourge/textures/woodtop 4.04 / 3.18 / 0.04 4.83 / 3.63 / 0.06 6.32 / 4.49 / 0.12

Page 76: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

76 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

scourge/textures/chomper 6.22 / 5.52 / 0.14 6.72 / 5.71 / 0.30 7.72 / 6.40 / 0.25scourge/textures/brick 7.61 / 5.81 / 0.04 7.82 / 5.83 / 0.04 8.57 / 6.55 / 0.06scourge/textures/goldenfl 2.88 / 2.32 / 0.10 3.79 / 2.91 / 0.22 4.97 / 3.65 / 0.24scourge/textures/guardcha 16.98 / 12.62 / 0.08 16.84 / 12.43 / 0.09 20.41 / 16.16 / 0.13scourge/textures/fullface 4.36 / 4.01 / 0.16 5.11 / 4.29 / 0.23 6.03 / 5.18 / 0.25scourge/textures/bullseye 5.01 / 4.79 / 1.64 5.44 / 4.94 / 1.65 7.19 / 6.09 / 1.81scourge/textures/T SKIN24 8.28 / 6.21 / 0.68 8.39 / 6.26 / 0.70 8.96 / 6.94 / 0.48scourge/textures/waterpot 2.93 / 3.86 / 0.49 4.47 / 4.31 / 1.05 6.66 / 9.48 / 1.82scourge/textures/whiteclo 3.91 / 2.83 / 0.05 4.59 / 3.27 / 0.07 1.44 / 1.84 / 0.07scourge/textures/floor5 6.10 / 4.88 / 0.06 6.34 / 4.85 / 0.07 7.45 / 6.05 / 0.08scourge/textures/walltop 6.31 / 5.18 / 0.13 6.85 / 5.38 / 0.15 7.73 / 6.49 / 0.15scourge/textures/iron 11.41 / 11.48 / 0.14 11.82 / 11.54 / 0.15 14.39 / 14.21 / 0.15scourge/textures/corner 6.26 / 4.84 / 0.45 6.76 / 5.05 / 0.53 8.26 / 6.79 / 0.59scourge/textures/ogreskin 13.87 / 10.48 / 0.02 13.69 / 10.32 / 0.02 5.05 / 7.22 / 0.02scourge/textures/potionhe 2.93 / 3.78 / 0.48 4.34 / 4.14 / 1.31 6.62 / 8.45 / 1.60scourge/textures/potionle 3.35 / 4.05 / 1.48 4.46 / 4.44 / 1.78 6.80 / 7.36 / 2.83scourge/textures/persuade 1.59 / 2.37 / 3.88 1.58 / 2.33 / 4.25 3.47 / 3.68 / 3.95scourge/textures/border 7.98 / 6.22 / 0.20 8.19 / 6.30 / 0.24 11.17 / 9.25 / 0.22scourge/textures/chestfront 9.14 / 7.86 / 0.16 9.41 / 7.88 / 0.18 11.45 / 9.98 / 0.28scourge/textures/greenclo 7.17 / 5.62 / 0.11 7.33 / 5.71 / 0.10 7.75 / 5.88 / 0.07scourge/textures/T SKIN19 8.73 / 6.45 / 0.05 8.88 / 6.48 / 0.05 8.53 / 6.27 / 0.04scourge/textures/embglove 2.43 / 3.28 / 0.24 3.81 / 3.72 / 0.39 4.94 / 7.25 / 0.65scourge/textures/T SKIN56 12.26 / 9.25 / 0.40 12.28 / 9.26 / 0.41 13.21 / 10.13 / 0.26scourge/textures/antimagi 6.99 / 6.21 / 0.33 7.33 / 6.31 / 0.41 9.35 / 7.73 / 0.46scourge/textures/beerbarr 7.89 / 8.32 / 0.80 8.18 / 8.34 / 0.79 9.28 / 9.07 / 0.96scourge/textures/gateup 10.59 / 8.60 / 0.04 10.65 / 8.60 / 0.04 2.92 / 3.87 / 0.03scourge/textures/metal 6.41 / 4.82 / 0.05 6.86 / 5.01 / 0.07 7.11 / 5.29 / 0.08scourge/textures/gnomishb 11.69 / 8.89 / 0.06 11.73 / 8.87 / 0.06 10.66 / 8.13 / 0.05scourge/textures/dwgold 6.09 / 6.16 / 0.41 6.77 / 6.31 / 0.61 9.10 / 8.07 / 0.85scourge/textures/skulls 11.39 / 8.99 / 0.03 11.53 / 8.96 / 0.04 10.54 / 8.27 / 0.03scourge/textures/frontv1 6.09 / 5.63 / 0.11 6.40 / 5.69 / 0.18 6.93 / 5.76 / 0.14scourge/textures/mushroom 6.85 / 5.74 / 0.14 7.36 / 5.99 / 0.16 8.42 / 7.37 / 0.17scourge/textures/gatedown 12.05 / 10.58 / 0.29 12.08 / 10.54 / 0.29 11.25 / 9.94 / 0.28scourge/textures/visorhel 5.05 / 5.42 / 0.13 5.80 / 5.61 / 0.20 7.17 / 7.44 / 0.26scourge/textures/trollski 4.42 / 3.41 / 0.04 5.05 / 3.77 / 0.05 6.37 / 4.72 / 0.07scourge/textures/darkuiwest 3.57 / 2.77 / 0.05 4.32 / 3.21 / 0.06 1.27 / 1.58 / 0.07scourge/textures/bookshel 7.16 / 6.90 / 0.23 7.48 / 6.94 / 0.27 8.71 / 8.67 / 0.31scourge/textures/floor4 7.52 / 5.64 / 0.05 7.91 / 5.82 / 0.05 7.59 / 5.65 / 0.05scourge/textures/darkuibutton 1.13 / 1.19 / 0.56 1.97 / 1.96 / 0.71 0.70 / 1.12 / 0.90scourge/textures/metalbnd 3.09 / 3.01 / 0.05 4.30 / 3.53 / 0.11 4.43 / 3.46 / 0.12scourge/textures/darkuisel 1.19 / 1.34 / 0.58 1.93 / 1.92 / 1.16 2.45 / 2.49 / 1.43scourge/textures/darkuinorthsel 0.04 / 0.19 / 7.37 0.09 / 0.43 / 10.62 0.17 / 0.67 / 11.40scourge/textures/speckled 2.37 / 2.00 / 0.18 3.40 / 2.64 / 0.39 4.84 / 3.80 / 0.58scourge/textures/floor6v1 6.91 / 6.77 / 0.04 7.15 / 6.76 / 0.04 8.66 / 7.61 / 0.06scourge/textures/dwarvenv 14.17 / 11.39 / 0.05 14.25 / 11.35 / 0.05 13.65 / 11.09 / 0.05scourge/textures/garzul 5.03 / 5.21 / 0.05 6.04 / 5.47 / 0.09 8.21 / 8.79 / 0.17scourge/textures/bigegg 0.77 / 0.88 / 0.14 2.31 / 1.79 / 0.46 2.64 / 2.01 / 0.82scourge/textures/floorv1 8.36 / 8.65 / 0.11 8.69 / 8.61 / 0.12 9.44 / 9.31 / 0.12scourge/textures/brickfloor 9.12 / 6.70 / 0.05 9.15 / 6.69 / 0.05 9.31 / 7.03 / 0.05scourge/textures/darkuinorth 0.03 / 0.18 / 7.13 0.03 / 0.18 / 7.13 0.18 / 0.63 / 12.75scourge/textures/T SKIN57 14.25 / 11.19 / 0.21 14.24 / 11.17 / 0.22 14.49 / 11.38 / 0.17scourge/textures/doorEW 9.35 / 9.02 / 0.19 9.59 / 9.09 / 0.20 10.85 / 10.78 / 0.23scourge/textures/front 5.20 / 5.11 / 0.14 5.58 / 5.20 / 0.22 6.42 / 5.45 / 0.18scourge/textures/frontv2 7.11 / 7.64 / 0.15 7.37 / 7.67 / 0.23 8.52 / 8.75 / 0.19scourge/textures/sarc2 13.65 / 9.87 / 0.03 13.46 / 9.72 / 0.03 11.72 / 8.68 / 0.02scourge/textures/potionlo 3.73 / 4.31 / 1.37 4.34 / 4.49 / 1.68 7.25 / 9.42 / 2.74scourge/textures/winefine 4.79 / 6.14 / 1.07 6.09 / 6.35 / 1.08 7.96 / 7.91 / 1.25scourge/textures/doorNS 9.35 / 9.02 / 0.19 9.59 / 9.09 / 0.20 10.85 / 10.78 / 0.23scourge/textures/door2NS 7.80 / 7.40 / 2.92 7.73 / 7.32 / 3.08 11.86 / 10.59 / 4.05scourge/textures/glotus 8.06 / 7.24 / 0.44 8.31 / 7.27 / 0.53 10.31 / 8.82 / 0.68scourge/textures/strongbo 9.20 / 7.16 / 0.34 9.51 / 7.27 / 0.37 10.72 / 8.77 / 0.33scourge/textures/floor7v1 7.38 / 6.59 / 0.04 7.79 / 6.73 / 0.05 6.97 / 6.73 / 0.03scourge/textures/hammer 2.30 / 2.40 / 0.06 3.53 / 2.97 / 0.13 4.40 / 3.93 / 0.21scourge/textures/gate m 13.89 / 12.88 / 0.11 14.04 / 12.89 / 0.12 19.29 / 18.23 / 0.22scourge/textures/wall2v1 5.28 / 4.16 / 0.03 5.95 / 4.49 / 0.05 6.28 / 4.67 / 0.05scourge/textures/T SKIN16 8.66 / 6.80 / 0.21 8.91 / 6.89 / 0.22 9.45 / 7.56 / 0.18scourge/textures/floor3 4.18 / 3.62 / 0.06 4.42 / 3.69 / 0.06 5.71 / 4.41 / 0.05scourge/textures/mutton 0.80 / 0.95 / 0.77 2.48 / 2.00 / 2.05 4.03 / 2.99 / 2.27scourge/textures/tchest 6.33 / 5.87 / 0.14 6.94 / 6.03 / 0.23 8.36 / 7.21 / 0.30scourge/textures/lightcro 7.89 / 6.61 / 1.53 7.83 / 6.60 / 1.96 9.70 / 7.78 / 1.93scourge/textures/floor 7.40 / 7.15 / 0.11 7.74 / 7.11 / 0.12 8.17 / 7.23 / 0.12scourge/textures/T SKIN9 20.16 / 14.84 / 0.04 20.07 / 14.75 / 0.04 18.22 / 13.60 / 0.04scourge/textures/T SKIN11 20.16 / 14.59 / 0.04 20.01 / 14.50 / 0.04 18.29 / 13.46 / 0.03scourge/textures/brickv1 9.68 / 8.66 / 0.06 9.84 / 8.65 / 0.06 10.09 / 8.65 / 0.06scourge/textures/ornate02 6.11 / 4.76 / 0.21 6.62 / 5.02 / 0.24 7.60 / 5.74 / 0.30scourge/textures/cronos 5.06 / 5.93 / 0.03 5.75 / 6.14 / 0.04 1.58 / 2.96 / 0.04scourge/textures/longbow 8.73 / 6.66 / 0.44 9.05 / 6.81 / 0.46 9.89 / 7.51 / 0.41scourge/textures/cheapwin 4.69 / 6.26 / 1.02 5.93 / 6.45 / 1.03 7.79 / 7.97 / 1.21scourge/textures/potion l 4.63 / 4.56 / 0.11 5.45 / 4.83 / 0.21 5.60 / 5.46 / 0.30scourge/textures/sarc1 7.59 / 5.62 / 0.04 7.85 / 5.72 / 0.04 7.22 / 5.35 / 0.03scourge/textures/litewood 8.01 / 6.47 / 0.94 8.42 / 6.52 / 1.09 10.57 / 8.81 / 1.99scourge/textures/floor2v1 2.45 / 2.87 / 0.22 3.78 / 3.36 / 1.72 5.16 / 4.21 / 0.77scourge/textures/sandston 9.90 / 7.52 / 0.05 9.92 / 7.47 / 0.05 9.98 / 7.52 / 0.05scourge/textures/T SKIN21 5.88 / 4.38 / 0.08 6.47 / 4.75 / 0.09 6.49 / 4.79 / 0.08scourge/textures/pointyha 10.82 / 10.99 / 10.07 10.66 / 10.88 / 10.03 21.43 / 18.54 / 14.16scourge/textures/highlight 4.55 / 3.60 / 0.24 5.32 / 4.02 / 0.36 5.84 / 4.35 / 0.35scourge/textures/potion a 2.56 / 3.74 / 0.12 3.92 / 4.02 / 0.32 4.93 / 5.24 / 0.55scourge/textures/mythril 41.02 / 30.35 / 0.02 41.02 / 30.45 / 0.02 7.14 / 12.05 / 0.01scourge/textures/gwdn-in 10.62 / 9.83 / 0.09 10.85 / 9.82 / 0.11 10.25 / 9.38 / 0.10scourge/textures/steeleat 3.45 / 2.68 / 0.10 4.31 / 3.25 / 0.15 5.71 / 4.38 / 0.22scourge/textures/ripple 3.39 / 5.51 / 1.04 3.54 / 5.54 / 1.06 4.10 / 6.45 / 1.00

Page 77: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

77

scourge/textures/maragon 8.83 / 7.54 / 0.44 8.86 / 7.55 / 0.45 9.43 / 7.46 / 0.43scourge/textures/chestside 9.42 / 8.23 / 0.16 9.67 / 8.24 / 0.18 11.66 / 10.25 / 0.27scourge/textures/T SKIN8 18.05 / 13.28 / 0.04 17.89 / 13.18 / 0.04 16.17 / 12.05 / 0.03scourge/textures/bronze 1.18 / 1.16 / 0.05 2.67 / 2.04 / 0.14 0.91 / 1.20 / 0.25scourge/textures/floor7 6.49 / 5.02 / 0.04 6.94 / 5.23 / 0.04 5.95 / 4.65 / 0.03scourge/textures/sandbase 8.39 / 6.24 / 0.05 8.45 / 6.20 / 0.06 9.28 / 6.98 / 0.06scourge/textures/warmaste 4.87 / 4.74 / 0.40 5.25 / 4.90 / 0.43 6.29 / 5.17 / 0.45scourge/textures/snakesta 1.04 / 1.25 / 0.10 2.99 / 2.34 / 0.51 6.00 / 5.33 / 1.21scourge/textures/wall2 5.02 / 3.83 / 0.03 5.75 / 4.24 / 0.05 6.14 / 4.50 / 0.05scourge/textures/menu 5.51 / 4.21 / 0.04 6.15 / 4.56 / 0.06 6.44 / 4.77 / 0.06scourge/textures/brickfloorv1 9.68 / 7.63 / 0.05 9.71 / 7.61 / 0.05 9.95 / 8.20 / 0.05scourge/textures/border2 7.98 / 6.22 / 0.20 8.19 / 6.30 / 0.24 11.17 / 9.25 / 0.22scourge/textures/screw 9.48 / 7.14 / 0.02 9.46 / 7.06 / 0.02 8.51 / 6.37 / 0.02scourge/textures/safepass 7.13 / 5.72 / 0.06 7.49 / 5.83 / 0.07 8.24 / 6.45 / 0.08lorikeet-64 13.28 / 11.53 / 0.37 13.47 / 11.57 / 0.40 16.57 / 14.52 / 0.51lena-512 8.22 / 6.93 / 0.46 8.63 / 7.09 / 0.51 9.87 / 8.04 / 0.58West 6.38 / 6.73 / 0.60 6.53 / 6.72 / 0.62 6.82 / 7.11 / 0.63Giridhar 5.89 / 5.82 / 0.26 6.54 / 5.98 / 0.37 8.41 / 7.49 / 0.50

Table B.1: ftc1, DXT1 and ETC RGB image compression errors: MAE / RMSE / DSSIM

Image DXT1 ETCAlsakaSunset-256 -0.65 / -0.23 / -0.16 -2.31 / -2.25 / -0.24lorikeet-512 -0.29 / -0.10 / -0.03 -1.92 / -1.47 / 0.14Earth -0.22 / -0.02 / -0.04 -0.60 / -0.69 / -0.06glest/forest/surface4/surface4a -0.11 / -0.02 / -0.02 -0.95 / -0.79 / 0.01glest/forest/surface1/surface1c -0.41 / -0.26 / -0.03 -0.77 / -0.52 / -0.02glest/forest/surface1/surface1j -0.57 / -0.39 / -0.06 -1.05 / -0.70 / -0.01glest/forest/surface1/surface1g -0.43 / -0.27 / -0.03 -0.82 / -0.54 / -0.01glest/forest/surface1/surface1h -0.66 / -0.44 / -0.08 -1.15 / -0.76 / -0.03glest/forest/surface1/surface1b -0.43 / -0.26 / -0.02 -0.79 / -0.53 / 0.00glest/forest/surface1/surface1f -0.56 / -0.31 / -0.06 -0.90 / -0.55 / -0.01glest/forest/surface1/surface1i -0.66 / -0.40 / -0.08 -1.12 / -0.73 / -0.03glest/forest/surface1/surface1e -0.60 / -0.40 / -0.07 -1.11 / -0.72 / -0.03glest/forest/surface1/surface1a -0.41 / -0.28 / -0.03 -0.74 / -0.51 / 0.00glest/forest/surface1/surface1d -0.64 / -0.41 / -0.07 -1.13 / -0.74 / -0.01glest/forest/surface3/surface3a -1.03 / -0.69 / -0.05 -2.47 / -1.63 / -0.05glest/forest/surface3/surface3b -1.14 / -0.76 / -0.05 -2.71 / -1.77 / -0.08glest/forest/surface2/surface2c -0.85 / -0.51 / -0.02 -1.88 / -1.20 / -0.09glest/forest/surface2/surface2b -0.84 / -0.51 / -0.03 -1.87 / -1.21 / -0.09glest/forest/surface2/surface2d -0.85 / -0.52 / -0.03 -1.85 / -1.20 / -0.09glest/forest/surface2/surface2e -0.84 / -0.51 / -0.02 -1.88 / -1.20 / -0.09glest/forest/surface2/surface2f -0.85 / -0.51 / -0.02 -1.88 / -1.20 / -0.09glest/forest/surface2/surface2a -0.85 / -0.51 / -0.02 -1.88 / -1.20 / -0.09glest/forest/surface5/surface5a -0.14 / 0.03 / 0.00 -0.91 / -0.80 / -0.01glest/magic/texture archmage tower 0.06 / 0.08 / 0.00 0.16 / -0.16 / -0.03glest/magic/texture energy source -0.49 / -0.07 / -0.08 -0.20 / -0.10 / -0.14glest/magic/texture library -0.05 / 0.05 / 0.00 -0.07 / -0.14 / -0.01glest/magic/texture summoner guild -0.26 / -0.03 / -0.02 -0.28 / -0.13 / -0.04glest/tech/texture defense tower -0.05 / 0.04 / -0.02 -1.15 / -0.93 / -0.10glest/tech/texture barracks -0.00 / 0.05 / -0.01 0.45 / 0.19 / -0.01glest/tech/texture technodrome -0.17 / -0.03 / -0.04 -0.70 / -0.49 / -0.10glest/tech/texture farm -0.01 / 0.05 / 0.00 -0.24 / -0.44 / -0.02glest/winter forest/surface4/surface4b 0.19 / 0.11 / 0.00 1.24 / 0.45 / 0.00glest/winter forest/surface4/surface4a 0.15 / 0.12 / 0.00 0.66 / 0.15 / 0.01glest/winter forest/surface4/surface4c 0.15 / 0.12 / 0.00 0.96 / 0.32 / 0.00glest/winter forest/surface1/surface1c -0.55 / -0.34 / -0.01 -1.84 / -1.24 / -0.06glest/winter forest/surface1/surface1b -0.63 / -0.39 / -0.01 -1.76 / -1.18 / -0.06glest/winter forest/surface1/surface1a -0.57 / -0.36 / -0.01 -1.71 / -1.16 / -0.06glest/winter forest/surface3/surface3a -0.08 / -0.03 / -0.01 -0.80 / -0.63 / 0.12glest/winter forest/surface3/surface3b 0.02 / 0.01 / 0.00 -0.60 / -0.46 / 0.12glest/winter forest/surface2/surface2c 0.12 / 0.09 / 0.00 -0.68 / -1.16 / 0.00glest/winter forest/surface2/surface2b 0.00 / 0.08 / 0.00 -0.89 / -1.27 / 0.00

Page 78: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

78 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

glest/winter forest/surface2/surface2d 0.09 / 0.09 / 0.00 -0.82 / -1.39 / 0.00glest/winter forest/surface2/surface2e 0.05 / 0.10 / 0.00 -0.41 / -1.08 / 0.00glest/winter forest/surface2/surface2f -0.07 / 0.05 / 0.00 -0.88 / -1.09 / 0.00glest/winter forest/surface2/surface2a 0.12 / 0.10 / 0.00 -0.58 / -1.15 / 0.00glest/winter forest/surface5/surface5a 0.15 / 0.12 / 0.00 0.72 / 0.37 / 0.01scourge/cave/default/sup074 -0.14 / -0.03 / -0.01 0.16 / 0.11 / 0.00scourge/cave/default/sup076 0.06 / 0.08 / 0.00 0.30 / 0.08 / 0.01scourge/cave/default/sup106 0.04 / 0.06 / 0.00 0.10 / -0.06 / 0.02scourge/cave/default/nie039 -0.30 / -0.11 / 0.00 -0.67 / -0.41 / -0.01scourge/cave/default/nie060 -0.52 / -0.17 / -0.04 -1.29 / -0.64 / -0.04scourge/cave/default/sue094 -0.09 / 0.01 / 0.00 0.33 / 0.27 / 0.01scourge/cave/default/sup075 -0.03 / 0.03 / 0.00 0.25 / 0.12 / 0.01scourge/cave/default/water2 -0.38 / -0.15 / -0.07 -0.46 / -0.28 / 0.01scourge/cave/default/sup016 -0.70 / -0.44 / -0.02 -0.69 / -0.45 / -0.02scourge/cave/default/sup007 -0.70 / -0.45 / -0.05 -1.40 / -0.90 / -0.05scourge/cave/default/nie051 0.11 / 0.09 / 0.00 1.82 / 1.18 / 0.01scourge/cave/default/sup063 -0.26 / -0.11 / 0.00 -0.08 / -0.02 / 0.00scourge/cave/default/lava3 -0.00 / 0.07 / -0.03 -4.17 / -4.31 / -0.21scourge/cave/default/sup044 -0.24 / -0.09 / -0.01 -0.05 / -0.01 / -0.01scourge/cave/default/nie041 0.01 / 0.07 / 0.00 0.92 / 0.71 / 0.01scourge/cave/default/lava2 0.10 / 0.07 / -0.01 -5.09 / -4.21 / -1.52scourge/cave/default/water -1.15 / -0.72 / -0.05 -1.96 / -1.21 / -0.07scourge/cave/default/lava 0.12 / 0.08 / -0.02 -4.80 / -4.27 / -1.35scourge/cave/default/sup082 -0.25 / -0.11 / 0.00 0.22 / 0.17 / 0.01scourge/cave/default/lava4 0.10 / 0.09 / -0.01 -3.79 / -3.30 / -0.41scourge/themes/egypt1/block08a -0.04 / 0.04 / 0.00 0.11 / 0.06 / 0.00scourge/themes/egypt1/block01b -0.02 / 0.04 / -0.01 0.38 / 0.35 / 0.00scourge/themes/egypt1/marker1bb -0.17 / -0.00 / 0.00 -0.82 / -1.03 / 0.00scourge/themes/egypt1/block09a -0.05 / 0.03 / 0.00 0.09 / 0.04 / 0.00scourge/themes/egypt1/marker1bg -0.17 / 0.00 / -0.01 -0.89 / -0.97 / -0.01scourge/themes/egypt1/solidgrate2a -0.27 / -0.05 / 0.00 1.03 / 0.84 / 0.01scourge/themes/egypt1/block08c 0.01 / 0.06 / 0.00 0.25 / 0.10 / 0.00scourge/themes/outdoor3/mud8 0.09 / 0.09 / 0.00 2.41 / 1.28 / 0.00scourge/themes/outdoor3/ice -0.48 / -0.24 / -0.17 -0.47 / -0.16 / -0.09scourge/themes/outdoor3/moss13 0.16 / 0.10 / 0.00 -1.84 / -1.42 / 0.00scourge/themes/outdoor3/grass 3 0.13 / 0.11 / 0.00 1.24 / 0.83 / 0.00scourge/themes/outdoor3/sand d -0.63 / -0.38 / -0.01 -0.99 / -0.66 / -0.01scourge/themes/outdoor3/moss4 -0.86 / -0.68 / -0.52 -1.82 / -1.28 / -0.03scourge/themes/outdoor3/grass5 0.01 / 0.06 / 0.00 0.12 / 0.07 / 0.01scourge/themes/outdoor3/mud7 -0.21 / -0.03 / -0.01 0.26 / 0.26 / -0.01scourge/themes/outdoor3/gold -0.16 / -0.03 / -0.01 -0.04 / -0.05 / 0.00scourge/themes/outdoor3/ground10 0.14 / 0.12 / 0.00 1.14 / 0.62 / 0.01scourge/themes/outdoor2/02sanda -0.48 / -0.31 / -0.02 -0.86 / -0.60 / -0.02scourge/themes/outdoor2/02grasse 0.15 / 0.11 / 0.00 0.88 / 0.57 / 0.01scourge/themes/outdoor2/02water -0.46 / -0.13 / -0.02 -1.33 / -0.99 / -0.06scourge/themes/outdoor2/02grassc 0.12 / 0.10 / 0.00 0.80 / 0.54 / 0.01scourge/themes/outdoor2/grass -0.48 / -0.28 / -0.01 -0.79 / -0.55 / -0.01scourge/themes/outdoor2/02grass 0.15 / 0.12 / 0.00 0.86 / 0.56 / 0.01scourge/themes/outdoor2/02grassb 0.15 / 0.11 / 0.00 0.86 / 0.54 / 0.01scourge/themes/infernum/wall -0.29 / -0.10 / -0.02 -1.11 / -1.11 / -0.03scourge/themes/infernum/door -0.10 / 0.01 / 0.00 0.38 / 0.31 / 0.00scourge/themes/infernum/corner 0.45 / -0.03 / -0.01 -0.17 / -0.03 / -0.01scourge/themes/infernum/floor1 -0.02 / 0.04 / 0.00 0.62 / 0.42 / 0.01scourge/themes/infernum/wall1 -0.22 / -0.06 / -0.01 -1.12 / -1.08 / -0.03scourge/themes/infernum/passage2 -0.14 / -0.02 / 0.00 0.17 / 0.17 / 0.01scourge/themes/infernum/floor 0.04 / 0.06 / 0.00 0.10 / -0.06 / 0.02scourge/themes/infernum/passage1 -0.31 / -0.08 / 0.00 -0.16 / 0.03 / 0.00

Page 79: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

79

scourge/themes/infernum/passage 0.03 / 0.06 / 0.00 0.53 / 0.33 / 0.01scourge/themes/infernum/wall2 -0.37 / -0.12 / -0.04 -1.38 / -1.24 / -0.06scourge/themes/monastery/headboard f 0.27 / 0.08 / 0.01 0.47 / 1.05 / 0.00scourge/themes/monastery/corner add 0.24 / 0.08 / 0.00 1.69 / 1.57 / 0.01scourge/themes/monastery/wall s 0.64 / 0.03 / 0.00 -0.06 / 0.11 / 0.00scourge/themes/monastery/headboard s 0.27 / 0.08 / 0.01 0.47 / 1.05 / 0.00scourge/themes/monastery/doorns f 0.33 / -0.05 / -0.01 -1.25 / -0.67 / 0.00scourge/themes/monastery/headboard add2 0.19 / 0.06 / 0.00 4.46 / 2.73 / 0.01scourge/themes/monastery/doorns t 0.40 / -0.09 / -0.03 -1.42 / -1.03 / 0.03scourge/themes/monastery/doorew t 0.43 / -0.08 / -0.04 -1.42 / -1.03 / 0.02scourge/themes/monastery/rfloor t -0.88 / -0.39 / -0.02 -0.09 / 0.11 / -0.01scourge/themes/monastery/corner f 0.23 / 0.09 / 0.00 0.59 / 1.04 / 0.00scourge/themes/monastery/doorew add 0.32 / -0.08 / -0.02 -1.25 / -0.70 / -0.02scourge/themes/monastery/wall f 0.64 / 0.03 / 0.00 -0.06 / 0.11 / 0.00scourge/themes/monastery/doorns s 0.33 / -0.07 / -0.02 -1.42 / -0.83 / 0.00scourge/themes/monastery/wall add 0.63 / 0.03 / 0.00 -0.06 / 0.10 / 0.00scourge/themes/monastery/wall add2 0.60 / 0.03 / 0.00 -0.50 / -0.59 / -0.01scourge/themes/monastery/pfloor t -0.93 / -0.15 / -0.03 -1.04 / -0.15 / -0.04scourge/themes/monastery/headboard add 0.32 / 0.08 / 0.00 2.24 / 2.25 / 0.01scourge/themes/monastery/rfloor add -0.82 / -0.33 / -0.02 -0.29 / 0.10 / -0.01scourge/themes/monastery/doorew s 0.33 / -0.05 / -0.01 -1.25 / -0.67 / 0.00scourge/themes/monastery/corner t 0.29 / 0.08 / 0.01 -2.27 / -0.95 / -0.06scourge/themes/monastery/wall t 0.75 / 0.03 / 0.00 -0.29 / 0.00 / 0.00scourge/themes/monastery/corner s 0.23 / 0.09 / 0.00 0.59 / 1.04 / 0.00scourge/themes/monastery/doorns add 0.32 / -0.08 / -0.02 -1.25 / -0.70 / -0.02scourge/themes/monastery/headboard t 0.36 / 0.08 / 0.01 0.25 / 0.83 / 0.02scourge/themes/monastery/doorew f 0.33 / -0.07 / -0.02 -1.42 / -0.83 / 0.00scourge/themes/monastery/pfloor add -0.83 / -0.13 / -0.03 -0.95 / -0.22 / -0.04scourge/themes/gurrea1/wall3 0.01 / 0.05 / -0.01 0.43 / 0.31 / 0.00scourge/themes/gurrea1/wall -0.10 / -0.00 / -0.01 0.16 / 0.16 / 0.01scourge/themes/gurrea1/door -0.10 / 0.01 / 0.00 0.38 / 0.31 / 0.00scourge/themes/gurrea1/headboard 0.04 / 0.07 / 0.00 0.70 / 0.47 / 0.00scourge/themes/gurrea1/corner -0.08 / 0.02 / 0.00 0.38 / 0.28 / 0.00scourge/themes/gurrea1/floor1 -0.53 / -0.26 / -0.02 -0.84 / -0.43 / -0.01scourge/themes/gurrea1/wall1 -0.05 / 0.03 / -0.01 0.38 / 0.26 / 0.01scourge/themes/gurrea1/cornertop -0.04 / 0.04 / 0.00 1.07 / 0.81 / 0.02scourge/themes/gurrea1/passage2 -0.27 / -0.08 / 0.00 0.01 / 0.12 / 0.00scourge/themes/gurrea1/floor -0.54 / -0.30 / -0.02 -0.76 / -0.43 / -0.01scourge/themes/gurrea1/passage -0.25 / -0.07 / 0.00 -0.05 / 0.12 / 0.00scourge/themes/gurrea1/wall2 -0.02 / 0.04 / 0.00 0.38 / 0.28 / 0.01scourge/themes/gurrea1/floor2 -0.56 / -0.29 / -0.01 -0.99 / -0.53 / -0.01scourge/themes/wb-dragoon/suelo07b 0.05 / 0.07 / 0.00 0.38 / 0.29 / 0.01scourge/themes/wb-dragoon/piedra1t1 -0.05 / 0.04 / 0.00 -0.24 / -0.32 / 0.00scourge/themes/wb-dragoon/maderos01 -0.27 / -0.08 / -0.01 -0.32 / -0.10 / 0.00scourge/themes/wb-dragoon/muro03a 0.07 / 0.08 / 0.00 0.51 / 0.36 / 0.01scourge/themes/wb-dragoon/maderos1 -0.27 / -0.08 / -0.02 -0.31 / -0.07 / -0.01scourge/themes/wb-dragoon/kd3 -0.10 / -0.04 / -0.01 -0.05 / -0.01 / 0.02scourge/themes/wb-dragoon/ncob01 -0.27 / -0.10 / -0.01 -0.33 / -0.19 / 0.00scourge/themes/wb-dragoon/pilarcem16a -0.52 / -0.26 / -0.02 -0.86 / -0.41 / -0.01scourge/themes/egypt5/stone02b -0.48 / -0.20 / -0.04 -2.04 / -1.46 / -0.11scourge/themes/egypt5/stone01b -0.09 / 0.02 / -0.01 -0.97 / -0.71 / -0.03scourge/themes/egypt3/lig 032-04w2 0.12 / 0.12 / 0.00 -2.40 / -2.65 / -0.01scourge/themes/egypt3/lig 128-05w1 0.10 / 0.10 / 0.00 0.85 / 0.55 / 0.00scourge/themes/egypt3/lig b064-01c 0.09 / 0.07 / 0.00 2.44 / 3.06 / 0.05scourge/themes/outdoor/grass1 -0.18 / -0.07 / 0.00 0.36 / 0.40 / 0.01scourge/themes/outdoor/grass3 -0.14 / -0.01 / 0.00 -0.73 / -0.91 / 0.00scourge/themes/outdoor/grass4 -0.07 / 0.03 / 0.00 -0.80 / -1.13 / -0.01

Page 80: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

80 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

scourge/themes/outdoor/grass -0.42 / -0.23 / -0.01 0.12 / 0.11 / 0.00scourge/themes/outdoor/grass2 -0.17 / -0.03 / 0.00 0.43 / -1.65 / -0.01scourge/themes/outdoor/seamlesscobles -0.14 / 0.00 / 0.00 0.29 / 0.25 / 0.00scourge/themes/gurrea2/wall 0.10 / 0.09 / 0.00 0.86 / 0.56 / 0.02scourge/themes/gurrea2/door 0.06 / 0.08 / 0.00 0.86 / 0.54 / 0.00scourge/themes/gurrea2/corner -0.76 / -0.45 / -0.02 -0.42 / -0.31 / -0.01scourge/themes/gurrea2/cornertop -1.09 / -0.54 / -0.07 -1.97 / -1.16 / -0.11scourge/themes/gurrea2/floor -0.28 / -0.08 / -0.01 -0.24 / -0.08 / 0.00scourge/themes/gurrea2/top 0.32 / 0.09 / 0.00 0.82 / 0.73 / 0.00scourge/themes/gurrea2/passage 0.01 / 0.05 / 0.00 0.46 / 0.33 / 0.01scourge/textures/cog 0.15 / 0.08 / 0.00 -4.34 / -4.08 / -0.01scourge/textures/darkuisouthsel -0.84 / -0.57 / -0.03 -2.32 / -1.60 / -0.28scourge/textures/korimbar -0.36 / -0.07 / 0.00 -1.90 / -1.17 / -0.09scourge/textures/rock -0.68 / -0.34 / -0.01 -1.16 / -0.57 / -0.02scourge/textures/floor2v2 -1.25 / -0.36 / -1.20 -2.82 / -1.98 / -0.49scourge/textures/map -0.00 / 0.08 / 0.00 -7.58 / -4.97 / -0.08scourge/textures/button -0.80 / -0.29 / -5.08 -3.82 / -2.75 / -2.75scourge/textures/T SKIN29 -0.15 / -0.06 / -0.01 0.21 / 0.27 / 0.01scourge/textures/buttonsel -0.80 / -0.50 / -0.11 -3.17 / -2.35 / -0.27scourge/textures/iconeffect 0.36 / 0.20 / 0.00 7.28 / 5.57 / 0.08scourge/textures/leather -0.74 / -0.54 / -0.05 -2.58 / -1.92 / -0.14scourge/textures/staff ma -0.66 / -0.06 / -0.03 -9.34 / -14.83 / -1.12scourge/textures/barrel 0.06 / 0.10 / 0.00 -2.91 / -2.48 / -0.11scourge/textures/darkflai -0.85 / -0.58 / -0.03 -0.20 / -0.19 / -0.04scourge/textures/brownclo -0.08 / 0.00 / 0.00 -1.20 / -0.89 / -0.02scourge/textures/candle -0.40 / -0.06 / -0.04 0.67 / 1.10 / 0.00scourge/textures/darkui -0.97 / -0.64 / -0.02 -0.25 / -0.26 / -0.02scourge/textures/staff ho -0.16 / -0.02 / -0.02 -2.33 / -2.58 / -0.10scourge/textures/sorcersr -0.27 / -0.20 / -0.16 -2.49 / -2.57 / 0.03scourge/textures/ornate03 -0.58 / -0.10 / -0.03 -2.09 / -0.92 / -0.07scourge/textures/katana -1.21 / -0.22 / -0.07 -1.54 / -1.14 / -0.11scourge/textures/crate -0.69 / -0.33 / -0.05 -1.94 / -1.37 / -0.11scourge/textures/spells 0.10 / 0.06 / 0.00 -5.62 / -5.30 / -0.09scourge/textures/darkuitop -1.50 / -0.90 / -0.46 -2.79 / -1.93 / -0.48scourge/textures/apple -0.18 / -0.06 / -0.03 -2.98 / -4.10 / 0.03scourge/textures/dwmetrus -0.10 / 0.03 / -0.02 -3.93 / -3.17 / -0.16scourge/textures/leavbr 0.18 / 0.12 / 0.01 -10.40 / -8.00 / -1.90scourge/textures/ornate01 -0.41 / -0.20 / -0.03 -2.01 / -2.12 / -0.09scourge/textures/greywood -0.13 / -0.02 / -0.01 0.48 / 0.54 / 0.00scourge/textures/potion p -0.97 / -0.25 / -1.17 -4.31 / -6.13 / -1.24scourge/textures/T SKIN3 0.14 / 0.10 / 0.00 2.24 / 1.37 / 0.01scourge/textures/wall -0.27 / -0.06 / -0.02 -1.93 / -1.50 / -0.02scourge/textures/potionpi -0.48 / -0.08 / -0.33 -3.75 / -5.23 / -1.39scourge/textures/bread -0.29 / -0.16 / -0.08 -1.86 / -1.42 / 0.08scourge/textures/hornedhe -0.14 / 0.05 / -0.01 -2.19 / -1.67 / -0.07scourge/textures/bolt orn -0.89 / -0.29 / -0.47 -2.25 / -1.36 / -0.67scourge/textures/T SKIN70 -0.06 / 0.03 / 0.00 1.11 / 0.85 / 0.01scourge/textures/milk -0.46 / -0.03 / -0.13 -0.68 / -0.10 / -0.28scourge/textures/floor5v1 -0.23 / 0.02 / -0.01 -1.27 / -0.57 / -0.01scourge/textures/ornatebo -0.80 / -0.31 / -0.85 -2.84 / -1.93 / -1.27scourge/textures/cloud -0.46 / -0.35 / -0.39 -1.08 / -1.05 / -0.51scourge/textures/leaves 0.12 / 0.10 / 0.00 -2.44 / -2.08 / -0.09scourge/textures/chalice -0.71 / -0.43 / -0.06 -2.31 / -1.50 / -0.24scourge/textures/rusty1 -0.37 / -0.08 / -0.03 -4.61 / -4.09 / -0.40scourge/textures/elvenste -1.44 / -0.84 / -0.05 -2.52 / -1.63 / -0.45scourge/textures/torchback -0.84 / -0.62 / -0.03 -0.17 / -0.16 / -0.02scourge/textures/bolifurb -0.27 / -0.20 / -0.29 -2.93 / -2.28 / -0.91

Page 81: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

81

scourge/textures/amuletwa 0.95 / 0.15 / 0.04 -0.16 / -1.65 / -2.01scourge/textures/T SKIN68 0.11 / 0.11 / 0.00 1.59 / 0.99 / 0.01scourge/textures/light -0.07 / 0.02 / -0.05 -0.66 / -0.89 / -0.19scourge/textures/milmoril -0.81 / -0.44 / -0.04 -0.35 / -0.25 / -0.05scourge/textures/copper -0.24 / -0.08 / -0.07 -2.59 / -2.21 / -0.21scourge/textures/wooddark -0.30 / -0.14 / -0.01 -0.90 / -0.63 / -0.03scourge/textures/chesttop -0.35 / -0.05 / -0.03 -1.92 / -1.51 / -0.10scourge/textures/floor4v1 -0.33 / -0.12 / 0.00 -0.60 / -0.78 / 0.00scourge/textures/fronttop -1.14 / -0.73 / -0.06 -2.23 / -1.45 / -0.07scourge/textures/blackrus -0.56 / -0.19 / -0.20 -4.49 / -4.23 / -0.91scourge/textures/javelin -0.34 / -0.05 / -0.02 -0.24 / 0.04 / -0.02scourge/textures/woodtop -0.79 / -0.46 / -0.02 -2.28 / -1.31 / -0.08scourge/textures/chomper -0.50 / -0.19 / -0.16 -1.50 / -0.89 / -0.11scourge/textures/brick -0.21 / -0.02 / 0.00 -0.96 / -0.73 / -0.02scourge/textures/goldenfl -0.91 / -0.59 / -0.12 -2.09 / -1.33 / -0.14scourge/textures/guardcha 0.14 / 0.19 / -0.01 -3.43 / -3.54 / -0.05scourge/textures/fullface -0.75 / -0.28 / -0.07 -1.67 / -1.17 / -0.09scourge/textures/bullseye -0.43 / -0.15 / -0.01 -2.18 / -1.30 / -0.17scourge/textures/T SKIN24 -0.11 / -0.05 / -0.02 -0.68 / -0.73 / 0.20scourge/textures/waterpot -1.54 / -0.45 / -0.56 -3.73 / -5.62 / -1.33scourge/textures/whiteclo -0.68 / -0.44 / -0.02 -0.15 / -0.22 / -0.02scourge/textures/floor5 -0.23 / 0.03 / -0.01 -1.35 / -1.17 / -0.02scourge/textures/walltop -0.54 / -0.19 / -0.02 -1.43 / -1.31 / -0.02scourge/textures/iron -0.40 / -0.07 / -0.01 -2.98 / -2.73 / -0.01scourge/textures/corner -0.50 / -0.20 / -0.08 -2.00 / -1.95 / -0.14scourge/textures/ogreskin 0.18 / 0.16 / 0.00 -0.43 / -1.17 / 0.00scourge/textures/potionhe -1.41 / -0.36 / -0.83 -3.69 / -4.68 / -1.12scourge/textures/potionle -1.11 / -0.38 / -0.30 -3.45 / -3.31 / -1.35scourge/textures/persuade 0.01 / 0.03 / -0.37 -1.87 / -1.31 / -0.07scourge/textures/border -0.22 / -0.08 / -0.04 -3.20 / -3.03 / -0.02scourge/textures/chestfront -0.27 / -0.02 / -0.02 -2.31 / -2.12 / -0.12scourge/textures/greenclo -0.16 / -0.09 / 0.01 -0.58 / -0.26 / 0.04scourge/textures/T SKIN19 -0.15 / -0.03 / 0.00 0.20 / 0.17 / 0.01scourge/textures/embglove -1.38 / -0.44 / -0.15 -2.51 / -3.97 / -0.41scourge/textures/T SKIN56 -0.02 / -0.01 / -0.01 -0.95 / -0.88 / 0.14scourge/textures/antimagi -0.34 / -0.10 / -0.08 -2.35 / -1.52 / -0.13scourge/textures/beerbarr -0.29 / -0.02 / 0.01 -1.39 / -0.76 / -0.16scourge/textures/gateup -0.06 / -0.00 / 0.00 0.61 / 1.09 / 0.01scourge/textures/metal -0.45 / -0.20 / -0.02 -0.70 / -0.47 / -0.03scourge/textures/gnomishb -0.03 / 0.03 / 0.00 1.03 / 0.76 / 0.01scourge/textures/dwgold -0.68 / -0.16 / -0.20 -3.01 / -1.91 / -0.44scourge/textures/skulls -0.14 / 0.03 / -0.01 0.85 / 0.71 / 0.00scourge/textures/frontv1 -0.31 / -0.06 / -0.07 -0.85 / -0.13 / -0.03scourge/textures/mushroom -0.51 / -0.24 / -0.02 -1.57 / -1.63 / -0.03scourge/textures/gatedown -0.04 / 0.04 / 0.00 0.79 / 0.64 / 0.01scourge/textures/visorhel -0.74 / -0.18 / -0.07 -2.11 / -2.02 / -0.13scourge/textures/trollski -0.63 / -0.37 / -0.01 -1.94 / -1.31 / -0.03scourge/textures/darkuiwest -0.74 / -0.44 / -0.01 -0.08 / 0.03 / -0.02scourge/textures/bookshel -0.32 / -0.05 / -0.04 -1.54 / -1.77 / -0.08scourge/textures/floor4 -0.39 / -0.18 / 0.00 -0.07 / -0.01 / 0.00scourge/textures/darkuibutton -0.85 / -0.77 / -0.15 -0.32 / -0.43 / -0.34scourge/textures/metalbnd -1.20 / -0.52 / -0.06 -1.33 / -0.45 / -0.07scourge/textures/darkuisel -0.74 / -0.58 / -0.58 -1.26 / -1.15 / -0.85scourge/textures/darkuinorthsel -0.05 / -0.24 / -3.25 -0.13 / -0.48 / -4.03scourge/textures/speckled -1.03 / -0.64 / -0.21 -2.47 / -1.80 / -0.40scourge/textures/floor6v1 -0.23 / 0.01 / 0.00 -1.75 / -0.84 / -0.02scourge/textures/dwarvenv -0.08 / 0.04 / 0.00 0.52 / 0.30 / 0.00

Page 82: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

82 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

scourge/textures/garzul -1.01 / -0.26 / -0.04 -3.18 / -3.58 / -0.12scourge/textures/bigegg -1.55 / -0.91 / -0.32 -1.87 / -1.14 / -0.68scourge/textures/floorv1 -0.34 / 0.04 / -0.01 -1.09 / -0.67 / -0.01scourge/textures/brickfloor -0.04 / 0.01 / 0.00 -0.19 / -0.33 / 0.00scourge/textures/darkuinorth 0.00 / 0.00 / 0.00 -0.15 / -0.45 / -5.62scourge/textures/T SKIN57 0.01 / 0.02 / -0.01 -0.24 / -0.19 / 0.04scourge/textures/doorEW -0.24 / -0.07 / -0.01 -1.50 / -1.75 / -0.04scourge/textures/front -0.37 / -0.10 / -0.08 -1.21 / -0.34 / -0.04scourge/textures/frontv2 -0.26 / -0.02 / -0.08 -1.41 / -1.11 / -0.04scourge/textures/sarc2 0.19 / 0.14 / 0.00 1.93 / 1.18 / 0.01scourge/textures/potionlo -0.61 / -0.18 / -0.31 -3.52 / -5.11 / -1.37scourge/textures/winefine -1.30 / -0.21 / -0.01 -3.17 / -1.77 / -0.18scourge/textures/doorNS -0.24 / -0.06 / -0.01 -1.50 / -1.76 / -0.04scourge/textures/door2NS 0.07 / 0.07 / -0.16 -4.05 / -3.19 / -1.13scourge/textures/glotus -0.25 / -0.03 / -0.09 -2.25 / -1.58 / -0.24scourge/textures/strongbo -0.31 / -0.11 / -0.03 -1.52 / -1.61 / 0.01scourge/textures/floor7v1 -0.40 / -0.14 / -0.01 0.41 / -0.15 / 0.01scourge/textures/hammer -1.23 / -0.57 / -0.07 -2.10 / -1.53 / -0.15scourge/textures/gate m -0.15 / -0.00 / -0.01 -5.41 / -5.34 / -0.11scourge/textures/wall2v1 -0.67 / -0.33 / -0.02 -0.99 / -0.52 / -0.02scourge/textures/T SKIN16 -0.26 / -0.09 / -0.01 -0.79 / -0.75 / 0.03scourge/textures/floor3 -0.24 / -0.08 / 0.00 -1.53 / -0.80 / 0.01scourge/textures/mutton -1.68 / -1.04 / -1.28 -3.22 / -2.04 / -1.50scourge/textures/tchest -0.60 / -0.17 / -0.09 -2.02 / -1.35 / -0.16scourge/textures/lightcro 0.06 / 0.01 / -0.43 -1.81 / -1.17 / -0.40scourge/textures/floor -0.34 / 0.04 / -0.01 -0.77 / -0.08 / -0.01scourge/textures/T SKIN9 0.09 / 0.09 / 0.00 1.94 / 1.23 / 0.00scourge/textures/T SKIN11 0.15 / 0.10 / 0.00 1.86 / 1.13 / 0.01scourge/textures/brickv1 -0.16 / 0.01 / 0.00 -0.41 / 0.01 / 0.00scourge/textures/ornate02 -0.51 / -0.26 / -0.03 -1.49 / -0.97 / -0.09scourge/textures/cronos -0.69 / -0.20 / -0.01 0.10 / 0.46 / -0.01scourge/textures/longbow -0.32 / -0.15 / -0.02 -1.15 / -0.84 / 0.03scourge/textures/cheapwin -1.23 / -0.19 / -0.01 -3.09 / -1.71 / -0.19scourge/textures/potion l -0.82 / -0.27 / -0.10 -0.97 / -0.90 / -0.19scourge/textures/sarc1 -0.26 / -0.10 / 0.00 0.37 / 0.27 / 0.01scourge/textures/litewood -0.42 / -0.05 / -0.15 -2.56 / -2.34 / -1.05scourge/textures/floor2v1 -1.33 / -0.50 / -1.50 -2.70 / -1.34 / -0.55scourge/textures/sandston -0.03 / 0.05 / 0.00 -0.08 / -0.00 / 0.00scourge/textures/T SKIN21 -0.59 / -0.37 / -0.01 -0.61 / -0.41 / 0.00scourge/textures/pointyha 0.17 / 0.12 / 0.04 -10.61 / -7.55 / -4.09scourge/textures/highlight -0.76 / -0.42 / -0.12 -1.29 / -0.75 / -0.11scourge/textures/potion a -1.36 / -0.28 / -0.20 -2.37 / -1.50 / -0.43scourge/textures/mythril -0.01 / -0.10 / 0.00 6.53 / 5.47 / 0.01scourge/textures/gwdn-in -0.23 / 0.02 / -0.02 0.37 / 0.45 / -0.01scourge/textures/steeleat -0.86 / -0.56 / -0.05 -2.26 / -1.69 / -0.12scourge/textures/ripple -0.16 / -0.03 / -0.02 -0.71 / -0.94 / 0.04scourge/textures/maragon -0.03 / -0.01 / -0.01 -0.60 / 0.08 / 0.01scourge/textures/chestside -0.25 / -0.01 / -0.02 -2.24 / -2.02 / -0.11scourge/textures/T SKIN8 0.16 / 0.10 / 0.00 1.88 / 1.23 / 0.01scourge/textures/bronze -1.49 / -0.88 / -0.09 -0.51 / -0.53 / -0.20scourge/textures/floor7 -0.45 / -0.22 / 0.00 0.54 / 0.37 / 0.01scourge/textures/sandbase -0.05 / 0.04 / -0.01 -0.89 / -0.74 / -0.01scourge/textures/warmaste -0.38 / -0.15 / -0.03 -1.43 / -0.43 / -0.05scourge/textures/snakesta -1.95 / -1.09 / -0.41 -4.95 / -4.08 / -1.11scourge/textures/wall2 -0.72 / -0.42 / -0.02 -1.12 / -0.68 / -0.02scourge/textures/menu -0.64 / -0.36 / -0.02 -0.93 / -0.57 / -0.02scourge/textures/brickfloorv1 -0.03 / 0.02 / 0.00 -0.27 / -0.57 / 0.00

Page 83: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

83

scourge/textures/border2 -0.22 / -0.08 / -0.04 -3.20 / -3.03 / -0.02scourge/textures/screw 0.02 / 0.08 / 0.00 0.97 / 0.77 / 0.00scourge/textures/safepass -0.35 / -0.11 / -0.01 -1.10 / -0.73 / -0.02lorikeet-64 -0.19 / -0.04 / -0.03 -3.29 / -2.99 / -0.14lena-512 -0.42 / -0.16 / -0.05 -1.65 / -1.11 / -0.12West -0.15 / 0.01 / -0.02 -0.44 / -0.39 / -0.03Giridhar -0.65 / -0.16 / -0.11 -2.52 / -1.67 / -0.24

Table B.2: ftc1 RGB image compression errors relative to DXT1 and ETC:MAE / RMSE / DSSIM

Page 84: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

84 APPENDIX B. DETAILED EXPERIMENTAL RESULTS

Page 85: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Appendix C

German summary

C.1 Einleitung

Die Computergraphik, ein Teilgebiet der Informatik befasst sich mit der rechner-gestutzten Erzeugung digitaler Bilder. Da dies eine sehr rechenintensive Aufgabeist, wird dabei spezielle Hardware verwendet; bei der Darstellung von Ober-flachen verwendet diese Hardware verwendet unter anderem als Texturen be-zeichnete Datenobjekte. Beispielsweise kann zur Darstellung einer Ziegelwandein einzelnes Viereck verwendet werden, wobei eine Textur, die aus dem Bild ei-ner Ziegelwand besteht, verwendet wird (anstatt Ziegel und Mortel aus einzelnenVierecken oder Dreiecken zusammenzusetzen) [14]. Die einzelnen Bildpunkte ei-ner Textur heißen Texel. Die Texturen werden im Arbeitsspeicher des Systemsgespeichert oder in speziellem Graphikspeicher, der Teil der Graphikhardwareist (siehe Abbildung C.1).

Eine hohe Graphikqualitat erfordert hochauflosende Texturen, die viel Spei-cher und Speicherbandbreite belegen. Die Geschwindigkeit eines Systems wirddurch die Bandbreite, mit der auf den Speicher, in dem die Texturen liegen,zugegriffen werden kann, begrenzt [4].

Die Speicherbandbreite laßt sich durch Erhohung der Anzahl der Leitungenzwischen Speicher und Graphikprozessor oder Erhohung des Taktes, in demDaten auf diesen Leitungen ubertragen werden, erhohen. Beide Maßnahmenerhohen Kosten, Große, Energieverbrauch und Warmeabgabe des Systems.

Durch Texturkomprimierung kann mit gegebenem Speicher und gegebenerSpeicherbandbreite eine hohere Graphikqualitat erreicht werden oder der Be-darf an Speicher und Speicherbandbreite bei nahezu gleichbleibender Graphik-qualitat gesenkt werden.

Wegen besonderer Anforderungen, insbesondere der des schnellen Zugriffsauf einzelne Texel, sind gewohnliche Bildkomprimierungsverfahren wie PNGoder JPEG nicht zur Texturkomprimierung geeignet. Bei der Texturkomprimie-rung werden meist Blocke von 4 × 4 Texeln unabhangig voneinander kompri-miert. Texturkomprimierungsverfahrenhaben ublicherweise eine feste Kompri-

85

Page 86: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

86 APPENDIX C. GERMAN SUMMARY

Speicher

Prozessor

Bildschirm

Graphikhardware

SpeicherProzessor

Abbildung C.1: System mit Graphikhardware

Page 87: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

C.2. S3TC 87

mierungsrate und sind verlustbehaftet.

In dieser Arbeit wurden der Stand von Forschung (Kapitel 2) und Tech-nik (Kapitel 4) in der Texturkomprimierung dargelegt, zum Vergleich von Tex-turkomprimierungssystemen geeignete Fehlermaße vorgestellt (Kapitel 3). Eswurden neue Texturkomprimierungssysteme entwickelt (Kapitel 5). Die neuenTexturkomprimierungssysteme wurden mit den bestehenden anhand der Fehler-maße verglichen, was deutliche Verbesserungen der Bildqualitat bei gegebenerKomprimierungsrate bzw. eine doppelt so hohe Komprimierungsrate bei nurwenig geringerer Bildqualitat ergab.

C.2 S3TC

Das verbreitetste Texturkomprimierungsverfahren ist S3TC [39]. Es ist fur zwei-dimensionale Bilder mit drei (RGB) oder vier Farbkanalen (RGBA) geeignet.S3TC bietet verschiedene Unterverfahren, die bedeutendsten davon sind DXT1und DXT5.

Bei DXT1 werden fur jeden Block von 4× 4 Texeln 64 Bit gespeichert (ge-genuber den ublichen 24 Bit Farbtiefe ergibt dies eine Komprimierungsrate von6 : 1). Diese 64 Bit teilen sich auf zwei 16-Bit Farbwerte a und b (Farbco-deworter) sowie einen 2-Bit Wert (Texelindex) pro Texel auf (siehe Abbildung4.2). a und b sind als R5G6B5-Farbwerte gespeichert, d.h. die ersten 5 Bitgeben den Rot-Farbwert, die nachsten 6 Bit den Grunwert und die letzten 5Bit den Blauwert an (beispielsweise ware 1111100000000000 ein intensives Rot,1111111111111111 ware Weiß).

Bei der Dekomprimierung werden aus den beiden gespeicherten Endpunktenzwei weitere (a3 + 2b

3 und 2a3 + b

3 ) generiert. Welche der vier Farben einem Tex-el zugewiesen wird, wird durchdesen Texelindex bestimmt. Abhangig von denWerten a und b kann davon abweichend auch nur eine weitere Farbe (a2 + b

2 ) ausa und b generiert werden. Die letzte Farbe wird dann als Schwarz angenommen.

Bei DXT3 und DXT5 wird der RGB-Anteil wie bei DXT1 gespeichert,wahrend weitere 64 Bit pro Block zur Speicherung der Alphawerte verwendetwerden, was eine Komprimierungsrate von 4 : 1 genegnuber den ublichen 32 BitFarbtiefe ergibt.

Bei S3TC ist die Bildqualitat bei weit auseinanderliegenden a und b durch dieErzeugung der anderen beiden Farben und durch die Tatsache, daß insgesamtnur 4 Farben pro Block moglich sind begrenzt. Liegen a und b hingegen nahebeisammen wird die Bildqualitat durch die begrenzte Genauigkeit der R5G6B516-Bit Farbwerte beschrankt. Dies tritt auch auch bei anderen Texturkompri-mierungsverfahren, die Farbcodeworter verwenden (beispielsweise PVRTC [21]),auf.

Page 88: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

88 APPENDIX C. GERMAN SUMMARY

C.3 ftc

Bei ftc hangt die Genauigkeit, mit der Farbcodeworter gespeichert werden, vonihrem Abstand ab. Nur eines der Farbwerteworter wird auf gewohnliche Weisedirekt gespeichert, fur das oder die anderen werden stattdessen die Abstandezum ersten gespeichert. Wenn die Farbcodeworter nahe beisamen liegen, werdenmehr Bits zur Speicherung des ertsen Farbcodeworts verwendet, wahrend dieDifferenz(en) mit weniger Bits gespeichert werden.

Betrachten wir dazu zunachst nur den Grunwert der Textur. Bei S3TC wer-den die Grunwerte beider Farbcodeworter jeweils als 6 Bit-Binarzahl gespei-chert. Bei ftc wurden diese Werte folgendermaßen gespeichert: Bei weit ausein-anderliegenden Grunwerten wird der erste Wert als 5-Bit Binarzahl gp gespei-chert, der zweite Wert als 5-Bit Entfernung gd dazu. Der zweite Farbwert gs als5-Bit Binarzahl ist dann gp+gd. Die ubrigen 2 Bit werden fur einen Exponentene, der in diesem Fall 0 ware, verwendet. Liegen die Farbwerte naher beisammen,kann eine großere Genauigkeit verwendet werden: Der erste Farbwert wird als5 + e-Bit Binarzahl gp gespeichert, der zweite als 5− e-Bit Entfernung gd. Denzweite Farbwert als 5+e-Bit Binarzahl erhalt man dann durch Erweiterung vongd auf 5+e Bit (wobei das Vorzeichen erhalten bleibt, d.h. bei der ublichen Zwei-erkomplementdarstellung von Binarzahlenwird wird einfach das hochstwertigeBit dupliziert, um die neuen fuhrenden Bits zu erhalten) und Addition des Er-gebnisses zu gp.

Speichert man nun die Farbcodeworter auf diese Art und geht ansonsten wiebei DXT1 vor, erhalt man ftc1, ein Texturkomprimierungsverfahren fur RGB-Bilder, das eine bessere Bildqualitat als DXT1 bietet. Die auf einen Block aus4×4 Texeln verwendeten 64 Bits teilen sich dann wie in Abbildung 5.1 zu sehenauf: Je 10 Bit pro Farbkanal, 2 Bit fur den Exponenten e.

Um RGBA-Bilder zu komprimieren, konnte man nun analog zu DXT5 vor-gehen (ftc5). Eine andere Moglichkeit ist ftc2, bei dem der Alphakanal ahnlichden anderen Farbkanalen gespeichert wird: Die Farbkanale fur Rot, Grun undBlau werden mit einer Genauigkeit von 4 + e Bits gespeichert, der Alphakanalmit 3+e Bits, so daß die beiden Farbcodeworter zusammen wie bei DXT1 in 32Bit passen (siehe Abbildung 5.5). ftc2 hat zwar bei gegebener Texturauflosungeine etwas geringere Bildqualitat als DXT5, durch die hohere Komprimierungs-rate von 8 : 1 ist die Bildqualitat aber bei gegebener Speicherkapazitat und-bandbreite hoher (wie auch in Abbildung 5.6 erkennbar).

Page 89: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

Bibliography

[1] 3dfx Interactive. 3dfx FXT1 Texture Compression White Paper. http://www3.sharkyextreme.com/hardware/articles/99/3dfx_fxt/wp/.

[2] Aaftab Munshi. AMD compressed ATC texture. http://khronos.org/registry/gles/extensions/AMD/AMD_compressed_ATC_texture.txt.

[3] Aaftab Munshi and Jon Leech. OpenGL ES Common/Common-Lite ProfileSpecification Version 1.1.10. http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.10.pdf.

[4] Timo Aila, Ville Miettinen, and Petri Nordlund. Delay streams for graphicshardware. In SIGGRAPH ’03: ACM SIGGRAPH 2003 Papers, pages 792–800, New York, NY, USA, 2003. ACM.

[5] Tomas Akenine-Moller and Jacob Strom. Graphics for the masses: a hard-ware rasterization architecture for mobile phones. In SIGGRAPH ’03:ACM SIGGRAPH 2003 Papers, pages 801–808, New York, NY, USA, 2003.ACM.

[6] ATI Technologies. ATI Radeon X800 3Dc White Paper, 2004. http://www.ati.com/products/radeonx800/3DcWhitePaper.pdf.

[7] Francesco Banterle, Kurt Debattista, Patrick Ledda, and Alan Chalmers.A gpu-friendly method for high dynamic range texture compression usinginverse tone mapping. In Chris Shaw and Lyn Bartram, editors, GraphicsInterface, ACM International Conference Proceeding Series, pages 41–48.ACM Press, 2008.

[8] Barthold Lichtenbelt (OpenGL ARB Working Group chair). OpenGL3 Updates. http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=229374#Post229374.

[9] Andrew C. Beers, Maneesh Agrawala, and Navin Chaddha. Renderingfrom compressed textures. In SIGGRAPH ’96: Proceedings of the 23rdannual conference on Computer graphics and interactive techniques, pages373–378, New York, NY, USA, 1996. ACM.

89

Page 90: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

90 BIBLIOGRAPHY

[10] James F. Blinn. Simulation of wrinkled surfaces. SIGGRAPH Comput.Graph., 12(3):286–292, 1978.

[11] Simon Brown. DXT Compression Techniques. 2006. http://www.sjbrown.co.uk/?article=dxt.

[12] Simon Brown and Ignacio Castano. squish - DXT Compression Library.http://www.sjbrown.co.uk/?code=squish.

[13] Graham Campbell, Thomas A. DeFanti, Jeff Frederiksen, Stephen A. Joyce,and Lawrence A. Leske. Two bit/pixel full color encoding. In SIGGRAPH’86: Proceedings of the 13th annual conference on Computer graphics andinteractive techniques, pages 215–223, New York, NY, USA, 1986. ACM.

[14] Edwin Earl Catmull. A subdivision algorithm for computer display of curvedsurfaces. PhD thesis, 1974.

[15] James H. Clark. The Geometry Engine: A VLSI Geometry System forGraphics. In SIGGRAPH ’82: Proceedings of the 9th annual conference onComputer graphics and interactive techniques, pages 127–133, New York,NY, USA, 1982. ACM.

[16] Paul Debevec. Rendering synthetic objects into real scenes: bridging tradi-tional and image-based graphics with global illumination and high dynamicrange photography. In SIGGRAPH ’98: Proceedings of the 25th annual con-ference on Computer graphics and interactive techniques, pages 189–198,New York, NY, USA, 1998. ACM.

[17] Paul E. Debevec and Jitendra Malik. Recovering high dynamic range ra-diance maps from photographs. In SIGGRAPH ’97: Proceedings of the24th annual conference on Computer graphics and interactive techniques,pages 369–378, New York, NY, USA, 1997. ACM Press/Addison-WesleyPublishing Co.

[18] E. Delp and Robert Mitchell. Image compression using block truncationcoding. IEEE Transactions on Communications, 27(9):1335–1342, 1979.

[19] Don Mullis. 3DFX texture compression FXT1. http://opengl.org/registry/specs/3DFX/texture_compression_FXT1.txt.

[20] Ericsson. Ericsson Texture Compression, 2007. http://www.ericsson.com/mobilityworld/sub/open/technologies/texture_compression/tools/etcpack.

[21] Simon Fenney. Texture compression using low-frequency signal modulation.In HWWS ’03: Proceedings of the ACM SIGGRAPH/EUROGRAPHICSconference on Graphics hardware, pages 84–91, Aire-la-Ville, Switzerland,Switzerland, 2003. Eurographics Association.

Page 91: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

BIBLIOGRAPHY 91

[22] Carl Friedrich Gauss. Abhandlungen zur Methode der kleinsten Quadrate.Stankiewicz, Berlin, 1887.

[23] Paul Heckbert. Color image quantization for frame buffer display. SIG-GRAPH Comput. Graph., 16(3):297–307, 1982.

[24] Paul S. Heckbert. Survey of texture mapping. IEEE Comput. Graph. Appl.,6(11):56–67, 1986.

[25] T. Inada and M. D. McCool. Compressed lossless texture represen-tation and caching. In GH ’06: Proceedings of the 21st ACM SIG-GRAPH/Eurographics symposium on Graphics hardware, pages 111–120,New York, NY, USA, 2006. ACM.

[26] Jacob Strom and Martin Pettersson. ETC2: texture compression usinginvalid combinations. In GH ’07: Proceedings of the 22nd ACM SIG-GRAPH/EUROGRAPHICS symposium on Graphics hardware, pages 49–54, Aire-la-Ville, Switzerland, Switzerland, 2007. Eurographics Association.

[27] G. Knittel, A. Schilling, A. Kugler, and W. Straßer. Hardware for SuperiorTexture Performance. In Computers & Graphics 20, pages 475–481, 1996.

[28] A. Loza, L. Mihaylova, N. Canagarajah, and D. Bull. Structural similarity-based object tracking in video sequences. 2006.

[29] Mark J. Kilgard and Pat Brown and Yanjun Zhang.EXT texture compression latc. http://opengl.org/registry/specs/EXT/texture_compression_latc.txt.

[30] Mark J. Kilgard and Pat Brown and Yanjun Zhang.EXT texture compression rgtc. http://opengl.org/registry/specs/EXT/texture_compression_rgtc.txt.

[31] Mark J. Kilgard and Pat Brown and Yanjun Zhang and Attila Barsi.ARB texture compression rgtc. http://opengl.org/registry/specs/ARB/texture_compression_rgtc.txt.

[32] Matt Craighead. NV texture compression vtc. http://opengl.org/registry/specs/NV/texture_compression_vtc.txt.

[33] Rabah Mehdi. A C++ implementation of SSIM. http://mehdi.rabah.free.fr/.

[34] Jacob Munkberg, Tomas Akenine-Moller, and Jacob Strom. High qualitynormal map compression. In GH ’06: Proceedings of the 21st ACM SIG-GRAPH/Eurographics symposium on Graphics hardware, pages 95–102,New York, NY, USA, 2006. ACM.

Page 92: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

92 BIBLIOGRAPHY

[35] Jacob Munkberg, Petrik Clarberg, Jon Hasselgren, and Tomas Akenine-Moller. High dynamic range texture compression for graphics hardware.In SIGGRAPH ’06: ACM SIGGRAPH 2006 Papers, pages 698–706, NewYork, NY, USA, 2006. ACM.

[36] Jacob Munkberg, Ola Olsson, Jacob Strom, and Tomas Akenine-Moller.Tight frame normal map compression. In GH ’07: Proceedings of the 22ndACM SIGGRAPH/EUROGRAPHICS symposium on Graphics hardware,pages 37–40, Aire-la-Ville, Switzerland, Switzerland, 2007. EurographicsAssociation.

[37] Aaftab Munshi. Block-based image compression method and apparatus.US Patent 20060215914.

[38] Damian Nowroth, Ilia Polian, and Bernd Becker. A study of cognitiveresilience in a JPEG compressor. In IEEE International Conference onDependable Systems and Networks With FTCS and DCC, 2008, pages 32–41, 2008.

[39] Pat Brown. EXT texture compression s3tc. http://opengl.org/registry/specs/EXT/texture_compression_s3tc.txt.

[40] Pat Brown, Mathias Agopian. EXT texture compression dxt1. http://opengl.org/registry/specs/EXT/texture_compression_dxt1.txt.

[41] Karl Pearson. On lines and planes of closest fit to systems of points in space.The London, Edinburgh and Dublin Philosophical Magazine and Journal,6:559–572, 1901.

[42] Anton V. Pereberin. Hierarchical approach for texture compression. InProceedings of GraphiCon ’99, pages 195–199, 1999.

[43] Kimmo Roimela, Tomi Aarnio, and Joonas Itaranta. High dynamic rangetexture compression. In SIGGRAPH ’06: ACM SIGGRAPH 2006 Papers,pages 707–712, New York, NY, USA, 2006. ACM.

[44] Kimmo Roimela, Tomi Aarnio, and Joonas Itaranta. Efficient high dynamicrange texture compression. In SI3D ’08: Proceedings of the 2008 symposiumon Interactive 3D graphics and games, pages 207–214, New York, NY, USA,2008. ACM.

[45] Roland Scheidegger. libtxc dxtn. http://homepage.hispeed.ch/rscheidegger/dri_experimental/s3tc_index.html.

[46] Jacob Strom and Tomas Akenine-Moller. iPACKMAN: high-quality, low-complexity texture compression for mobile phones. In HWWS ’05: Proceed-ings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphicshardware, pages 63–70, New York, NY, USA, 2005. ACM.

Page 93: Philipp Klaus Krause February 26, 2009 - ColecoVision · Philipp Klaus Krause February 26, 2009. 2 Abstract This work presents new xed-rate texture compression systems for RGB and

BIBLIOGRAPHY 93

[47] Jacob Strom and Tomas Akenine-Moller. Packman: Texture compressionfor mobile phones, 2004. http://www.cs.lth.se/home/Tomas_Akenine_Moller/pubs/packman_sketch.pdf.

[48] Wen Sun, Yan Lu, Feng Wu, and Shipeng Li. Dhtc: an effective dxtc-based hdr texture compression scheme. In GH ’08: Proceedings of the 23rdACM SIGGRAPH/EUROGRAPHICS symposium on Graphics hardware,pages 85–94, Aire-la-Ville, Switzerland, Switzerland, 2008. EurographicsAssociation.

[49] Estle Ray Mann Thomas T. Goldsmith Jr. Cathode-Ray Tube AmusementDevice, 1948. US Patent 2455992.

[50] Lvdi Wang, Xi Wang, Peter-Pike Sloan, Li-Yi Wei, Xin Tong, and BainingGuo. Rendering from compressed high dynamic range textures on pro-grammable graphics hardware. In I3D ’07: Proceedings of the 2007 sympo-sium on Interactive 3D graphics and games, pages 17–24, New York, NY,USA, 2007. ACM.

[51] Zhou Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli. Image qualityassessment: from error visibility to structural similarity. Image Processing,IEEE Transactions on, 13(4):600–612, 2004.

[52] Li-Yi Wei. Tile-based texture mapping on graphics hardware. In HWWS’04: Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conferenceon Graphics hardware, pages 55–63, New York, NY, USA, 2004. ACM.


Recommended