[Consoles] Relatório de Desenvolvimento #2

No relatório de hoje, vamos falar um pouco do tempo de GPU e de como vários fatores podem ajudar a reduzi-lo.

Bem-vindos à segunda edição do Relatório de Desenvolvimento nos Consoles!

Se vocês não viram o primeiro Relatório, em que falamos de “espectro de visão” e de como ele afeta o desempenho do jogo, não deixem de conferir: [Xbox] [PS4]

No Relatório de hoje, vamos falar um pouco do tempo de GPU e de como vários fatores podem ajudar a reduzi-lo.

O que é “tempo de GPU”?

“Tempo de GPU” é o tempo que a GPU, ou Unidade de Processamento Gráfico (uma placa de vídeo, por exemplo), leva para calcular um único quadro. Quanto mais cálculos a GPU precisar fazer, maior será esse tempo. O tempo de GPU afeta diretamente a taxa de quadros por segundo, sendo que um tempo alto prejudica o desempenho do jogo. Vários fatores determinam o tempo de GPU, como o tempo que demora para renderizar todos os elementos vistos na tela.

A GPU é uma unidade que processa os gráficos do computador. Ela desenha milhões de pixels na tela a cada quadro (ou seja, várias vezes por segundo). O número de pixels na tela depende da resolução usada: quanto maior a resolução, mais pixels e mais detalhes podem ser exibidos a cada quadro, mas resoluções altas exigem mais poder de processamento.

A resolução 4K, por exemplo, tem 4 vezes mais pixels que a resolução 1080p, a mais comum atualmente. Ou seja, quando alguém usa 4K em vez de 1080p, a GPU precisa processar 4 vezes mais dados, o que, por sua vez, aumenta o tempo de GPU.

Resolução dinâmica

Observação: estamos otimizando a opção de resolução dinâmica para disponibilizá-la para o PS4 e o Xbox One em uma atualização futura.

Resolução dinâmica é um recurso que altera a resolução do jogo durante a partida, de acordo com o número de cálculos necessários na GPU. Ela muda a resolução de 1440p para 4K em tempo real, com uma taxa de atualização variável. Se o jogador estiver no meio da partida e a GPU precisar fazer muitos cálculos, o jogo reduzirá a resolução automaticamente para estabilizar o desempenho, retornando à resolução anterior após normalizar a situação.

Queremos mostrar como a opção de resolução dinâmica afeta os tempos de GPU com o gráfico abaixo. Lembre-se de que o gráfico não está exibindo quadros por segundo, mas medindo o tempo de GPU em milissegundos. Ou seja: quanto menor, melhor.

* O tempo de GPU exibido no gráfico foi calculado usando um Xbox One X.

Vemos uma melhora de 20% na velocidade de processamento dos tempos de GPU com a resolução dinâmica ativada. Com tempos menores, a GPU pode processar cada quadro mais rápido, proporcionando um desempenho melhor e mais estável!

Recorte de Instâncias da GPU

O Recorte de Instâncias da GPU foi ativado desde a versão 1.0 do Xbox One X e do PS4 Pro, e desde então fizemos várias melhorias para aumentar o desempenho. Vamos aperfeiçoar ainda mais a opção no futuro, inclusive na próxima atualização do servidor de jogo. Leia mais sobre as mudanças abaixo.

Lembre-se de que as melhorias ao Recorte de Instâncias da GPU ainda estão sendo otimizadas para o PS4 de primeira geração — e também para o Xbox One de primeira geração e o Xbox One S. Esses consoles receberão a opção futuramente.

Erangel, Sanhok e Vikendi contam com florestas bem densas. Para garantir o melhor desempenho possível, o jogo renderiza árvores do mesmo modelo com “instanciamento”. A função reduz o custo de processamento de gerar uma única árvore, de modo que a GPU pode gerar a floresta abaixo sem esperar por mais chamadas de geração (solicitações para a GPU realizar tarefas, geralmente bem pesadas).

Instanciamos todas as árvores do mesmo modelo exibidas no ponto de vista do jogador, reduzindo o número de chamadas de geração e o custo de gerar as árvores, proporcionando um melhor desempenho.

Mas o que acontece caso o jogador aproxime a visão com uma mira 8x?

Na hora de atingirmos o desempenho esperado, contamos bastante com o recurso de Nível de Detalhes, ou LOD na sigla em inglês, que gera objetos em diferentes níveis de qualidade conforme a distância do jogador. Em um estado normal, sem mira, só as árvores mais próximas na primeira instância são geradas com LOD 0 (o nível de detalhes mais alto). Já com o uso da mira, todas as instâncias, inclusive as árvores miradas, são geradas com LOD 0, aumentando consideravelmente o tempo de GPU e afetando o desempenho.

Quando o jogador mira, a distância de visualização é ampliada para que ele possa ver as árvores distantes com o máximo de detalhes. Na imagem acima, o jogador só vê de 3 a 7 árvores pela mira, mas a GPU tenta gerar todas as instâncias no espectro de visão. O uso de instâncias nesse caso prejudica o desempenho, já que gera árvores desnecessárias, enquanto só as 7 árvores seriam geradas caso não usássemos instâncias.

O nível de detalhes do objeto é determinado pelo tamanho proporcional na tela, e a distância de recorte do objeto decide até se ele será renderizado, isso de acordo com a distância do jogador.

Queremos otimizar o Recorte de Instâncias da GPU para melhorar o desempenho, tanto ao não renderizar muitos detalhes em objetos não exibidos na tela quanto ao desenvolver um processo mais inteligente para determinar quais objetos serão processados nas instâncias e em que ordem. Como a GPU fica ciente de todos os LODs de objeto, só os modelos de baixa LOD seriam instanciados, após examinar todas as instâncias. A seguir, o jogo processaria a renderização de frente para trás. Chamamos esse processo de escolher e processar de “Recorte de Instâncias da GPU”.

O gráfico abaixo compara o tempo de GPU com o Recorte ativado e desativado na resolução 4K.

* O tempo de GPU foi medido com a mira 8x ativada.
* O tempo de GPU exibido no gráfico foi calculado usando um Xbox One X.

Vemos um resultado mais estável, com uma melhoria de 30% no tempo de GPU, com o Recorte de Instâncias da GPU ativado. Sem o Recorte de Instâncias da GPU, os tempos ficam maiores e consideravelmente instáveis.

Esperamos que o Relatório da semana tenha sido bem informativo. Voltaremos para contar mais daqui a duas semanas!

Discuta este artigo
Compartilhar este artigo