PVRTC

From Wikipedia, the free encyclopedia
Jump to: navigation, search

PVRTC and PVRTC2 are a family of lossy, fixed-rate texture compression formats used in PowerVR's MBX (PVRTC only), SGX and Rogue technologies. The PVRTC algorithm is documented in Simon Fenney's paper "Texture Compression using Low-Frequency Signal Modulation" that was presented at Graphics Hardware 2003.

These differ from block-based texture formats such as S3TC and Ericsson Texture Compression (ETC) in that the compressed image is represented by two lower resolution images which are bilinearly upscaled and then blended according to low precision, per-pixel weights. They also differ in that they support ARGB data in both 4-bpp and 2-bpp modes.

PVRTC is the compressed texture format used in all generations of the iPhone, iPod Touch, and iPad. It is also supported[1] in certain Android devices, that use PowerVR GPUs.

Data structure[edit]

In both PVRTC and PVRTC2, textures are compressed in blocks. In 4 bit mode (4-bpp) one block has 4×4 pixels. In 2 bit mode (2-bpp) one block are 8×4 pixels. One block always occupies 64 bits (8 bytes) of storage/memory space.

E.g. 1024×1024 4-bpp PVRTC texture would have 65536 blocks and it takes 524288 bytes of storage/memory space. Blocks are stored in Morton order.

With PVRTC there are six different variables[2] stored to one block: Modulation data (32 bits), punch-through alpha flag (1 bit), color A (15 bits), color A opaque flag (1 bit), color B (14 bits) and color B opaque flag (1 bit).

With PVRTC2 there are six different variables[3] stored to one block: Modulation data (32 bits), modulation flag (1 bit), color B (14 bits), hard transition flag (1 bit), color A (15 bits) and opacity flag (1 bit).

Color A and Color B must both be in same format (either RGB or RGBA). This RGB or RGBA selection applies to whole texture.

Limitations[edit]

There isn't any max size limit via format itself, but GPU's max texture size limit does apply to PVRTC textures. For this reason single PVRTC texture is usually capped to 4096x4096 resolution.

Since most PVRTC and PVRTC2 texture creation tools are targeting iPhones, iPads and iPod touches, additional limitations[4] set by Apple apply:

  • Height and width must be a power of 2.
  • Height and width must be at least 8.
  • Must be square (height==width)

Naming confusion[edit]

Some texture tools (e.g. TexturePacker) use abbreviation PVRTC2 for PVRTC 2-bpp.[5] This naturally causes confusion since people cannot know for sure if term PVRTC2 means PVRTC2 texture or PVRTC 2-bpp texture.

References[edit]