Sistema de compresión de texturas universal Basis de código abierto de Google y Binomial

Google y el binomio abierto código fuente Base Universal, un códec para una compresión eficiente de texturas y un formato de archivo universal asociado ".basis" para distribuir texturas basadas en imágenes y videos. El código de implementación de referencia está escrito en C++ y suministrado licenciado bajo Apache 2.0.

Base Universal complementa anteriormente publicado Sistema de compresión de datos Draco 3D e intenta resolver el problema proporcionando texturas para la GPU. Hasta ahora, los desarrolladores se han limitado a elegir entre formatos de bajo nivel que logran un alto rendimiento pero son específicos de la GPU y ocupan mucho espacio en disco, y otros formatos que logran una reducción de tamaño pero no pueden competir con las texturas de la GPU en rendimiento.

El formato Basis Universal le permite lograr el rendimiento de las texturas nativas de GPU, pero proporciona un mayor nivel de compresión.
Basis es un formato intermedio que proporciona una transcodificación rápida de texturas de GPU a varios formatos de bajo nivel para su uso tanto en sistemas de escritorio como en dispositivos móviles antes de su uso. Actualmente se admiten los formatos PVRTC1 (4bpp RGB), BC7 (modo 6 RGB), BC1-5, ETC1 y ETC2. Se espera compatibilidad futura con el formato ASTC (RGB o RGBA) y los modos 4/5 RGBA para BC7 y 4bpp RGBA para PVRTC1.

Sistema de compresión de texturas universal Basis de código abierto de Google y Binomial

Las texturas en el formato básico ocupan entre 6 y 8 veces menos memoria de video y requieren transferir aproximadamente la mitad de datos que las texturas típicas basadas en el formato JPEG y entre un 10 y un 25 % menos que las texturas en modo RDO. Por ejemplo, con un tamaño de imagen JPEG de 891 KB y una textura ETC1 de 1 MB, el tamaño de los datos en el formato básico es de 469 KB en el modo de mayor calidad. Al colocar texturas en la memoria de video, las texturas JPEG y PNG utilizadas en las pruebas consumieron 16 MB de memoria, mientras que las texturas en
La base requería 2 MB de memoria para la traducción a BC1, PVRTC1 y ETC1, y 4 MB para la traducción a BC7.

Sistema de compresión de texturas universal Basis de código abierto de Google y Binomial

El proceso de migración de aplicaciones existentes a Basis Universal es bastante sencillo. Basta con recodificar texturas o imágenes existentes en un nuevo formato utilizando la utilidad "basisu" proporcionada por el proyecto, seleccionando el nivel de calidad requerido. A continuación, en la aplicación, antes del código de renderizado, debe inicializar el transcodificador baseu, que es responsable de traducir el formato intermedio al formato admitido por la GPU actual. Al mismo tiempo, las imágenes a lo largo de toda la cadena de procesamiento permanecen comprimidas, incluso cuando se cargan comprimidas en la GPU. En lugar de transcodificar preventivamente toda la imagen, la GPU decodifica selectivamente sólo las partes necesarias de la imagen.

Admite guardar matrices de texturas heterogéneas (mapas de cubos), texturas volumétricas, matrices de texturas, niveles de mapas MIP, secuencias de video o fragmentos de textura arbitrarios en un solo archivo. Por ejemplo, es posible empaquetar una serie de imágenes en un archivo para crear pequeños vídeos, o combinar varias texturas utilizando una paleta común para todas las imágenes y deduplicando plantillas de imágenes típicas. La implementación del codificador Basis Universal admite la codificación multiproceso mediante OpenMP. Actualmente, el transcodificador solo funciona en modo de un solo subproceso.

además esta disponible Basis Decodificador universal para navegadores, entregado en formato WebAssembly, que se puede utilizar en aplicaciones web basadas en WebGL. En última instancia, Google tiene la intención de admitir Basis Universal en todos los principales navegadores y promocionarlo como un formato de textura portátil para WebGL y una especificación futura. WebGPU, conceptualmente similar a las API Vulkan, Metal y Direct3D 12.

Cabe señalar que la capacidad de incrustar video con su procesamiento posterior solo en el lado de la GPU hace que Basis Universal sea una solución interesante para crear interfaces de usuario dinámicas en WebAssembly y WebGL, que pueden mostrar simultáneamente cientos de videos pequeños con una carga mínima de CPU. Hasta que las instrucciones SIMD puedan usarse en WebAssembly con códecs tradicionales, este nivel de rendimiento aún no se puede alcanzar, por lo que el video basado en texturas se puede usar en áreas donde el video convencional no es aplicable. Actualmente se está preparando para su publicación código con optimizaciones adicionales para video, incluida la capacidad de usar Marcos I y marcos P con soporte de acolchado adaptativo (CR).

Fuente: opennet.ru

Añadir un comentario