Google e Binomial liberaram o código do sistema de compressão de texturas Basis Universal

As empresas Google e Binomial lançaram códigos-fonte Basis Universal, um codec para compressão eficiente de texturas e um formato de arquivo universal associado “.basis” para a distribuição de texturas baseadas em imagens e vídeos. O código da implementação de referência foi escrito em C++ e é disponibilizado estão sob a licença Apache 2.0.

Basis Universal complementa a sistema de compressão de dados 3D Draco anteriormente publicado e tenta resolver o problema da entrega de texturas para GPU. Até então, os desenvolvedores estavam limitados a escolher entre formatos de baixo nível que proporcionam alto desempenho, mas são específicos para GPU e ocupam muito espaço em disco, e outros formatos que permitem a redução do tamanho, mas não podem competir com as texturas de GPU em termos de desempenho.

O formato Basis Universal permite alcançar desempenho nativo de texturas para GPU, mas fornece um nível de compressão mais alto.
Basis é um formato intermediário que, antes da aplicação, permite a recodificação rápida em vários formatos de texturas de baixo nível de GPU, utilizados tanto em sistemas desktop quanto em dispositivos móveis. Atualmente, a trans codificação para os formatos PVRTC1 (4bpp RGB), BC7 (modo 6 RGB), BC1-5, ETC1 e ETC2 é suportada. No futuro, há expectativa de suporte para o formato ASTC (RGB ou RGBA) e modos 4/5 RGBA para o formato BC7 e 4bpp RGBA para PVRTC1.

Google e Binomial liberaram o código do sistema de compressão de texturas Basis Universal

Texturas no formato basis ocupam de 6 a 8 vezes menos memória de vídeo e requerem a transferência de aproximadamente duas vezes menos dados do que as texturas típicas baseadas no formato JPEG e de 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 máxima. Ao armazenar a textura na memória de vídeo, as texturas JPEG e PNG utilizadas nos testes consumiram 16 MB de memória, enquanto para texturas no formato
Basis foram necessários 2 MB de memória no caso da trans codificação em BC1, PVRTC1 e ETC1, e 4 MB no caso da trans codificação em BC7.

Google e Binomial liberaram o código do sistema de compressão de texturas Basis Universal

O processo de conversão de aplicativos existentes para o Basis Universal é bastante simples. Basta recodificar as texturas ou imagens existentes para um novo formato utilizando a ferramenta 'basisu' fornecida pelo projeto, selecionando o nível de qualidade desejado. Em seguida, no aplicativo, antes do código de renderização, é necessário inicializar o recodificador basisu, que é responsável por traduzir o formato intermediário para um formato que o GPU atual suporta. Nesse processo, as imagens em toda a cadeia de processamento permanecem comprimidas, incluindo o carregamento em forma comprimida no GPU. Em vez de recodificar a imagem inteira antecipadamente, o GPU decodifica seletivamente apenas as partes necessárias da imagem.

É suportada a preservação de matrizes de texturas heterogêneas (cubemap), texturas volumétricas, matrizes de texturas, níveis mipmap, sequências de vídeo ou segmentos arbitrários de texturas em um único arquivo. Por exemplo, é possível empacotar uma série de imagens em um único arquivo para criar pequenos vídeos ou combinar várias texturas utilizando uma paleta comum para todas as imagens e deduplicação de padrões típicos de imagens. A implementação do codificador Basis Universal suporta codificação multithread usando OpenMP. O recodificador atualmente funciona apenas no modo de thread única.

Além disso disponível decodificador Basis Universal para navegadores, fornecido no formato WebAssembly, que pode ser utilizado em aplicativos web baseados em WebGL. No final, a Google pretende alcançar suporte para o Basis Universal em todos os principais navegadores e promovê-lo como um formato portátil de texturas para WebGL e a futura especificação. WebGPU, conceptualmente semelhante às APIs Vulkan, Metal e Direct3D 12.

A possibilidade de incorporar vídeos com seu processamento subsequente 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, onde centenas de pequenos vídeos podem ser exibidos simultaneamente com carga mínima no CPU. Antes da implementação das instruções SIMD em WebAssembly, um nível de desempenho semelhante não era alcançável com codecs tradicionais, portanto, vídeos baseados em texturas podem ser utilizados em áreas onde vídeos normais não são aplicáveis. Atualmente, um código com otimizações adicionais para vídeo está sendo preparado para publicação, incluindo a possibilidade de utilização Quadros I e quadros P com suporte a preenchimento adaptativo (CR).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster