A Nvidia apresentou esta semana seu novo método de compactação de textura que fornece resolução quatro vezes maior do que os métodos tradicionais de Block Truncation Coding (BTC, BC), ao mesmo tempo em que possui requisitos de armazenamento semelhantes. O conceito central da abordagem proposta é compactar várias texturas de material e suas cadeias de mipmap coletivamente e, em seguida, descompactá-las usando uma rede neural treinada para um padrão específico que ela descompacta. Em teoria, o método pode até impactar futuras arquiteturas de GPU. No entanto, por enquanto o método tem limitações.
Novos requisitos
Avanços recentes na renderização em tempo real para videogames abordaram a qualidade visual dos filmes devido ao uso de técnicas como sombreamento baseado em física para modelagem fotorrealista de materiais, traçado de raios, traçado de caminho e redução de ruído para iluminação global precisa. Enquanto isso, as técnicas de texturização realmente não avançaram em um ritmo semelhante, principalmente porque os métodos de compactação de textura permaneceram essencialmente os mesmos do final dos anos 90, e é por isso que, em alguns casos, muitos objetos parecem borrados nas proximidades.
A razão para isso é que as GPUs ainda dependem de métodos de compactação de textura baseados em blocos. Essas técnicas têm implementações de hardware muito eficientes (já que o hardware de função fixa para suportá-las evoluiu por mais de duas décadas), acesso aleatório, localidade de dados e qualidade quase sem perdas. No entanto, eles são projetados para taxas de compressão moderadas entre 4x e 8x e são limitados a um máximo de 4 canais. Os renderizadores em tempo real modernos geralmente exigem mais propriedades de material, necessitando de várias texturas.
Método da Nvidia
É aqui que a Nvidia Compressão neural de acesso aleatório de texturas de materiais (abre em nova aba) (NTC) entra em jogo. A tecnologia da Nvidia permite dois níveis adicionais de detalhes (16x mais texels, portanto, resolução quatro vezes maior), mantendo requisitos de armazenamento semelhantes aos métodos tradicionais de compactação de textura. Isso significa que texturas compactadas com otimização por material com resoluções de até 8192 x 8192 (8K) agora são viáveis.
Para fazer isso, o NTC explora as redundâncias espacialmente, em níveis de mipmap e em diferentes canais de material. Isso garante que os detalhes da textura sejam preservados quando os visualizadores estiverem próximos a um objeto, algo que os métodos modernos não podem permitir.
A Nvidia afirma que as texturas NTC são descompactadas usando hardware de multiplicação de matriz, como núcleos tensores operando de maneira cooperativa SIMD, o que significa que a nova tecnologia não requer nenhum hardware especial e pode ser usada em praticamente todas as GPUs modernas da Nvidia. Mas talvez a maior preocupação seja que cada textura requer sua própria rede neural otimizada para descompactar, o que coloca uma carga adicional nos desenvolvedores de jogos.
A Nvidia diz que a qualidade da textura resultante nessas taxas de bits agressivamente baixas é comparável ou melhor do que os padrões recentes de compactação de imagem, como AVIF e JPEG XL, que não foram projetados para descompactação em tempo real com acesso aleatório.
Vantagens e Desvantagens Práticas
De fato, as imagens demonstradas pela Nvidia mostram claramente que o NTC é melhor do que as tecnologias tradicionais baseadas em Block Coding. No entanto, a Nvidia admite que seu método é mais lento que os métodos tradicionais (uma GPU levou 1,15 ms para renderizar uma imagem 4K com texturas NTC e 0,49 ms para renderizar uma imagem 4K com texturas BC), mas fornece 16x mais texels, embora com filtragem estocástica .
Embora o NTC consuma mais recursos do que a filtragem de textura acelerada por hardware convencional, os resultados mostram que ele oferece alto desempenho e é adequado para renderização em tempo real. Além disso, em cenas complexas usando um renderizador completo, o custo do NTC pode ser parcialmente compensado pela execução simultânea de outras tarefas (por exemplo, traçado de raios) devido à capacidade da GPU de ocultar a latência.
Enquanto isso, a renderização com NTC pode ser acelerada por novas arquiteturas de hardware, maior número de unidades dedicadas de multiplicação de matrizes que podem ser usadas, tamanhos de cache aumentados e uso de registro. Na verdade, algumas das otimizações podem ser feitas no nível programável.
A Nvidia também admite que o NTC não é um método completamente sem perdas de compactação de textura e produz degradação visual em taxas de bits baixas e tem algumas limitações, como sensibilidade à correlação de canal, requisitos de resolução uniforme e benefícios limitados em distâncias de câmera maiores. Além disso, as vantagens são proporcionais à contagem de canais e podem não ser tão significativas para contagens de canais mais baixas. Além disso, como o NTC é otimizado para texturas de materiais e sempre descompacta todos os canais de materiais, isso o torna potencialmente inadequado para uso em diferentes contextos de renderização.
Embora a vantagem do NTC seja que ele não usa hardware de filtragem de textura de função fixa para produzir seus resultados superiores, essa também é sua principal desvantagem. O custo da filtragem de textura é computacionalmente caro, e é por isso que, por enquanto, a filtragem anisotrópica com NTC não é viável para renderização em tempo real. Enquanto isso, a filtragem estocástica pode introduzir cintilação.
Mas, apesar das limitações, a compressão do NTC de vários canais e níveis de mipmap juntos produz um resultado que excede os padrões da indústria. Os pesquisadores da Nvidia acreditam que sua abordagem está abrindo caminho para visuais de qualidade cinematográfica em renderização em tempo real e é prática para aplicativos gráficos com restrição de memória. No entanto, apresenta uma sobrecarga de tempo modesta em comparação com algoritmos BTC simples, o que afeta o desempenho.