Introducción a la compresión de texturas DXT PVR, etc.
¿Por qué es necesaria la compresión de texturas?
Formato de compresión de texturas móviles
Información instantánea: esquema de compresión de texturas de imágenes de desarrollo de juegos Unity
El creador utiliza texturas comprimidas.
Texturas y formatos de compresión de texturas más utilizados
Soluciones de compresión de texturas para dispositivos móviles
El uso de varias texturas comprimidas de GPU móvil
Textura Está en todas partes en el desarrollo de software, especialmente en aplicaciones 3D, pero también es un cuello de botella debido al entorno de red y las capacidades del hardware. Además, en aplicaciones tridimensionales generales, el tamaño de las texturas es básicamente más de 1/2 y, a menudo, supera 2/3 en los modelos. Tal vez dirás, ¿no es la textura sólo una imagen? ¿Es tan importante? Al comparar las dos imágenes siguientes, puede pensar que la primera es demasiado alta, pero para la gente normal, la segunda es obviamente mucho mejor. Es la textura la que da piel a los huesos, haciendo que nuestras aplicaciones sean más realistas y cercanas a la realidad.
¿Te imaginas? El modelo 1 anterior * * * tiene tres texturas, una de las cuales tiene el siguiente efecto:
El empalme de texturas es el comienzo de la compresión de texturas y los diferentes métodos de compresión tienen un impacto significativo en el tamaño final de la textura. . Por ejemplo, la diferencia de tamaño de las texturas anteriores en diferentes formatos de compresión también es muy significativa (el archivo original está en formato tga, convertido a otros formatos a través de Photoshop, opción predeterminada):
Es diferente del duro Los métodos de compresión de disco como png y jgp. Los métodos de compresión de texturas como DXT y ETC no requieren descompresión de la CPU durante el funcionamiento del juego y son muestreados directamente por la GPU, lo que puede reducir en gran medida el uso de memoria y ancho de banda y mejorar la eficiencia operativa, especialmente para los juegos móviles. .
1.DXT
DXT es un algoritmo de compresión de texturas con pérdida compatible con Microsoft Direct. Los formatos de DXT incluyen DXT1 ~ DXT5, entre los cuales DXT1 y DXT5 son más comunes y se discutirán en detalle más adelante. Se puede decir que DXT es actualmente el formato de compresión de texturas más utilizado y todas las tarjetas gráficas de PC pueden admitir la compresión DXT. Según Wikipedia, la patente es válida hasta el 2 de febrero de 2017.
El algoritmo DXT es muy fácil de entender y el efecto general parece bueno. Pero si cierra una parte, encontrará que se perderán muchos detalles, lo que también se debe al propio algoritmo. Después de todo, cada bloque solo tiene dos colores y los otros colores son la diferencia entre estos dos colores. Si el área actual tiene otros colores significativos, se perderá.
Otro problema es el contraste entre DXT3 y DXT5. En comparación con DXT1, que no admite transparencia (pero sí la admite), DXT5 es el doble de grande (64 bits más). Al igual que el esquema de ahorro de color anterior, también se guardan dos colores de 16 bits y las paletas correspondientes para la transparencia, lo que garantiza el efecto en RGBA, pero la idea de DXT3 es diferente. Guarda 4 bits de transparencia por píxel y agrega 64 bits, pero en este punto sólo hay 16 opciones de transparencia. En comparación con DXT5, la relación de compresión es la misma, pero el procesamiento de colores transparentes no es lo suficientemente delicado, por razones prácticas no se recomienda DXT3.
Aunque DXT tiene fallas obvias en los detalles, el efecto general sigue siendo bueno. De hecho, es un método de compresión muy poderoso, por lo que es la solución óptima para la mayoría de las opciones de compresión de texturas. Casi puede considerarse como estándar. formato de compresión en PC.
2.PVR amp; etc.
Tal vez desde una perspectiva comercial y de patentes, tal vez sea cierto que DXT no puede cumplir con los requisitos en el lado móvil. DXT no tiene mucho soporte en dispositivos móviles. En cambio, admite la compresión PVR en dispositivos iOS y la compresión ETC en Android.
DXT tiene fallas obvias en los detalles. La razón más importante es que cuando la textura se divide en bloques de área de 4x4 píxeles, cada bloque es independiente. Si bien esto simplifica enormemente el algoritmo de compresión, pierde esta similitud general entre bloques adyacentes. Esto se debe a que el propio algoritmo PVR considerará la correlación de los tres bloques de área inferior derecha e inferior derecha correspondientes al bloque de área.
Desde una perspectiva práctica, no tenemos muchas opciones debido a las patentes y los fabricantes de hardware. Usaremos ETC en Android y solo usaremos PVR en iOS. Si no hay DXT en la PC, probablemente seremos ridiculizados. Sin embargo, ésta también es una pregunta difícil. Por ejemplo, en WebGL, especialmente en Android, la diferencia es muy grande. ¿Admite la compresión de texturas? Incluso en diferentes navegadores en el mismo dispositivo, debido a controladores inconsistentes, el sistema puede admitir la compresión ETC, pero no es compatible con navegadores QQ como WeChat. Además, los teléfonos móviles Huawei no parecen ser compatibles con ETC a nivel del navegador (soporte de hardware o problemas con los controladores). Si no se requiere compresión en dispositivos móviles, la memoria es limitada. A menos que se haga un sacrificio en el volumen de datos, la forma de resolverlo es muy contradictoria. En comparación, es mucho más cómodo en iOS.
El sitio web oficial de Unity proporciona instrucciones detalladas y sugerencias de uso para el formato de compresión de texturas predeterminado de cada plataforma. Cabe señalar que al seleccionar texturas comprimidas admitidas por la GPU en diferentes plataformas de GPU móviles, la GPU puede muestrearlas directamente sin descomprimir la CPU, lo que ahorra memoria y ancho de banda de la CPU, y también ahorra volumen de almacenamiento. Si la plataforma de destino no admite el formato de compresión establecido, la textura se descomprimirá en RGBA32 o RGB24, lo que desperdiciará tiempo y memoria de la CPU.
Consulte los principios de implementación de varios algoritmos de compresión de mapas convencionales.
Dado que los teléfonos móviles Apple con IOS9 (arquitectura A8) ya admiten el formato de compresión ASTC, si considera renunciar a los problemas de compatibilidad con los teléfonos móviles Apple anteriores a la sexta generación, puede usarlo directamente. En comparación con PVRTC2/4, la relación de compresión de ASTC (4X4) aumentará a 0,25, pero el efecto de visualización será mucho mejor y no es necesario configurar la imagen en un cuadrado.
El uso de la compresión de texturas Astc para los recursos del juego se describe en detalle y se brindan algunas sugerencias, es decir, se brindan diferentes esquemas de compresión para diferentes tipos de texturas.
1. ¿Los juegos Yala Q&A H5 pueden usar texturas comprimidas (ETC, PVR, etc.)?
P: P: ¿Pueden los juegos H5 usar texturas comprimidas (ETC, PVR, etc.)? ) ?
Respuesta: Algunos navegadores no lo admiten (como Safari).
P: ¿Se pueden usar texturas en diferentes formatos de compresión en Yala según diferentes navegadores (o diferentes plataformas)?
Respuesta: Puede obtener el navegador actual usted mismo y manejarlo usted mismo.
2. ¿Layarunt me admite actualmente los formatos ETC/DXT o PVR? No se encontró tal descripción en la documentación.
¡LayaAir actualmente no es compatible con ETC/DXT/PVR y otros formatos! ¡Solo preste atención al registro de actualización del motor de versión de layaAir y le notificaremos a tiempo si es compatible!
3.Análisis de memoria de Egret: existe el problema de que la memoria dual no se puede liberar después de que -RES carga los recursos.
Está previsto admitir pvr, etc.