Lumen leva iluminação global em tempo real ao Capítulo 4 do Fortnite Battle Royale

Daniel Wright, engenheiro senior, Imagens Gráficas, e Krzysztof Narkowicz, diretor técnico, Imagens Gráficas |
26 de janeiro de 2023
Olá, somos Daniel Wright e Krzysztof Narkowicz, engenheiros trabalhando no Lumen. Lumen é o sistema de reflexos e iluminação global totalmente dinâmico da Unreal Engine 5, que já vem pronto para uso. Nesta publicação do blog, vamos mostrar como o Lumen funciona no Capítulo 4 do Fortnite Battle Royale, e destacar as melhorias que a equipe fez no Lumen para o Capítulo 4 (que já estão disponíveis para todos os desenvolvedores na Unreal Engine 5.1). Também escrevemos um blog técnico apresentando o Lumen, cuja leitura é altamente recomendada para ter uma visão geral do sistema.

O Capítulo 4 do Fortnite Battle Royale vem com o Lumen habilitado no Playstation 5, Xbox Series X e Xbox Series S. O Lumen é habilitado para PC e jogos em nuvem sempre que a configuração de qualidade da “Iluminação Global” estiver definida como “Alta” ou “Épica”, com opção de usar traçado de raios de hardware para mais qualidade ainda, desde que suportado pela placa de vídeo.
 

Lumen no Capítulo 4 do Fortnite Battle Royale

Antes do Capítulo 4, o Fortnite estava limitado às tecnologias de iluminação dinâmica da Unreal Engine 4 em consoles de última geração. A Oclusão de Ambiente da Profundidade de Campo era o único método usado para a iluminação ambiente, tornando os interiores frios conforme a luz natural azul penetra nos prédios. No Capítulo 4, o Lumen calcula uma iluminação global de alta qualidade, acrescentando rebatidas de luz solar e sombras indiretas detalhadas.
Oclusão de Ambiente da Profundidade de Campo vs. Iluminação Global do Lumen. A Exposição Automática é habilitada com a IG do Lumen.
Áreas internas ficam consideravelmente mais escuras do que áreas externas com a iluminação global precisa, já que a luz natural fica bloqueada corretamente e, para isso, a Exposição Automática precisa estar habilitada.

Em versões anteriores do Fortnite, os reflexos em consoles de última geração ficavam limitados aos Reflexos do Espaço de Tela. Esse efeito só consegue refletir o que está na tela, não sendo suficiente para impedir que a luz natural vaze quando está dentro de um prédio. Os Reflexos do Espaço de Tela também só produzem bons resultados em superfícies espelhadas, portanto, faltavam reflexos opacos. Os artistas do Fortnite têm contornado essas limitações ao evitar quase que totalmente o efeito especular sobre materiais usados em áreas internas. Os reflexos do Lumen produzem reflexos precisos de traçado de raios em superfícies brilhantes, renderizando metais e materiais lisos de forma correta, mesmo quando estão em áreas internas. Os artistas agora conseguem ver a resposta completa dos materiais à iluminação em tempo real.
Reflexos do Espaço de Tela vs. Reflexos do Lumen no gelo.
Os reflexos do Lumen também são prevalentes na água, onde são muito mais nítidos do que os Reflexos do Espaço de Tela, e não limitados a refletir o que está visível na tela.
Reflexos do Espaço de Tela vs. Reflexos do Lumen na água.
O Fortnite Battle Royale possui muitos eventos do jogo que precisam de iluminação dinâmica — a hora do dia muda, os jogadores podem montar e destruir estruturas, abrir portas e por aí vai. O Lumen é totalmente dinâmico e reage a essas mudanças em tempo real. O Lumen amortiza os cálculos em múltiplos quadros para reduzir custos, mas com a alta taxa de quadros (FPS) que o Fortnite tem como alvo, os artefatos de acumulação temporal são minimizados.

Jornada para o Capítulo 4

Conforme fomos terminando o trabalho no lançamento da Unreal Engine 5.0, nosso foco passou a ser o Capítulo 4 do Fortnite Battle Royale e seus desafios. O Fortnite chega ao mínimo de 60 FPS em consoles, que é somente 16,67 milissegundos por quadro, ou até menos, com espaço para resolução dinâmica e custos de jogabilidade durante o combate pesado. Considerando todas as funcionalidades de renderização que queríamos, só teríamos 4 milissegundos para iluminação global dinâmica e reflexos combinados. Esse é um orçamento extremamente baixo, pois é comum em jogos Triplo-A gastar 4 milissegundos somente em reflexos de traçado de raios. Tínhamos que tornar toda otimização possível e, ao mesmo tempo, não comprometer a qualidade da iluminação de última geração.

A primeira coisa que tivemos que decidir foi qual método de traçado de raios usar no Capítulo 4 do Fortnite Battle Royale. Já tínhamos lançado The Matrix Awakens: an Unreal Engine 5 Experience com Lumen usando traçado de raios de hardware em consoles, tendo realizado otimizações significativas, mas essa demo técnica teve um orçamento de 30 FPS. Após alguns testes iniciais, determinamos que o traçado de raios de software do Lumen precisava atingir o orçamento de 60 FPS devido aos custos reduzidos de traçado. Mas a natureza aproximada do traçado de raios de software apresentou vários desafios, principalmente em relação à qualidade da folhagem e aos reflexos na água.

O Capítulo 4 do Fortnite Battle Royale tem florestas e colinas cobertas de grama. Nenhum dos projetos anteriores que incluíam o Lumen tinha tanta folhagem, então ainda não havíamos tido a oportunidade de trabalhar nisso ainda. Um dos maiores problemas foi a oclusão excessiva na folhagem.

O traçado de raios de software do Lumen usa uma Profundidade de Campo Sinalizada Global para representar as superfícies da cena. Profundidades de Campo Sinalizadas só podem representar uma superfície opaca, e a marcha de raios fornece um resultado binário: acerto ou erro. Isso causa um excesso de oclusão grave em malhas de folhagem, modeladas como agregadas. Desenvolvemos uma nova forma de cruzar Profundidades de Campo Sinalizadas. Cada etapa da marcha de raios apresenta uma opção de cruzamento. Isso se tornou uma técnica estocástica e nos permitiu modelar a geometria agregada com mais precisão e, ao mesmo tempo, manter a representação da Profundidade de Campo Sinalizada que funciona bem no resto da cena.
A oclusão excessiva na folhagem foi resolvida com cruzamentos de profundidade de campo estocásticos semitransparentes.
Alguns problemas foram mais fáceis de resolver. O Lumen usa traçados de tela para acrescentar detalhes onde o traçado de raios de software deixa a desejar, mas a grama é tão detalhada que esses traçados de tela apresentaram serrilhado considerável. Uma solução simples para pular ocorrências do traçado de tela na folhagem foi suficiente para resolver os artefatos.
O ruído extremo dos traçados de tela na grama foi resolvido pulando ocorrências na folhagem.
Outro grande problema com o traçado de raios de software foi a baixa resolução da iluminação armazenada em superfícies vistas em reflexos. O Lumen mantém um Cache de Superfícies com resolução bastante alta para cada malha, fornecendo iluminação para ocorrências de raios de forma eficiente, mas estávamos mesclando tudo em uma representação voxelizada que ficou muito mais desfocada. Desenvolvemos uma estrutura de pesquisa inversa que nos permitiu fazer a amostra do Cache de Superfícies por malha diretamente nas ocorrências de raios, fornecendo uma iluminação emissiva muito mais precisa e reflexos na água mais nítidos.
Reflexos mais nítidos com traçado de raios de software quando há amostra de raios diretamente no Cache de Superfícies do Lumen (traçados de tela desabilitados para visualização).
No que se refere a reflexos na água, colocamos artefatos de faixas verticais sempre que os traçados de tela do Lumen eram interrompidos por um objeto em primeiro plano. Isso era um fator de distração imenso para um personagem em movimento. Os traçados de tela do Lumen não sabem a espessura de um objeto, portanto, temos que mudar para o traçado de raios de software para o resto do raio, o que geralmente produz uma cor diferente. Isso foi uma regressão até mesmo sobre os Reflexos do Espaço de Tela, que usava um método de cruzar raios mais barato, mas menos preciso; porém, permitia continuar por trás de objetos em primeiro plano. Conseguimos resolver as faixas verticais fazendo uma amostragem da cor da tela até para ocorrências de traçado de raios de software, reduzindo a disparidade. Isso foi decidido no último minuto, então não fez parte do lançamento da UE 5.1.
Faixas verticais causadas pela disparidade entre traçados de tela e traçados de raios de software minimizada com a amostragem da cor da tela na ocorrência do raio.
Outras melhorias na qualidade vieram de surpresa. A IG do Lumen diminui bastante a resolução para se adequar a um orçamento de 4 milissegundos. Isso faz com que o ruído seja mais perceptível, causando uma distração na experiência do jogo. Conseguimos reduzir muito o ruído integrando a técnica Spatiotemporal Blue Noise da NVIDIA, que pré-otimiza os padrões de ruído para cancelar rapidamente quando acumulado em vários quadros. Isso proporcionou uma iluminação indireta bem mais limpa, sem precisar traçar mais raios.
A iluminação natural entrando pela porta tem menos ruído com Spatiotemporal Blue Noise.

Controles de direção de arte

Os artistas já possuem algumas ferramentas para fazer a direção de arte da iluminação indireta, como a “Intensidade da Iluminação Indireta” na luz direcional. Os artistas do Fortnite usaram o valor de 2.0 para ampliar a iluminação rebatida e dar ao jogo uma sensação mais agradável. No entanto, as áreas internas apresentaram um problema: elas ficavam extremamente escuras com a iluminação global precisa quando não havia janelas ou fontes de luz por perto. Isso causava enormes oscilações na exposição ao trocar entre áreas internas e externas. Os artistas poderiam resolver a questão colocando mais fontes de luz, mas isso aumentaria os custos de sombreamento.

Desenvolvemos novos controles na iluminação indireta do Lumen: “Skylight Leaking” e “Diffuse Color Boost” no volume de pós-processamento. “Skylight Leaking” pode ser usado para adicionar um pouco de iluminação ambiente em áreas internas, limitando a faixa de exposição, enquanto “Diffuse Color Boost” pode ser usado para ampliar a quantidade de iluminação indireta com vários rebates. Nenhuma dessas opções acrescenta custos significativos à GPU, ao contrário de acrescentar luzes. Para fins de jogabilidade, os artistas do Fortnite acabaram usando “Skylight Leaking” para impedir que áreas internas ficassem muito escuras.
“Skylight leaking” usado para impedir que as áreas fiquem totalmente escuras.
A iluminação global precisa cria uma iluminação de alto contraste onde nenhum valor de exposição individual funciona bem. As áreas brilhantes da imagem, principalmente o céu e qualquer superfície iluminada pelo sol, ficam estouradas, enquanto áreas escuras ficam com subexposição. A Unreal Engine 5.0 introduziu uma nova funcionalidade chamada “Exposição Local”. Com ela, os artistas do Fortnite preservaram detalhes de destaques e sombras em condições desafiadoras de iluminação de alta faixa dinâmica.
Detalhes de destaques e sombras preservados com “Exposição Local”, uma nova funcionalidade na UE 5.0. “Exposição Local” deve estar sempre configurada ao usar o Lumen!

Desempenho

O Lumen depende bastante do efeito Temporal Upsampling do sistema Super-Resolução Temporal (TSR) da Unreal Engine 5 para obter resolução 4K. Renderizar em 1080p internamente com o TSR proporciona a melhor qualidade na imagem final, em vez de executar o Lumen em 4K de forma nativa com configurações de qualidade consideravelmente inferior.

O Lumen pode ser configurado para chegar a 60 FPS em consoles de última geração definindo os grupos de qualidade da “Iluminação Global” e do “Reflexo” como “Alta” no perfil do dispositivo da plataforma:

; Definir qualidade de IG e reflexos do Lumen como “Alta” para chegar a 60 FPS
+CVars=sg.GlobalIlluminationQuality=2
+CVars=sg.ReflectionQuality=2

A IG do Lumen é diminuída por redução de resolução mais ainda do que o normal, reduzindo a 1/16 de um raio por pixel. A iluminação indireta fica menos temporalmente estável ao traçar tão poucos raios e o ruído se torna mais perceptível em áreas escuras. “Skylight Leaking” é uma ferramenta útil para ocultar esse ruído maior.
Lumen com configurações de 60 FPS vs. Lumen com configurações de 30 FPS. O Lumen captura melhor os detalhes e é muito mais temporalmente estável com configuração de 30 FPS, o que não aparece em uma comparação de captura de tela.
Fizemos várias pequenas otimizações na IG do Lumen enquanto trabalhávamos no Capítulo 4 do Fortnite Battle Royale, mas a maior aceleração veio com a mudança do método completo para o pipeline de computação assíncrona, economizando 0,8 milissegundos. O Lumen emite muitos cálculos para diferentes algoritmos, entre os quais a GPU fica inativa por um curto período, mas eles acrescentam.

Além disso, emissões do traçado de raios tendem a ter longas caudas, em que poucos raios levam muito mais tempo para concluir do que o resto. Mover esse trabalho para o pipeline de computação assíncrona permite que a GPU preencha as lacunas com o resto do conteúdo do quadro, fazendo melhor uso da capacidade de processamento da GPU. O Lumen assíncrono vem habilitado por padrão em consoles na UE 5.2, pois foram necessárias algumas correções que não foram feitas a tempo na UE 5.1.
Agora, o trabalho do Lumen está no pipeline de computação assíncrona, fazendo melhor uso da capacidade computacional da GPU.
Os reflexos do Lumen diminuíram para o orçamento de 60 FPS ao renderizar com metade da resolução, exceto em água. A IG do Lumen já produz reflexos opacos, mas os reflexos do Lumen precisam traçar raios adicionais para reflexos nítidos. O custo dos reflexos pode variar muito dependendo de quanto da tela tem materiais suaves o suficiente para precisar de raios de reflexo. Uma das maiores otimizações (1 a 2 milissegundos) foi obtida pulando raios de reflexos em folhagem com mais frequência, o que já tem custos maiores no “Base Pass” e “Shadow Depths” e não causou perda perceptível na qualidade.

O Xbox Series S apresenta um desafio especial. Ele tem uma GPU de quatro teraflops, ao contrário da GPU de doze teraflops do Xbox Series X, portanto, seria necessário ter uma resolução interna mais baixa, mas ainda não foi suficiente. Não queríamos voltar ao método Oclusão de Ambiente da Profundidade de Campo, que altera o visual de forma significativa. Em vez disso, desenvolvemos um modo em que a IG do Lumen fornece reflexos opacos, e os Reflexos do Espaço de Tela são usados para reflexos espelhados. Isso economiza cerca de um milissegundo ao desabilitar os reflexos do Lumen, mas fica ótimo comparado com o que pode ser alcançado usando somente Reflexos do Espaço de Tela.
A iluminação global do Lumen produz reflexos opacos mesmo quando os reflexos do Lumen estão desabilitados para escalabilidade.
No fim das contas, adequamos a IG e os reflexos do Lumen ao orçamento de custo médio de 4 milissegundos para 60 FPS em consoles de última geração. O Capítulo 4 do Fortnite Battle Royale chega a uma resolução interna média de 55 a 60% de 4k em consoles de última geração, atingindo ao mesmo tempo 60 FPS de forma confiável.

Redimensionando

O Fortnite está disponível em diversas plataformas, e somente as plataformas mais modernas são compatíveis com o Lumen. A experiência do jogo precisa ser a mais parecida possível, sem que os artistas tenham que alterar a iluminação por plataforma. Dimensionamos a iluminação ambiente conforme a configuração de qualidade da “Iluminação Global”:

Épica e Alta
  • Lumen está habilitado, fornecendo iluminação global total.
  • O “Skylight Leaking” do Lumen está em uso, impedindo que áreas escuras fiquem totalmente pretas.
  • “Exposição Automática” está habilitada para fornecer a exposição correta em áreas internas.
  • “Exposição Local” está habilitada.

Média
  • “Oclusão de Ambiente da Profundidade de Campo” está habilitada em vez do Lumen para Oclusão de Ambiente de larga escala.
  • “Oclusão de Ambiente do Espaço de Tela” está habilitada para Oclusão de Ambiente de pequena escala.
  • “Exposição Automática” está desabilitada.

Baixa
  • Luz natural sem sombras
  • A intensidade da luz natural é reduzida com r.SkylightIntensityMultiplier=0.7 para corresponder melhor à qualidade Média, pois não existe uma forma de sombreamento da luz natural.

Esperamos que este resumo das melhorias do Lumen no Capítulo 4 do Fortnite Battle Royale tenha sido útil e esclarecido dúvidas sobre como lançar um jogo multiplataforma com Lumen. Os desenvolvedores da Unreal Engine podem acessar a grande maioria das melhorias já na Unreal Engine 5.1. Para mais informações, confira a documentação do Lumen.

    Obtenha a Unreal Engine hoje mesmo!

    Obtenha a ferramenta de criação mais aberta e avançada do mundo.
    Com diversas funcionalidades e acesso ao código-fonte, a Unreal Engine vem carregada e pronta para usar.