Sistema de compressão de textura Basis Universal de código aberto Google e Binomial

Google e binômio aberto textos de origem Base Universal, um codec para compactação de textura eficiente e um formato de arquivo universal ".basis" associado para distribuição de texturas baseadas em imagem e vídeo. O código de implementação de referência é escrito em C++ e fornecido licenciado sob Apache 2.0.

Base Universal complementa anteriormente Publicados Sistema de compressão de dados Draco 3D e tenta resolver o problema de fornecimento de texturas para a GPU. Até agora, os desenvolvedores estavam limitados a escolher entre formatos de baixo nível que alcançam alto desempenho, mas são específicos da GPU e ocupam muito espaço em disco, e outros formatos que conseguem redução de tamanho, mas não podem competir com as texturas da GPU em desempenho.

O formato Basis Universal permite obter o desempenho de texturas GPU nativas, mas fornece um nível mais alto de compactação.
Basis é um formato intermediário que fornece transcodificação rápida de texturas de GPU para vários formatos de baixo nível para uso em sistemas desktop e dispositivos móveis antes do uso. Atualmente suportados são os formatos PVRTC1 (4bpp RGB), BC7 (modo 6 RGB), BC1-5, ETC1 e ETC2. Espera-se suporte futuro para o formato ASTC (RGB ou RGBA) e modos 4/5 RGBA para BC7 e 4bpp RGBA para PVRTC1.

Sistema de compressão de textura Basis Universal de código aberto Google e Binomial

As texturas no formato básico ocupam de 6 a 8 vezes menos memória de vídeo e exigem a transferência de aproximadamente metade dos dados das texturas típicas baseadas no formato JPEG e 10 a 25% menos do que as texturas no modo RDO. Por exemplo, com um tamanho de imagem JPEG de 891 KB e uma textura ETC1 de 1 MB, o tamanho dos dados no formato Basis é de 469 KB no modo de qualidade mais alta. Ao colocar texturas na memória de vídeo, as texturas JPEG e PNG utilizadas nos testes consumiram 16 MB de memória, enquanto as texturas em
A base exigia 2 MB de memória para tradução para BC1, PVRTC1 e ETC1 e 4 MB para tradução para BC7.

Sistema de compressão de textura Basis Universal de código aberto Google e Binomial

O processo de migração de aplicativos existentes para o Basis Universal é bastante simples. Basta recodificar texturas ou imagens existentes em um novo formato utilizando o utilitário “basisu” disponibilizado pelo projeto, selecionando o nível de qualidade desejado. A seguir, na aplicação, antes do código de renderização, é necessário inicializar o transcodificador baseu, que é responsável por traduzir o formato intermediário para o formato suportado pela GPU atual. Ao mesmo tempo, as imagens ao longo de toda a cadeia de processamento permanecem compactadas, inclusive sendo carregadas de forma compactada na GPU. Em vez de transcodificar preventivamente a imagem inteira, a GPU decodifica seletivamente apenas as partes necessárias da imagem.

Ele suporta o salvamento de matrizes de texturas heterogêneas (mapas de cubos), texturas volumétricas, matrizes de texturas, níveis de mipmap, sequências de vídeo ou fragmentos de textura arbitrários em um arquivo. Por exemplo, é possível compactar uma série de imagens em um arquivo para criar pequenos vídeos ou combinar várias texturas usando uma paleta comum para todas as imagens e desduplicando modelos de imagens típicos. A implementação do codificador Basis Universal suporta codificação multithread usando OpenMP. O transcodificador atualmente funciona apenas no modo single-threaded.

adicionalmente está disponível Base Decodificador universal para navegadores, entregue no formato WebAssembly, que pode ser usado em aplicações web baseadas em WebGL. Em última análise, o Google pretende oferecer suporte ao Basis Universal em todos os principais navegadores e promovê-lo como um formato de textura portátil para WebGL e uma especificação futura. WebGPU, conceitualmente semelhante às APIs Vulkan, Metal e Direct3D 12.

Observa-se que a capacidade de incorporar vídeo com seu posterior processamento apenas no lado da GPU torna o Basis Universal uma solução interessante para a criação de interfaces de usuário dinâmicas em WebAssembly e WebGL, que podem exibir simultaneamente centenas de pequenos vídeos com carga mínima de CPU. Até que as instruções SIMD possam ser usadas no WebAssembly com codecs tradicionais, esse nível de desempenho ainda não será alcançável, portanto, o vídeo baseado em textura pode ser usado em áreas onde o vídeo convencional não é aplicável. Código com otimizações adicionais para vídeo está sendo preparado para publicação, incluindo a capacidade de usar Quadros I e quadros P com suporte de preenchimento adaptativo (CR).

Fonte: opennet.ru

Adicionar um comentário