Google y Binomial han abierto el código del sistema de compresión de texturas Basis Universal

Las empresas Google y Binomial se abrieron textos originales Basis Universal, un códec para la compresión eficiente de texturas y su formato de archivo universal asociado ".basis" para la distribución de texturas basadas en imágenes y videos. El código de la implementación de referencia está escrito en C++ y se entrega bajo la licencia Apache 2.0.

Basis Universal complementa la anteriormente publicada sistema de compresión de datos 3D Draco y trata de resolver el problema de suministro de texturas para GPU. Hasta ahora, los desarrolladores se han visto limitados a elegir entre formatos de bajo nivel que permiten un alto rendimiento, pero son específicos para GPU y ocupan mucho espacio en disco, y otros formatos que permiten una reducción del tamaño, pero no pueden competir con las texturas de GPU en rendimiento.

El formato Basis Universal permite alcanzar un rendimiento nativo para texturas de GPU, pero proporciona un mayor nivel de compresión.
Basis es un formato intermedio que permite una rápida recodificación a diversos formatos de texturas de bajo nivel para GPU, usados tanto en sistemas de escritorio como en dispositivos móviles. Actualmente se admite la transición a formatos como PVRTC1 (4bpp RGB), BC7 (modo 6 RGB), BC1-5, ETC1 y ETC2. Se espera que en el futuro se añada soporte para el formato ASTC (RGB o RGBA) y modos 4/5 RGBA para el formato BC7 y 4bpp RGBA para PVRTC1.

Google y Binomial han abierto el código del sistema de compresión de texturas Basis Universal

Las texturas en formato basis ocupan entre 6 y 8 veces menos memoria de video y requieren la transmisión de aproximadamente la mitad de datos que las texturas típicas basadas en 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 formato Basis es de 469 KB en el modo de mayor calidad. Al almacenar la textura en la memoria de video, las texturas usadas en las pruebas en formato JPEG y PNG consumieron 16 MB de memoria, mientras que para las texturas en formato
Basis se requirieron 2 MB de memoria en caso de transición a BC1, PVRTC1 y ETC1, y 4 MB en caso de transición a BC7.

Google y Binomial han abierto el código del sistema de compresión de texturas Basis Universal

El proceso de migrar aplicaciones existentes a Basis Universal es bastante simple. Solo es necesario recodificar las texturas o imágenes existentes a un nuevo formato utilizando la herramienta 'basisu' proporcionada por el proyecto, seleccionando el nivel de calidad requerido. Luego, en la aplicación, se debe inicializar el recodificador basisu antes del código de representación, que se encarga de traducir el formato intermedio al formato compatible con la GPU actual. Durante todo el proceso de tratamiento, las imágenes permanecen comprimidas, y se cargan en formato comprimido en la GPU. En lugar de recodificar la imagen completa de manera anticipada, la GPU decodifica selectivamente solo las partes necesarias de la imagen.

Se admite la conservación de arreglos de texturas heterogéneas (cubemap), texturas volumétricas, arreglos de texturas, niveles de mipmap, secuencias de video o fragmentos arbitrarios de texturas en un solo archivo. Por ejemplo, es posible empaquetar en un archivo una serie de imágenes para crear pequeños videos o combinar varias texturas utilizando una paleta común para todas las imágenes y deduplicando patrones de imagen estándar. La implementación del codificador Basis Universal admite codificación multihilo utilizando OpenMP. Por el momento, el recodificador solo funciona en modo de un solo hilo.

Adicionalmente está disponible El decodificador Basis 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 lograr el soporte de Basis Universal en todos los navegadores principales y promoverlo como un formato de textura portátil para WebGL y la futura especificación WebGPU, conceptualmente similar a las API Vulkan, Metal y Direct3D 12.

Se observa que la capacidad de incrustar video con su posterior procesamiento solo en la GPU convierte a Basis Universal en una solución interesante para crear interfaces de usuario dinámicas en WebAssembly y WebGL, donde pueden reflejarse simultáneamente cientos de pequeños videos con una carga mínima en la CPU. Hasta la llegada de la posibilidad de usar instrucciones SIMD en WebAssembly, un nivel de rendimiento similar no era alcanzable con códecs tradicionales; por lo tanto, el video basado en texturas puede usarse en áreas donde el video convencional no es aplicable. Actualmente, se está preparando la publicación de un código con optimizaciones adicionales para video, que incluye la posibilidad de usar I-frames y P-frames con soporte de relleno adaptativo (CR).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster