2 pontos por GN⁺ 2024-03-01 | 1 comentários | Compartilhar no WhatsApp

Como usar LUTs em videogames e como você também pode usar

  • Em videogames, LUTs (Look-up Tables) são usadas para aplicar técnicas criativas.
  • Explica como manipular dados de vídeo em tempo real por meio de um exemplo com WebGL.
  • O usuário pode praticar usando seu próprio vídeo ou webcam.

Configuração

  • Usa como ponto de partida um vídeo em preto e branco capturado com uma câmera termográfica.
  • Envia o vídeo para a GPU via WebGL e o exibe igual ao original usando shaders.

Colorização

  • Aplica cor ao vídeo usando um Fragment Shader, que determina a cor de cada pixel.
  • Explica como manipular cores com um exemplo simples aplicando a cor laranja.

Custo de desempenho: zero

  • O impacto de desempenho da colorização é praticamente inexistente e, graças ao latency hiding da GPU, pode ser considerado desprezível.

Uso de colorização pela Valve Software

  • No jogo Left 4 Dead da Valve Software, a colorização é aplicada a modelos de veículos para gerar diversas variações.

LUT - simples, mas poderosa

  • Explica como usar LUTs para definir e transformar faixas de cor.

A modesta LUT 1D

  • Uma LUT 1D é um array de cores usado para converter vídeo em escala de cinza para RGB.
  • Demonstra a conversão de cores usando LUTs 1D de vários tamanhos.

Muitas cores

  • Todos os mapas de cores compatíveis com matplotlib são fornecidos como LUTs 1D.
  • Recomenda-se usar mapas de cores Perceptually Uniform.

Ainda não há custo de desempenho?

  • No caso de LUTs 1D pequenas, não há grande impacto no desempenho, e o cache da GPU é usado de forma eficiente.

Variedade para zumbis

  • Em Left 4 Dead 2, LUTs são usadas para criar variações de cores nos zumbis.

Pré-cálculo de computações

  • LUTs 1D podem ser usadas para armazenar em cache cálculos caros e, por exemplo, aplicar correção de gama rapidamente.

A poderosa LUT 3D

  • Uma LUT 3D remapeia cores representando todo o espaço RGB como um único cubo.

Configuração

  • Explica o processamento com LUT 3D usando um vídeo com perfil log gravado em uma Panasonic GH6.

Ajuste simples

  • Descreve o processo de aplicar correção de cor com DaVinci Resolve e exportar novamente a LUT.

Uso de LUT 3D em Left 4 Dead

  • Um fluxo de trabalho amplamente conhecido na indústria de jogos, em que ferramentas externas são usadas para estilizar as cores do jogo.

Aventura avançada

  • Explica como exportar transformações complexas de cor como LUT usando ferramentas de color grading como DaVinci Resolve.

Outros usos

  • Apresenta outros casos de uso de LUTs, como as LUTs usadas no porte de Tomb Raider para Game Boy Advanced.

Opinião do GN⁺

  • LUTs são uma ferramenta poderosa para manipulação de cores e otimização em videogames e programação gráfica. Essa técnica pode oferecer diversos efeitos visuais em renderização em tempo real sem perda de desempenho, sendo útil tanto para desenvolvedores quanto para artistas.
  • Ao usar LUTs, é preciso considerar a precisão das cores e a representação visual dos dados. Em especial, é importante entender a relevância de mapas de cores Perceptually Uniform, inclusive sob a perspectiva de daltonismo.
  • Essa técnica pode ser aplicada em diversas áreas, como correção de cor, estilização visual e visualização de dados. Por exemplo, técnicas semelhantes às LUTs usadas para color grading na indústria cinematográfica podem ser aplicadas ao desenvolvimento de jogos.
  • O tamanho e a precisão das LUTs podem variar conforme o objetivo de uso e a plataforma, e é necessário entender isso. Por exemplo, na indústria do cinema, LUTs de 33³px são padrão, mas em jogos ou outras aplicações gráficas podem ser necessários tamanhos diferentes.
  • Ao usar essa técnica, é importante encontrar um equilíbrio entre representação precisa das cores e otimização de desempenho. Para usar LUTs de forma eficaz, é necessário um entendimento profundo de teoria das cores e programação gráfica.

1 comentários

 
GN⁺ 2024-03-01
Comentários do Hacker News
  • Explicação de como usar tabelas de consulta (LUT) para implementar efeitos

    • Foi usada uma grande tabela de consulta para armazenar os detalhes da iluminação circular ao redor do jogador, além de uma segunda tabela de consulta para aleatorizar a ordem das linhas de fundo.
    • Embora só seja possível atualizar 1/20 da tela, a ordem aleatória permite criar um efeito de bordas suaves e ocultar a varredura raster.
    • As partes lentas demais para calcular em tempo real são tratadas com tabelas de consulta, evitando que as linhas deixem de ser atualizadas.
  • Relato de experiência usando tabelas de consulta para um efeito de túnel com textura

    • É usada uma tabela de consulta que informa, para cada pixel na tela, o ângulo e a distância em relação ao centro.
    • Parece que você está se movendo por um túnel com geometria 3D, mas o custo é baixo o bastante para ser implementado até no Pico.
    • A pessoa achava que o jogo 'Stardust' usava esse efeito, mas na verdade ele usa uma animação repetida de 6 quadros como plano de fundo.
  • Link de vídeo mostrando como o jogo 'The Legend of Zelda: Wind Waker' usou tabelas de consulta para criar seu visual característico

    • 'Breath of the Wild' e 'Tears of the Kingdom' também usam a mesma técnica.
  • Aviso de que o autor do texto sobre tabelas de consulta está pronto para responder perguntas.

  • Explicação sobre a importância das tabelas de consulta no desenvolvimento de jogos retrô

    • No passado, a memória era rápida, mas os processadores eram lentos, então colocava-se o máximo possível de cálculos em tabelas de consulta.
    • Quanto melhor você aproveitasse as tabelas de consulta, mais chamativo podia ser o jogo.
  • Relato sobre o jogo 'Bobl', da comunidade homebrew de NES, que implementou efeitos físicos impressionantes usando tabelas de consulta

    • Efeitos que parecem muito mais complexos do que o sistema conseguiria calcular em tempo real foram alcançados com tabelas de consulta.
  • Compartilhamento de um episódio de podcast sobre como o port de 'Doom' para SNES calculava trigonometria usando tabelas de consulta

    • O SNES não tinha processador gráfico, então os cálculos eram feitos com tabelas de consulta.
  • Reclamação sobre pessoas com conhecimento de programação dinâmica confundirem caching com memoization

    • Memoization é estado compartilhado local; caching é estado compartilhado global, e cada um tem problemas diferentes.
    • Caching é antecipar algo que poderá ser necessário no futuro, enquanto memoization é saber que algo será necessário imediatamente.
    • Tabulação é encontrar e resolver previamente subproblemas comuns, e uma tabela de consulta é uma tabulação de tamanho fixo.
  • Compartilhamento de informações sobre o app para Mac 'Lattice', que lida com tabelas de consulta

  • Lista de exemplos variados de efeitos usando tabelas de consulta

    • Espalhamento atmosférico, mudança de matiz de sprites, visão noturna, câmera térmica, efeito de feed de vídeo em preto e branco, efeito de glitch, sombreamento de heightmap, elementos de ponto alfa na pluma de exaustão de espaçonaves, mapa de calor de permanência do mouse de visitantes em um site, efeito de cristal, colorização de pós-processamento em espaço de cor bruto etc.
    • Tabelas de consulta são uma forma de visualizar um array de valores conhecidos e são muito úteis.