"Vulkan shaders" e a STEAM no Linux

No Diablo IV (pelo menos no Linux, que é o que eu uso), quando o jogo vai iniciar, essa tela aparece porque o jogo está preparando os shaders gráficos antes de rodar.

Mas o que isso significa, em termos práticos e técnicos?

Shaders são pequenos programas que rodam na GPU e determinam como as superfícies são desenhadas, incluindo iluminação, sombras e reflexos, além de serem responsáveis pela aplicação de efeitos visuais como fogo, neblina e partículas, bem como pelos cálculos de pós-processamento, como blur e HDR. O Vulkan é uma API gráfica de baixo nível, alternativa ao DirectX e ao OpenGL, que oferece maior controle e desempenho, mas exige que esses shaders estejam bem definidos e previamente compilados.

Por que isso acontece antes do jogo iniciar e por que trava em 99%?

Esse processamento acontece antes do jogo iniciar porque, caso isso não fosse feito previamente, o jogador enfrentaria travamentos constantes durante as lutas (quando muita coisa acontece na tela), quedas bruscas de FPS ao entrar em áreas novas e micro-travas sempre que um efeito visual aparecesse pela primeira vez.
Carregando os shaders antes o Diablo "paga antes o custo de processamento" para garantir uma experiência mais fluida durante o jogo.

Em sistemas Linux, esse processo é ainda mais visível porque o Vulkan e as camadas de compatibilidade priorizam a compilação explícita e o cache de shaders para evitar travamentos em tempo de execução.

É por isso que, às vezes, quando você inicia o jogo, o processo pode ficar aparentemente travado em 99% por algum tempo. Isso é comum na primeira execução após a instalação, após atualizações do próprio jogo ou do driver da GPU, ou ainda quando há limpeza ou perda do cache dos shaders. Ele está "recompilando" a coisa toda de novo.

E claro, CPUs mais fracas tendem a prolongar essa etapa, já que a compilação de shaders é uma tarefa pesada para o processador. Esse percentual final, essa "travada" no 99%, geralmente corresponde ao momento em que o cache está sendo gravado no disco ou quando o driver gráfico está validando os últimos pipelines.

Se você cancelar clicando em "Skip" o jogo ainda vai abrir mas você pode ter pequenos travamentos e quedas de desempenho nas primeiras horas, depois melhora, porque o cache provavelmente vai ser recompilado aos poucos, durante o jogo, mas para uma melhor experiência é melhor esperar carregar tudo.

NOTA:

\* Tecnicamente, quem usa Vulkan shaders não é o Linux, é o jogo (ou o Proton), mas você entendeu, né?