La compresión de textura escalable adaptativa ( ASTC ) es un algoritmo de compresión de textura basado en bloques con pérdida desarrollado por Jørn Nystad et al. de ARM Ltd. y AMD . [ 1 ]
Los detalles completos de ASTC se presentaron públicamente por primera vez en la conferencia High Performance Graphics 2012, en un artículo de Olson et al. titulado "Compresión de textura escalable adaptativa". [ 2 ]
ASTC fue adoptada como una extensión oficial tanto para OpenGL como para OpenGL ES por el Grupo Khronos el 6 de agosto de 2012. [ 3 ]
Soporte de hardware
En Linux, todos los controladores Gallium 3D tienen una alternativa de software desde 2018, por lo que ASTC se puede usar en cualquier GPU AMD Radeon. [ 12 ]
Descripción general


El método de compresión es una evolución de la compresión de celdas de color, con características que incluyen numerosas tasas de bits fraccionarias muy próximas entre sí, múltiples formatos de color, compatibilidad con texturas de alto rango dinámico (HDR) y compatibilidad con texturas 3D reales.
El objetivo principal de diseño de ASTC es permitir que los desarrolladores de contenido tengan un mayor control sobre la relación espacio/calidad inherente a cualquier esquema de compresión con pérdida. Con ASTC, la relación entre tasas de bits adyacentes es del orden del 25 %, lo que reduce el costo de aumentar la calidad para una textura determinada.
La codificación de diferentes recursos suele requerir distintos formatos de color. ASTC ofrece una amplia variedad de formatos de entrada, incluyendo solo luminancia, luminancia alfa, RGB, RGBA y modos optimizados para normales de superficie. De este modo, el diseñador puede elegir el formato óptimo sin tener que admitir múltiples esquemas de compresión diferentes.
Las opciones de tasa de bits y formato de color no se limitan entre sí, por lo que es posible elegir entre un gran número de combinaciones.
A pesar de esta flexibilidad, ASTC logra mejores relaciones señal-ruido máximas que PVRTC , S3TC y ETC2 cuando se miden a 2 y 3,56 bits por texel . [ 2 ] Para texturas HDR, produce resultados comparables a BC6H a 8 bits por texel. [ 2 ]
Características técnicas
El algoritmo desacopla la resolución de la cuadrícula de pesos de los texeles, lo que permite que cada bloque tenga una cuadrícula de hasta 64 pesos. Estos pesos se interpolan para determinar los valores de cada texel mediante interpolación bilineal o trilineal . [ 2 ]
En el modo de doble plano, se especifican dos valores de ponderación distintos para cada texel. Un canal de color puede designarse como el segundo plano e interpolarse mediante una cuadrícula de ponderación independiente, seleccionada a través de un selector de componentes de 2 bits. Esto resulta especialmente útil para canales no correlacionados como el alfa . [ 13 ] También se dispone de bloques de extensión vacía para codificar de forma eficiente áreas de color constante. [ 13 ]
Un componente fundamental de ASTC es la codificación de secuencias de enteros acotadas (BISE), un esquema de codificación de bajo nivel que permite representar secuencias de valores de datos utilizando un número fraccional de bits por valor. [ 2 ] Esto se utiliza para una cuantificación eficiente, sin potencias de dos, tanto de los puntos finales de color como de los pesos.
ASTC también admite la partición múltiple, lo que permite dividir un bloque en hasta cuatro subconjuntos espaciales, cada uno con sus propios puntos finales de color. [ 2 ] Para texturas de alto rango dinámico (HDR), utiliza una representación pseudologarítmica para mantener una precisión consistente en un amplio rango de valores. [ 2 ]
Formatos de color compatibles
ASTC admite de 1 a 4 canales. En los modos de 2 a 4 canales, uno de ellos puede tratarse como "no correlacionado" y recibir un gradiente independiente para la predicción. En cualquier caso, los datos se decodifican como RGBA. [ 13 ]
Cada uno de estos elementos puede codificarse con un rango dinámico bajo o alto. El codificador selecciona los formatos de color de forma independiente para cada bloque de la imagen.
En la práctica, ASTC puede utilizarse para representar datos distintos del color. Por ejemplo, el formato L+A puede utilizarse para representar "X+Y", un mapa normal con componentes no correlacionadas; el formato "RG+B" puede utilizarse para representar XY+Z. [ 14 ] El astc-encodersoftware proporcionado por ARM admite la generación de "X+Y" con la -normalopción. Se espera que el sombreador trate la salida decodificada como una textura remezclada . [ 15 ]
Huellas de bloques 2D y tasas de bits
Las texturas ASTC se comprimen utilizando un tamaño de bloque fijo de 128 bits, pero con una huella de bloque variable que va desde 4×4 texeles hasta 12×12 texeles. Por lo tanto, las tasas de bits disponibles varían desde 8 bits por texel hasta 0,89 bits por texel, con pasos intermedios precisos.
En la tabla anterior, la columna "Incremento" muestra el almacenamiento adicional necesario para guardar una textura con esta tasa de bits, en comparación con la siguiente tasa más baja. Las dimensiones de los bloques se presentan como ancho × alto.
Huellas de bloques 3D y tasas de bits
Las texturas 3D de ASTC se comprimen utilizando un tamaño de bloque fijo de 128 bits, al igual que en 2D, pero con una huella de bloque variable que va desde 3×3×3 texeles hasta 6×6×6 texeles. Por lo tanto, las tasas de bits disponibles varían desde 4,74 bits por texel hasta 0,59 bits por texel, con pasos intermedios muy precisos.
Las dimensiones de los bloques se presentan como ancho × alto × profundidad.
ASTC universal
UASTC (Universal ASTC) es un subconjunto de ASTC especificado por Binomial. El formato se utiliza en su formato de textura GPU " supercomprimido " Basis Universal, que añade compresión adicional sobre formatos de textura comprimidos como UASTC y ETC1S y permite una conversión eficiente de UASTC/ETC1S a formatos de textura comprimidos directamente utilizables por las GPU. [ 16 ] UASTC, como parte de Basis Universal, forma parte del formato de archivo KTX (Khronos Texture). [ 17 ]
Véase también
Referencias
- ↑ "Tecnología de compresión de texturas escalable adaptativa (ASTC) desarrollada por ARM y AMD" .
- 1 2 3 4 5 6 7 "Compresión de textura escalable adaptativa" (PDF) . HPG 2012. Consultado el 27 de junio de 2012 .
- ↑ "Khronos publica la especificación de compresión de texturas de próxima generación ATSC" . The Khronos Group Inc. 6 de agosto de 2012. Consultado el 6 de agosto de 2012 .
- 1 2 "Tablas de conjunto de características de Metal" (PDF) . Apple Inc. 21 de octubre de 2020. Recuperado el 31 de agosto de 2021 .
- ↑ "Hoja de datos de la GPU Arm Mali" (PDF) . Arm Limited . 2021. Consultado el 31 de agosto de 2021 .
- ↑ "La arquitectura PowerVR Series6XT de nueva generación de Imagination ofrece un rendimiento hasta un 50 % superior y una gestión de energía avanzada" . Imagination Technologies . 6 de enero de 2014. Consultado el 21 de agosto de 2021 .
- ↑ "Intel Skylake agrega compresión de texturas ASTC, soporte de código abierto próximamente" . Phoronix . 2015-05-20 . Consultado el 2021-08-31 .
- ↑ "Guía para desarrolladores de la API de gráficos para procesadores Intel Core de sexta generación" . Archivado del original el 20 de julio de 2017.
- ↑ Michael Larabel (07/10/2021). "Intel elimina el hardware ASTC de las tarjetas gráficas Gen12.5+" . Phoronix . Consultado el 10/07/2022 .
- ↑ "API de Vulkan" (PDF) .
- ↑ "Guía para desarrolladores de Qualcomm Adreno OpenGL ES" (PDF) . Qualcomm . 1 de mayo de 2015. Consultado el 31 de agosto de 2021 .
- ↑ " [ Mesa-dev ] [ PATCH 0/7 ] Compresión de texturas ASTC para todos los controladores Gallium" . Lists.freedesktop.org. 23 de julio de 2018 . Recuperado el 1 de septiembre de 2022 .
- 1 2 3 "Especificación del formato de datos de Khronos v1.1 rev 9" . registry.khronos.org .
- ↑ "Khronos publica la especificación de compresión de texturas ASTC de próxima generación" . The Khronos Group . 6 de agosto de 2012.
- ↑ "Codificación ASTC efectiva [ astc-encoder/Docs/Encoding.md en 2042cfc1a507c0414fb41dce1603ed53c503a0da · ARM-software/astc-encoder ] " . GitHub .
La mejor manera de almacenar mapas normales usando ASTC es similar al esquema utilizado por BC5; almacenar los componentes X e Y de una normal de longitud unitaria. El componente Z de la normal se puede reconstruir en el código del sombreador basándose en el conocimiento de que el vector es de longitud unitaria. Para codificar esto, necesitamos almacenar solo dos componentes de entrada en los datos comprimidos y, por lo tanto, usar el swizzle de codificación rrrg para alinear los datos con el punto final de luminancia+alfa de ASTC.
- ↑ "Especificación de texturas de UASTC" . GitHub .
- ↑ "KTX - Formato de contenedor de texturas de GPU" . The Khronos Group . 16 de abril de 2021.
Enlaces externos
- Gráficos de alto rendimiento 2012
- Compresión de texturas ASTC: ARM lleva la tecnología gráfica a un nuevo nivel.
- ARM desvela detalles sobre la compresión de texturas ASTC en la conferencia HPG.
- Códec de evaluación ASTC de ARM
- Especificación de extensión de perfil completo Khronos ASTC
- Algoritmos de compresión con pérdida
- Compresión de texturas
- Tecnologías AMD
- Compresión de datos
