BPTC Texture Compression

From OpenGL.org
Revision as of 16:00, 8 June 2013 by Alfonse (talk | contribs) (Clarification.)

Jump to: navigation, search
BPTC Texture Compression
Core in version 4.2
ARB extension ARB_texture_compression_bptc

BPTC Texture Compression is the collective name for a pair of compression formats. One of them is for unsigned normalized images, while the other is for floating-point values. They both use 4x4 blocks, and each block in both is 128-bits in size. Unlike S3 Texture Compression, the blocks are taken as byte streams, and thus they are endian-independent.

Note: This page will be an overview on these compression formats; it will not specify exactly how they work. The extension and OpenGL specifications cover those details, and they are quite involved. Specifically, they require a large number of lengthy tables. It's best to get this information directly from the source, to avoid them being erroneously reproduced here.

Unsigned normalized

The unsigned normalized formats come in two flavors that are mathematically equivalent: one for linear RGB values and one for sRGB values. They both have an alpha channel as well.

Both this format and S3TC work based on gradients: defining a block based on a pair of colors and the linearly interpolated values between them. The general difference between this format and the nearest S3TC size equivalent (GL_COMPRESSED_RGBA_S3TC_DXT5_EXT) is that this BPTC format allows for blocks to contain multiple gradients for different channels. This is like DXT5's ability to use different gradients for the RGB and Alpha components, but it is more flexible.

Each block selects between one of 7 different modes. The different modes represent how many channel gradients there are and which channels they map to.

Floating point