Ericsson Texture Compression ( ETC ) es una técnica de compresión de texturas con pérdida desarrollada en colaboración con Ericsson Research a principios de 2005. Originalmente se desarrolló bajo el nombre de iPACKMAN [ 1 ] y se basó en un esquema de compresión anterior llamado PACKMAN . [ 2 ]
ETC1
El esquema de compresión original 'ETC1' proporciona una compresión de 6x de datos RGB de 24 bits . No admite la compresión de imágenes con componentes alfa, aunque existen soluciones alternativas para esto. [ 3 ]
ETC1 toma grupos de datos de píxeles de 4x4 y comprime cada uno en una sola palabra de 64 bits. El grupo de píxeles de 4x4 se divide primero en dos fragmentos de 4x2, ya sea horizontal o verticalmente. A cada mitad se le asigna un color base, ya sea usando RGB 4/4/4 o asignando a una de ellas un RGB 5/5/5 y a la otra un desplazamiento de 3/3/3 bits con respecto a esa base. Cada región de 4x2 también tiene una selección de rango de brillo de 3 bits . Luego, a cada píxel se le aplica un desplazamiento con respecto al color base sumando uno de cuatro valores con signo al color base de su mitad del grupo de 4x4.
Este formato forma parte de las extensiones del estándar gráfico OpenGL ES [ 4 ] para dispositivos integrados como teléfonos móviles y ha sido aprobado por el Grupo Khronos para su uso en el estándar gráfico WebGL para gráficos de la World Wide Web del lado del navegador.
La versión 2.2 de Android (Froyo) incluye soporte para ETC1. [ 5 ] [ 3 ]
ETC2
El esquema 'ETC2' amplía ETC1 de forma retrocompatible para proporcionar una compresión RGB de mayor calidad, [ 6 ] así como compresión de RGBA (RGB más alfa).
Los siguientes códecs ETC2 son obligatorios en OpenGL ES 3.0 [ 7 ] y OpenGL 4.3: [ 8 ]
GL_COMPRESSED_RGB8_ETC2— Comprime los datos RGB888, la continuación de ETC1.GL_COMPRESSED_RGBA8_ETC2_EAC— Comprime datos RGBA8888 con soporte alfa completo.GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2— Comprime los datos RGBA donde los píxeles son totalmente transparentes o totalmente opacos.
También están disponibles variantes sRGB de los códecs mencionados anteriormente.
EAC
EAC se basa en los mismos principios que ETC1/ETC2, pero se utiliza para datos de uno o dos canales. Los siguientes cuatro códecs EAC se incluyen como obligatorios en OpenGL ES 3.0 y OpenGL 4.3:
GL_COMPRESSED_R11_EAC— un canal de datos sin signoGL_COMPRESSED_SIGNED_R11_EAC— datos firmados de un canalGL_COMPRESSED_RG11_EAC— datos sin signo de dos canalesGL_COMPRESSED_SIGNED_RG11_EAC— datos firmados de dos canales
Codificación
Los formatos RGBA y RG11 se codifican en bloques de 4x4 de 128 bits, mientras que el resto se codifican en bloques de 64 bits. En el caso de RGBA, los canales RGB se codifican en un bloque estándar de 64 bits, mientras que el canal A dispone de su propio bloque de 64 bits. Los formatos RG11 se codifican de forma similar, con un bloque de 64 bits por componente.
Software
Una utilidad de software llamada ETCPACK para la compresión y descompresión de texturas ETC1/ETC2 está disponible para su descarga gratuita en forma de código desde Ericsson en GitHub . [ 9 ]
Véase también
Referencias
- ↑ iPACKMAN: Compresión de texturas de alta calidad y baja complejidad para teléfonos móviles -- Jacob Ström (Ecsson Research), Tomas Akeinine-Möller (Universidad de Lund)
- ^ PACKMAN: Compresión de texturas para Mobies - Jacob Ström (Ericsson Research), Tomas Akeinine-Möller (Universidad de Lund).
- 1 2 "Código de ejemplo para manejar canales alfa en ETC1 de ARM" . Archivado del original el 27/10/2011 . Recuperado el 03/11/2011 .
- ↑ OES_compressed_ETC1_RGB8_texture , Descripción del algoritmo de compresión ETC1 y el formato de textura en el registro de extensiones de OpenGL ES.
- ↑ Notas de la versión de Android 2.2 Archivadas el 11/10/2010 en Wayback Machine (Froyo)
- ↑ Artículo sobre ETC2: Compresión de texturas mediante combinaciones no válidas
- ↑ "Especificación de OpenGL ES versión 3.0" (PDF) . Archivado del original (PDF) el 6 de marzo de 2016. Consultado el 7 de agosto de 2012 .
- ↑ Especificación de OpenGL versión 4.3
- ↑ Ericsson ETCPACK en Github
Enlaces externos
- Ericsson ETCPACK en GitHub
- Código de ejemplo para el manejo de canales alfa en ETC1 de ARM
- rg_etc1 , un empaquetador/desempaquetador de bloques ETC1 rápido y de alta calidad, con licencia ZLIB , en un único archivo fuente C++.
- etcpak , una utilidad de compresión de texturas de Ericsson extremadamente rápida para la preparación rápida de recursos, por Bartosz Taudul.
- etc2comp , un programa rápido de compresión de texturas de Ericsson.
- Compresión de texturas