Sistema de compresión de texturas Base universal de código aberto de Google e Binomial

Google e Binomial aberto textos fonte Base universal, un códec para a compresión de texturas eficiente e un formato de ficheiro ".basis" universal asociado para distribuír texturas baseadas en imaxes e vídeos. O código de implementación de referencia está escrito en C++ e subministrado licenciado baixo Apache 2.0.

Base Universal complementos anteriormente publicado Sistema de compresión de datos Draco 3D e intenta resolver o problema co subministración de texturas para a GPU. Ata agora, os desenvolvedores limitáronse a elixir entre formatos de baixo nivel que acadan un alto rendemento pero que son específicos da GPU e ocupan moito espazo no disco, e outros formatos que logran reducir o tamaño pero que non poden competir coas texturas da GPU en rendemento.

O formato Basis Universal permítelle acadar o rendemento das texturas nativas da GPU, pero proporciona un maior nivel de compresión.
Basis é un formato intermedio que proporciona unha transcodificación rápida de texturas da GPU a varios formatos de baixo nivel para o seu uso tanto en sistemas de escritorio como en dispositivos móbiles antes do seu uso. Actualmente son compatibles os formatos PVRTC1 (4bpp RGB), BC7 (6 modo RGB), BC1-5, ETC1 e ETC2. Espérase soporte futuro para o formato ASTC (RGB ou RGBA) e os modos 4/5 RGBA para BC7 e 4bpp RGBA para PVRTC1.

Sistema de compresión de texturas Base universal de código aberto de Google e Binomial

As texturas no formato base ocupan entre 6 e 8 veces menos memoria de vídeo e requiren transferir aproximadamente a metade de datos que as texturas típicas baseadas no formato JPEG e un 10-25 % menos que as texturas no modo RDO. Por exemplo, cun tamaño de imaxe JPEG de 891 KB e unha textura ETC1 de 1 MB, o tamaño dos datos no formato Base é de 469 KB no modo de máxima calidade. Ao colocar texturas na memoria de vídeo, as texturas JPEG e PNG utilizadas nas probas consumían 16 MB de memoria, mentres que as texturas en
Requírense 2 MB de memoria para a tradución a BC1, PVRTC1 e ETC1 e 4 MB para a tradución a BC7.

Sistema de compresión de texturas Base universal de código aberto de Google e Binomial

O proceso de migración de aplicacións existentes a Basis Universal é bastante sinxelo. Basta con recodificar texturas ou imaxes existentes nun novo formato usando a utilidade "basisu" proporcionada polo proxecto, seleccionando o nivel de calidade necesario. A continuación, na aplicación, antes do código de renderizado, cómpre inicializar o transcodificador basisu, que se encarga de traducir o formato intermedio ao formato admitido pola GPU actual. Ao mesmo tempo, as imaxes ao longo de toda a cadea de procesamento permanecen comprimidas, incluso se cargan en forma comprimida na GPU. En lugar de transcodificar de forma preventiva toda a imaxe, a GPU decodifica selectivamente só as partes necesarias da imaxe.

Admite gardar matrices de texturas heteroxéneas (mapas de cubos), texturas volumétricas, matrices de texturas, niveis de mapas mipmap, secuencias de vídeo ou fragmentos de textura arbitrarias nun ficheiro. Por exemplo, é posible empaquetar unha serie de imaxes nun ficheiro para crear pequenos vídeos ou combinar varias texturas utilizando unha paleta común para todas as imaxes e desduplicando os modelos de imaxe típicos. A implementación do codificador Basis Universal admite a codificación multiproceso mediante OpenMP. O transcodificador só funciona actualmente en modo de fío único.

adicionalmente dispoñible Basis Decodificador universal para navegadores, entregado en formato WebAssembly, que se pode usar en aplicacións web baseadas en WebGL. En última instancia, Google pretende apoiar a Basis Universal en todos os principais navegadores e promocionalo como un formato de textura portátil para WebGL e unha futura especificación. WebGPU, conceptualmente similar ás API de Vulkan, Metal e Direct3D 12.

Nótase que a capacidade de incorporar vídeo co seu procesamento posterior só no lado da GPU fai de Basis Universal unha solución interesante para crear interfaces de usuario dinámicas en WebAssembly e WebGL, que poden mostrar simultaneamente centos de pequenos vídeos cunha carga mínima da CPU. Ata que as instrucións SIMD se poidan usar en WebAssembly con códecs tradicionais, este nivel de rendemento aínda non é alcanzable, polo que o vídeo baseado en texturas pode usarse en áreas onde o vídeo convencional non é aplicable. O código con optimizacións adicionais para o vídeo estase a preparar para a súa publicación, incluída a capacidade de uso Cadros I e Cadros P con soporte de acolchado adaptativo (CR).

Fonte: opennet.ru

Engadir un comentario