O que é a compilação de Shader e por que ela faz os jogos de PC travarem?

Elden Ring Captura de tela de uma cena de batalha com um cavaleiro a cavalo lutando contra um dragão.

Alguns jogos apresentam um tipo de travamento que ocorre independentemente da potência do seu computador ou das configurações que você escolher. Isso é causado por um processo conhecido como “compilação de shader” e é um problema crescente em jogos de PC.

O que são sombreadores?

Shaders são programas de computador que ajudam a determinar vários aspectos dos gráficos renderizados. Os pixel shaders, por exemplo, calculam os atributos de um pixel. Isso inclui a cor, o brilho, a refletividade ou a transparência desse pixel. Se você quiser que algo em seu jogo pareça molhado, você usa um shader especial para conseguir essa aparência, em vez de fazer isso meticulosamente à mão.

Os shaders são o que tornam as GPUs modernas tão flexíveis, já que essas GPUs são projetadas para executar qualquer coisa que possa ser expressa em linguagem de programação de shader . Eles substituem a antiga tecnologia de GPU de “pipeline de função fixa”, onde os tipos de matemática gráfica que uma GPU poderia fazer eram conectados ao seu silício.

O que é compilação de shader?

Compilação ” é um termo de computador que se refere a pegar o código escrito por um programador humano e traduzi-lo em código de máquina que o processador específico destinado a executar o software em questão possa entender. Assim, por exemplo, você pode compilar seu código para rodar em uma CPU Intel ou Apple Silicon .

Recomendado:  Como importar um documento do Word para o Google Docs

A mesma coisa é necessária para uma GPU. O código do shader deve ser compilado para ser executado na marca e modelo de GPU específico em questão. Se você trocar a GPU, atualizar seus drivers ou o jogo receber uma atualização, os shaders deverão ser compilados novamente.

Por que alguns jogos de PC apresentam falhas na compilação de shaders?

Em alguns jogos, a compilação de shaders em segundo plano interfere no jogo em si, causando uma gagueira visível . O computador está trabalhando muito na compilação dos shaders para rodar o jogo sem problemas. Alguns desenvolvedores trabalham para otimizar a compilação para que ela tenha pouco ou nenhum impacto no desempenho do jogo, enquanto outros espalham a compilação de shaders por todo o jogo, esperando que os problemas sejam de curta duração. Nesse caso, você só encontraria falhas no início de um novo nível ou ao entrar em um novo ambiente que usa shaders que não eram necessários até aquele ponto.

As falhas de compilação têm sido particularmente flagrantes nos jogos Unreal Engine 4, que é um mecanismo de jogo difundido e popular. Especificamente, essas falhas se tornam um problema ao executar um jogo no DirectX 12 . Em parte, isso ocorre porque o DirectX 12 muda a forma como a compilação de shaders funciona, colocando mais controle nas mãos dos desenvolvedores. No entanto, isso também significa que os desenvolvedores podem não ter a melhor maneira de otimizar a compilação de shaders usando a melhor e mais recente versão do DirectX.

Por que os consoles não apresentam falhas na compilação de shaders?

A falha na compilação de shaders é um problema completamente ausente em consoles como PS5 e Xbox Series X|S . Isso ocorre simplesmente porque os desenvolvedores sabem exatamente qual hardware está dentro de cada console para que possam pré-compilar todos os shaders; não há necessidade de compilá-los no sistema local porque você já sabe qual GPU está almejando.

Recomendado:  Como bloquear um site no Mozilla Firefox

É possível fazer isso no PC, mas como existem tantas GPUs e configurações de sistema, não seria prático. No entanto, no caso do Valve Steam Deck , a Valve inclui um cache de shader pré-compilado com alguns jogos porque, é claro, todos os Steam Decks têm a mesma GPU.

O que você pode fazer em relação à gagueira de compilação?

Infelizmente, na maioria das vezes, os desenvolvedores precisam corrigir problemas de compilação de shaders. A boa notícia é que eles eventualmente conseguirão controlar o processo. O Unreal Engine 5.1 pode incluir um recurso automatizado  que ajudará os desenvolvedores com o cache sem que o impacto no desempenho seja tão severo.

A lista de coisas que você pode fazer para atenuar a gagueira não é longa, mas algumas destas opções podem ajudar:

  • Se um jogo permite pré-compilar shaders, deixe. Isso pode demorar um pouco, mas a experiência de jogo será livre de interrupções.
  • A menos que uma atualização do jogo inclua uma correção de travamento do shader, espere até terminar de jogar ou os shaders poderão ser compilados novamente.
  • Adie as atualizações do driver da GPU até terminar o jogo atual, caso ele acione a compilação novamente.
  • Quando a compilação falhar em um jogo, aperte o botão de pausa e espere até que termine antes de continuar a jogar.
  • Use o DirectX 11 em vez da versão DirectX 12 de um jogo. Freqüentemente, a interrupção do shader é reduzida ou ausente, embora você desista dos recursos DX12 por uma pechincha.
  • Em vez disso, jogue em um console.

Com o tempo, esse problema provavelmente desaparecerá ou se tornará muito menos intrusivo. Por exemplo, os desenvolvedores podem descarregar a compilação de shaders em núcleos de CPU que o jogo não precisa, o que é uma situação comum em PCs modernos com muitos núcleos. Até então, o #stutterstruggle  continuará sendo um problema irritante nos jogos para PC.

Recomendado:  Como adicionar mundos personalizados ao servidor do Minecraft Realms