domingo, 14 de março de 2021

Sob O Capô: Novo Sistema De Iluminação

 

As mudanças que estamos introduzindo com a atualização 1.40 para American Truck Simulator e Euro Truck Simulator 2 estão visíveis ao público há algum tempo, nas compilações do Open Beta que ainda estão em andamento. De longe, a mudança mais visível é o novo sistema de iluminação, que acabou sendo o maior retrabalho gráfico para nós em anos. Na postagem de hoje do blog, gostaríamos de revelar mais sobre o que passamos para fazer essa mudança acontecer; vamos dar uma olhada sob o capô mais uma vez.



  

Que haja luz! A abordagem de nosso mecanismo 3D para representar luz e cor em cenas - e nos buffers de renderização que acabam sendo exibidos na tela - foi estabelecida há mais de uma década. Era uma época em que o estado da arte era representar todos os valores RGB na faixa numérica de 0-255, para caber dentro de um byte de informação. É assim que todos os valores foram definidos, seja em um texel de um mapa de textura (a "pele" de um objeto 3D, uma árvore, um veículo ou camarote), ou na codificação da intensidade de uma fonte de luz (das luzes traseiras de um veículo para lâmpadas de rua, até a intensidade do sol), e combinando tudo isso no estágio de renderização em um pixel; era novamente a representação no buffer de exibição a ser mostrada na tela, com apenas 256 tons de cada cor de base.

Nos últimos anos, a explosão da memória disponível em aceleradores 3D, o progresso no poder computacional e a flexibilidade em linguagens de sombreamento para programar operações de placas 3D em fragmentos abriram o caminho para armazenar e calcular valores de cor e luz com precisão e alcance muito maiores - com números de ponto flutuante. Em vez de apenas camadas de operações de filtro de cor, que eram, essencialmente, todos os truques que tínhamos disponíveis na era de 8 bits por componente de cor, a mudança para o uso de números reais é uma verdadeira revolução em como um motor de jogo pode realmente representar fontes de luz em intervalos e proporções realistas. No mundo real, a diferença entre a intensidade de uma lâmpada e a luz do sol é de várias ordens de magnitude. Se formos capazes de armazenar os valores de intensidade das fontes de luz de forma adequada e, mais importante, realizar todas as operações de luz vs. superfície em seus intervalos de valores adequados, sem uma grande perda de precisão, podemos fazer um verdadeiro intervalo dinâmico alto (HDR) luz no pipeline de gráficos. Quando começamos a experimentar a nova técnica há cerca de 18 meses e vimos os primeiros resultados, não havia caminho de volta para nós, sabíamos que queríamos isso no motor.



O que há de novo? 

Tivemos que começar com as fontes de luz (e por um tempo, tivemos a esperança de que isso fosse suficiente). Cada fonte de luz agora é definida com um valor realista obtido a partir de medições do mundo real (fizemos uma tonelada de amostragem com um medidor de luz em várias configurações de luz do dia e clima) e tabelas de referência. Na realidade, assim como no mundo do jogo agora, dezenas de milhares de unidades lux agora iluminam as cenas diurnas, enquanto à noite o brilho do ambiente se aproxima de apenas algumas unidades lux. Basear todos os valores da fonte de luz na realidade nos dá muito mais confiança do que nos velhos tempos, quando uma nova luz cabia no sistema. Não é mais uma questão de se deveria ser 150 ou 170 sem nenhum significado real para os valores. Agora sabemos e temos mesas para escolher para um poste de luz ou uma luz de néon em um posto de gasolina. Em fórmulas de cálculo de luz, podemos agora ir com a atenuação de queda quadrática adequada, para que as luzes se comportem de maneira fisicamente correta. Com a maior precisão, podemos ir mais longe ao introduzir uma pequena variação aleatória na intensidade da luz para fontes de luz idênticas, para simular melhor a sensação de uma noite na rua, sem ter lâmpadas anormalmente idênticas.



Quando todos os cálculos de luz interna são feitos, temos que ajustar os valores resultantes para a tela emulando a exposição da câmera. Assim como uma câmera moderna em seu telefone celular, precisamos pegar todos os valores ricos e variedade de luz que entra - sol ou sombra, manhã cedo, meio-dia, crepúsculo ou noite profunda - e "espremer" ou "expandir" os valores no intervalo apropriado para a tela. Nosso sistema de emulação de exposição tem um impacto crítico na aparência final do jogo - é em parte física, mas também em parte sobre um sentimento artístico subjetivo. Ela deve ser ajustada dinamicamente não apenas com base na luz de entrada do mundo do jogo, mas também deve levar em consideração a diferença entre a luz dentro e fora da cabine de um veículo, para permitir que os instrumentos do painel sejam legíveis. O olho humano é uma criação incrível, capaz de se ajustar e se adaptar a uma vasta gama de intensidades de luz conforme o foco alterna entre os objetos. Tivemos que usar muita matemática inteligente ao analisar o histograma de luz para cada quadro e entre os quadros para ajustar todos esses valores na gama dinâmica e gama de cores inevitavelmente limitada da tela, a fim de tornar tudo o que é retratado crível e discernível. Algumas melhorias foram uma cereja no topo da página, como o fato de que com a gama interna de buffers de ponto flutuante de mapas de cubo, podemos ter reflexos muito mais brilhantes de superfícies brilhantes, como corpos d'água, vidro ou pintura de carro. Nós seguimos esse caminho de desenvolvimento em uma pequena equipe felizmente até perceber que, embora os resultados intermediários fossem promissores, não seríamos capazes de fazer isso sem reequilibrar TODOS os materiais / texturas existentes em todos os objetos do jogo. Quando um raio de luz é lançado na superfície de qualquer objeto, o que é refletido ou refratado depende não apenas das propriedades da luz incidente, mas em grande parte das propriedades da superfície do objeto. Ao longo dos muitos anos de desenvolvimento, acumulamos dezenas de milhares de texturas, algumas de fontes fotográficas em vários ambientes, algumas pintadas à mão, outras através do processo de geração procedural em várias ferramentas inteligentes. Com o passar dos anos, a autoria dessas fontes foi sujeita a várias escolas de pensamento, ou diferentes canais de criação, mas o sistema de "velha luz" foi mantido coeso pela proverbial fita adesiva e foi em qualquer caso impreciso o suficiente para revelar certas desequilíbrios que estavam presentes. O novo sistema de emulação de exposição é muito mais sensível e simplesmente requer valores de albedo de brilho fisicamente corretos. Nossa superfície de concreto não pode mais ser uma espécie de cinza, e uma árvore não pode ser apenas bonita e verde. E foi então que a grande maioria de nossa equipe de arte teve que se envolver em uma grande reforma.


O que teve que ser mudado?

Depois que nossa pequena equipe interdisciplinar pioneira implementou todo o código necessário e as mudanças de sombreador de GPU, o que levou muitos meses de experimentação, tivemos que envolver muito mais pessoas. Primeiro, tivemos que reajustar todas as fontes de luz do mundo e quaisquer luzes de veículos para a nova lógica. Em alguns casos, foi uma conversão numérica relativamente trivial em algum lugar de uma tabela. Em outros, pode ter exigido que um designer de mapa revisitasse um local específico para fazer o ajuste manual. Em muitos casos, isso significava que um objeto do jogo, como uma fábrica inteira ou um pátio de entrega com fontes de luz predefinidas, precisava ser reaberto, ajustado e reexportado em uma ferramenta 3D como o Maya. Estamos falando de milhares e milhares de retoques, em alguns casos envolvendo não apenas algumas dezenas de luzes definidoras de "números", mas também grandes mudanças nos mapas de luz dos objetos, onde sombras falsas e efeitos de luz foram "embutidos" para uma aparência melhor no antigo sistema de luz. Finalmente, por algumas semanas, a maioria de todas as nossas equipes teve que parar de trabalhar em qualquer outra coisa relacionada aos nossos projetos futuros e revisar todos os objetos do jogo, vegetação, veículos e efeitos; reequilibrando as coisas, repetidamente, para sincronizá-las em uma tabela de referência de albedo compartilhada e combinada Tivemos que revisitar os fundamentos de muitos subsistemas, principalmente as luzes e lâmpadas dos veículos, fazendo várias iterações e fazendo ajustes para que parecessem bem em várias configurações de luz do dia. Temos um novo conjunto de camarotes em uma resolução mais alta e uma variedade de clima um pouco mais rica também. No final das contas, nenhuma pedra foi deixada sobre pedra, pois tivemos que avaliar e ajustar cada elemento dos jogos.



O que tudo isso significa?

O novo sistema de luz e o início de nosso novo modelo de luz física é um passo crítico em direção a um modelo físico completo e melhor de todo o mundo em nossos jogos. Ainda não chegamos lá com a verdadeira renderização baseada fisicamente, mas a atualização 1.40 representa um grande passo na direção certa. Limpar a arte antiga e basear todas as intensidades de luz e operações na física fundamental torna o trabalho sistêmico futuro nesta área finalmente possível. Como acontece com muitas coisas no desenvolvimento de longo prazo, embora esta etapa seja uma pequena revolução, é ao mesmo tempo apenas um marco para uma visão maior.

 


Do ponto de vista dos artistas gráficos (mas isso se aplica aos autores de mod também!), Estamos introduzindo um novo conceito de criar e manter toda a arte do jogo "sob controle" e em equilíbrio com o resto da arte. Materiais baseados em fotos, frequentemente usados ​​como fontes de arte no jogo, agora precisam passar por um processo de calibração antes de serem aplicáveis, caso contrário, pode-se acabar com uma superfície muito escura ou muito clara, afetando a exposição e o percepção do cenário geral. Freqüentemente, vale a pena explorar métodos alternativos de criação de material, como a geração de procedimentos de alta resolução em ferramentas como o Substance Designer. Mais confiança é colocada no sistema de renderização do motor agora; em vez de fingir e transformar sombras sutis e efeitos de luz em modelos. Entre new light e SSAO, nosso código de shader agora desempenha um papel maior na criação da aparência final; isso resulta em um pouco menos de responsabilidade, controle e possivelmente trabalho do artista. Isso pode ser bom ou ruim, dependendo do que se está tentando alcançar em cada caso particular.



Como acontece com cada grande mudança, havia uma tonelada de problemas iniciais, muitos becos sem saída para reverter, e a quantidade de esforço que passamos excedeu em muito as expectativas que tínhamos um ano atrás. Ainda temos um pouco de Open Beta pela frente para corrigir as últimas rugas. Mas, mesmo agora, estamos muito confiantes de que as mudanças valem todo o trabalho duro. Espere até dirigir seu caminhão nas primeiras horas da manhã ao longo da costa da Itália ou em um agradável final de tarde na Suécia, em uma garoa no estado de Washington, durante o meio-dia escaldante na Espanha ou parando em uma parada de caminhões bem iluminada noite adentro. Durante todo o processo de mudanças, tentamos ao máximo não causar nenhum grande aumento na carga do CPU ou GPU. Alguns dos novos efeitos têm um custo de desempenho um pouco maior, mas, no geral, acreditamos que as mudanças são muito bem equilibradas,ou permitir compensações sensatas nas opções de jogo, para manter o desempenho aceitável. Definitivamente, não queremos perder jogadores e fãs que jogam nossos jogos sem o hardware mais recente, pressionando muito os efeitos gráficos. Estamos ansiosos para trazer mais melhorias e novos recursos, então segure seus volantes!



Mais fã de changelogs? Vamos olhar para:

As principais mudanças internas

  • A cena é iluminada com intensidades da vida real (iluminação: dezenas de milhares de lux durante o dia, dezenas de lux à noite) 
    • Para colocar as relações de luz em jogo - o sol nascente dominando as luzes da rua e os faróis dos caminhões, etc. Isso significa que tivemos que ajustar todas as fontes de luz e também reajustar todos os materiais emissivos no jogo.
  • Temos uma nova função de mapeamento de exibição para melhor controle artístico (exposição, contraste, dedo do pé, ombro) 
    • Precisávamos colocar essas intensidades da vida real na tela do computador de maneira semelhante à que funciona a exposição de uma câmera. 
  • Histograma aprimorado e mais sensível para seleção de exposição
    • Isso ocorre porque a exposição real é selecionada de forma diferente em cada cena, e isso também varia com os diferentes níveis de luz e o tipo de clima atual. 
  • A fonte de luz (lâmpadas de rua, luzes de veículos) muda. 
    • Mudamos as fontes de luz para uma atenuação mais física ('queda inversa do quadrado'). 
    • Estamos mudando para uma configuração baseada em unidade física para reduzir as suposições. 
Mas também muitos ajustes visuais menores 
  • Reflexo reluzível 
    • Os reflexos nas vitrines e superfícies lisas combinam melhor com a hora do dia e o clima 
  • Melhor comportamento de reflexão 
    • Em pinturas de caminhões, vitrines e vidros em geral 
  • Sombra do horizonte do sol
    • Visível quando o sol nasce ou se põe 
E um zilhão de outros pequenos ajustes, correções e mudanças.

Como você pode imaginar agora - tudo isso foi uma tremenda quantidade de trabalho para nossa equipe. A centelha brilhante inicial (trocadilho intencional) que tornou tudo isso possível veio de uma pequena equipe de programadores e um artista de efeitos visuais (foto abaixo). Eles continuaram hackeando, iterando e traçando planos até que toda a equipe tivesse tudo " fácil ", e tudo o que faltava fazer era apenas adicionar muitos anos de horas de trabalho adicionais para ajustar tudo à nova lógica.



O novo sistema de luz, assim como a implementação do suporte FMOD para a parte SFX de nossos jogos, ainda está em desenvolvimento, polimento e ajuste. E ainda temos muito trabalho pela frente. Neste momento, sentimos que já está mais ou menos em uma forma apresentável, e você também pode experimentar se decidir experimentá-lo em uma versão beta aberta agora no Steam.

 


Então, por favor, se você gostaria de nos ajudar - coloque seus óculos de sol favoritos e nos ajude a pegar o nascer do sol perfeito! Estamos ansiosos para ler seus pensamentos e opiniões sobre o novo sistema de iluminação. Muito obrigado!

Nenhum comentário:

Postar um comentário