PVRTC y PVRTC2 (PowerVR Texture Compression) son una familia de algoritmos de compresión de texturas con pérdida que se utilizan en tecnologías relacionadas con las arquitecturas PowerVR , SGX y Rogue. La justificación teórica del funcionamiento del algoritmo fue descrita en el trabajo de Simon Fenney ( inglés Simon Fenney ) "Texture Compression usando Low-Frequency Signal Modulation" ( inglés. Texture Compression usando Low-Frequency Signal Modulation ) [1] y publicado el Hardware de gráficos 2003 [2] .
La principal diferencia entre PVRTC y los formatos de compresión de texturas S3TC y Ericsson Texture Compression (ETC) es que utiliza la mejora bilineal y la combinación de dos imágenes de baja resolución. Además, PVRTC admite datos ARGB de 2 bits por píxel (2bpp) y 4 bits por píxel (4bpp) .
PVRTC se utiliza en dispositivos basados en Nokia N9 , en todas las generaciones de dispositivos iOS ( iPhone , iPod Touch y iPad ) y en algunos dispositivos Android con GPU PowerVR [3] .
En PVRTC y PVRTC2, la textura se representa como bloques que ocupan 64 bits (en modo 4bpp, un bloque ocupará 4x4 píxeles, en 2bpp - 8x4). En algunas implementaciones, se accede a los bloques mediante una curva de Morton . Cada bloque almacena seis variables: en PVRTC, estos son datos de modulación (32 bits), bandera alfa perforada (1 bit), color A (15 bits), bandera de transparencia color A (1 bit), color B (14 bits) y una bandera transparente de color B (1 bit); en PVRTC2, datos de modulación (32 bits), bandera de modulación (1 bit), color B (15 bits), bandera de transición dura (1 bit), color A (15 bits) y bandera de transparencia (1 bit). En PVRTC, los indicadores de transparencia de color se pueden configurar de forma independiente, mientras que en PVRTC2, los colores A y B deben tener el mismo formato (ya sea RGB o RGBA).