stringtranslate.com

Compresión de textura escalable adaptativa

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 adoptado 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 un software alternativo desde 2018, por lo que ASTC se puede usar en cualquier GPU AMD Radeon. [12]

Descripción general

Imagen de ejemplo antes de la compresión.
Detalle de la imagen de ejemplo, después de la compresión a 8, 3,56 y 2 bits/píxel

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 fraccionales estrechamente espaciadas, 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 declarado para ASTC es permitir a los desarrolladores de contenido tener un mejor control sobre la compensación espacio/calidad inherente a cualquier esquema de compresión con pérdidas. Con ASTC, la relación entre velocidades de bits adyacentes es del orden del 25%, lo que hace que sea menos costoso aumentar la calidad de una textura determinada.

La codificación de diferentes activos a menudo requiere diferentes formatos de color. ASTC permite una amplia variedad de formatos de entrada, incluidos 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 velocidad 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 pico de señal a ruido 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 téxel. [2]

Formatos de color soportados

ASTC admite de 1 a 4 canales. En modos con 2 a 4 canales, uno de los canales puede tratarse como "no correlacionado" y recibir un gradiente separado para la predicción. En cualquier caso, los datos se decodifican como RGBA. [13]

Cada uno de estos puede codificarse como rango dinámico alto o bajo. El codificador selecciona formatos de color de forma independiente para cada bloque de la imagen.

En la práctica, ASTC se puede utilizar para representar datos distintos del color. Por ejemplo, el formato L+A puede usarse para representar "X+Y", un mapa normal con componentes no correlacionados; el formato "RG+B" se puede utilizar para representar XY+Z. [14] El astc-encodersoftware suministrado por ARM admite la generación "X+Y" con la -normalopción. Se espera que el sombreador trate la salida decodificada como una textura agitada . [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 texels hasta 12×12 texels. Las velocidades de bits disponibles varían, por tanto, desde 8 bits por texel hasta 0,89 bits por texel, con finos pasos intermedios.

En la tabla anterior, la columna "Incremento" muestra el almacenamiento adicional requerido para almacenar una textura usando esta velocidad de bits, en comparación con la siguiente más pequeña. Las huellas de los bloques se presentan como ancho × alto.

Huellas de bloques 3D y tasas de bits

Las texturas ASTC 3D se comprimen utilizando un tamaño de bloque fijo de 128 bits, como para 2D, pero con una huella de bloque variable que va desde 3×3×3 texels hasta 6×6×6 texels. Las velocidades de bits disponibles varían, por tanto, desde 4,74 bits por texel hasta 0,59 bits por texel, con finos pasos intermedios.

Las huellas 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 agrega compresión adicional sobre los 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, es parte del formato de archivo KTX (Khronos Texture). [17]

Ver también

Referencias

  1. ^ "Tecnología de compresión de textura escalable adaptativa (ASTC) desarrollada por ARM y AMD".
  2. ^ abc "Compresión de textura escalable adaptativa" (PDF) . HPG 2012 . Consultado el 27 de junio de 2012 .
  3. ^ "Khronos lanza la especificación de compresión de texturas de próxima generación ATSC". El Grupo Khronos Inc. 2012-08-06 . Consultado el 6 de agosto de 2012 .
  4. ^ ab "Tablas de conjuntos de características metálicas" (PDF) . Apple Inc . 2020-10-21 . Consultado el 31 de agosto de 2021 .
  5. ^ "Hoja de datos de la GPU Arm Mali" (PDF) . Brazo limitado . 2021 . Consultado el 31 de agosto de 2021 .
  6. ^ "La arquitectura PowerVR Series6XT de nueva generación de Imagine ofrece hasta un 50% más de rendimiento y administración de energía avanzada". Tecnologías de la imaginación . 2014-01-06 . Consultado el 21 de agosto de 2021 .
  7. ^ "Intel Skylake agrega compresión de texturas ASTC y próximamente compatibilidad con código abierto". Forónix . 2015-05-20 . Consultado el 31 de agosto de 2021 .
  8. ^ "Guía para desarrolladores de API de gráficos para procesadores Intel Core de sexta generación". Archivado desde el original el 2017-07-20.
  9. ^ Michael Larabel (7 de octubre de 2021). "Intel elimina el hardware ASTC de los gráficos Gen12.5+". Forónix . Consultado el 10 de julio de 2022 .
  10. ^ "API Vulkan" (PDF) .
  11. ^ "Guía para desarrolladores de Qualcomm Adreno OpenGL ES" (PDF) . Qualcomm . 2015-05-01 . Consultado el 31 de agosto de 2021 .
  12. ^ "[Mesa-dev] [PATCH 0/7] Compresión de textura ASTC para todos los controladores Gallium". Listas.freedesktop.org. 23 de julio de 2018 . Consultado el 1 de septiembre de 2022 .
  13. ^ "Especificación de formato de datos de Khronos v1.1 rev 9". registro.khronos.org .
  14. ^ "Khronos lanza la especificación de compresión de texturas de próxima generación de ASTC". El grupo Khronos . 6 de agosto de 2012.
  15. ^ "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 usado por BC5; almacene los componentes X e Y de una normal de longitud unitaria. El componente Z de lo normal se puede reconstruir en código de sombreado basándose en el conocimiento de que el vector tiene una longitud unitaria. Para codificar esto, necesitamos almacenar solo dos componentes de entrada en los datos comprimidos y, por lo tanto, usar el interruptor de codificación rrrg para alinear los datos con el punto final ASTC de luminancia + alfa.
  16. ^ "Especificación de textura UASTC". GitHub .
  17. ^ "KTX - Formato de contenedor de textura GPU". El grupo Khronos . 16 de abril de 2021.

enlaces externos