Frames por segundo, Explicado

Hoje estamos abordando uma das perguntas mais frequentes que vemos sobre jogos de PC: quantos quadros por segundo você precisa? Se você estiver rodando com a mesma taxa de quadros que seus monitores, digamos 60 FPS em um monitor de 60 Hz, ou existe um benefício em rodar jogos com uma taxa de quadros muito mais alta do que seu monitor pode exibir, como digamos, 500 FPS?

Para responder a essa pergunta, temos que falar um pouco sobre como uma GPU e um monitor funcionam juntos para enviar quadros para os seus olhos, e como tecnologias como a função Vsync.

Mas o resultado final é que rodar jogos com taxas de quadros extremamente altas, bem acima da taxa de atualização do seu monitor, levará a uma experiência de jogo mais responsiva, com menor latência de entrada percebida. Essa é a resposta à pergunta para aqueles que não querem esperar até o final. Agora vamos falar sobre porque.

Editor’s Note: Este recurso foi originalmente publicado em 2 de agosto de 2018. É tão relevante e atual hoje como era na época, então nós o colocamos como parte da nossa iniciativa #ThrowbackThursday.

Vamos assumir que temos um monitor com uma taxa de atualização fixa de 60 Hz. Em outras palavras, o monitor está atualizando sua tela a cada 1/60 de segundo, ou a cada 16,7ms. Ao executar um jogo, não há garantia de que a GPU seja capaz de renderizar cada frame em exatamente 16,7 milissegundos. Às vezes pode levar 20ms, às vezes pode levar 15ms, às vezes pode levar 8ms. Essa é a natureza variável da renderização de um jogo em uma GPU.

Com essa taxa variável de renderização, há uma escolha de como cada frame renderizado é passado para o monitor. Ele pode passar o novo frame para a tela assim que for completamente renderizado, comumente conhecido como rodando o jogo com “Vsync” ou sincronia vertical desligada, ou pode esperar até que a tela esteja pronta para refrescar antes de enviar o novo frame, conhecido como “Vsync on”.

Vsync off

Usar o primeiro método, Vsync off, causa rasgo. Isto porque uma tela não pode atualizar a imagem inteira instantaneamente, em vez disso atualiza linha por linha, geralmente da parte superior da tela para a parte inferior. Durante esse processo, um novo quadro pode ficar pronto da GPU, e como não estamos usando Vsync, o quadro é enviado para a tela imediatamente. O resultado é que, no meio de uma atualização, o monitor está recebendo novos dados e atualiza o restante das linhas no monitor com esses novos dados. Você é então deixado com uma imagem onde a metade superior da tela é do frame anterior e a metade inferior é do novo frame, recentemente disponível.

Tearing

Dependente do conteúdo sendo exibido, esta divisão entre o novo e o antigo frames em um refresh se apresenta como um rasgo, ou linha visível entre o antigo e o novo frames. Normalmente é mais notável em cenas de movimento rápido onde há uma grande diferença entre um quadro e o próximo.

Embora o Vsync desligado leve ao rasgo, ele tem a vantagem de enviar um quadro para a tela assim que terminar de ser renderizado, para baixa latência entre a GPU e a tela. Tenha isso em mente para mais tarde.

Vsync on

A forma alternativa de exibir uma imagem é com o Vsync ligado. Aqui, ao invés da GPU enviar o novo quadro imediatamente para a exibição, ela embaralha cada quadro renderizado em um buffer. O primeiro buffer é usado para armazenar o quadro sendo trabalhado no momento, e o segundo buffer é usado para armazenar o quadro que a exibição está mostrando no momento. Em nenhum momento durante a atualização é atualizado o segundo buffer, então o display mostra apenas os dados de um frame totalmente renderizado e, como resultado, você não é rasgado de uma atualização no meio da atualização.

Vsync on, uma olhada mais de perto

O único ponto em que o segundo buffer é atualizado é entre as atualizações. Para garantir que isso aconteça, a GPU espera após completar a renderização de um frame, até que a exibição esteja prestes a ser renovada. Ele então embaralha os buffers, começa a renderizar um novo frame, e o processo se repete. Algumas vezes o processo pode envolver vários buffers antes que um quadro chegue ao display, mas esta é a essência geral de como o Vsync funciona.

Quando sua GPU é muito lenta para renderizar um quadro… a gagueira acontece

Existem dois problemas com o Vsync. Primeiro, se a taxa de renderização da sua GPU for muito lenta para acompanhar a taxa de atualização da tela – digamos que ela só seja capaz de renderizar a 40 FPS em uma tela de 60 Hz – então a GPU não renderizará um quadro completo a tempo de atender ao início da atualização da tela, então um quadro é repetido. Isso causa gagueira, já que alguns quadros são exibidos apenas uma vez, enquanto outros são exibidos duas vezes.

Vsync ligado: 60Hz display, 200 FPS

O segundo problema ocorre quando sua GPU é muito rápida e é facilmente capaz de renderizar um quadro dentro do intervalo da taxa de atualização. Digamos que ele pode renderizar a 200 FPS, produzindo um novo quadro a cada 5ms, exceto que você está usando uma tela de 60 Hz com uma janela de atualização de 16,7ms.

Com o Vsync ligado, sua GPU completará o próximo quadro a ser exibido em 5ms, depois esperará 11,7 ms antes de enviar o quadro para o segundo buffer a ser exibido no monitor e iniciar no próximo quadro. É por isso que com o Vsync ligado, a maior taxa de quadros que você obterá corresponde à taxa de atualização do seu monitor, já que a GPU está essencialmente ‘travada’ para renderizar não mais rápido do que a taxa de atualização.

Agora é neste ponto que há muita confusão.

A gente costuma ouvir coisas como “travar a GPU para a atualização do meu monitor usando Vsync é ótimo, porque se ele renderiza mais rápido do que a taxa de atualização, esses quadros são desperdiçados porque o monitor não consegue mostrá-los, e tudo o que eu recebo é rasgar”. Muitas pessoas apontam para economia de energia pelo uso do Vsync; sua GPU não precisa trabalhar tão duro, não há benefício em rodar com taxas de quadros mais altas do que a taxa de atualização do monitor, então rodar com um FPS bloqueado e economizar alguma energia.

Podemos ver porque as pessoas chegariam a essa conclusão e há alguns pedaços de verdade lá, mas não é preciso em geral. E a razão para isso é que você não está considerando o tempo no qual as entradas são processadas, e quanto tempo leva para que essas entradas se materializem no display.

Vsync ao incluir as entradas

Para explicar o porquê disso, vamos olhar para o Vsync no diagrama, mas sobreponha o diagrama com as entradas do seu mouse e teclado, que normalmente são coletadas a cada 1ms. Vamos também usar o mesmo exemplo onde temos uma GPU capaz de renderizar a 200 FPS com uma tela de 60 Hz.

Com Vsync e um sistema de buffer simples, nesta explicação simplificada a GPU começa a renderizar um quadro correspondente à entrada do seu mouse assim que recebe essa entrada, no momento 0. Então leva 5ms para renderizar o quadro, e espera mais 11,7ms antes de enviá-lo para o buffer de exibição.

A exibição então leva algum tempo para receber o quadro a ser renderizado e atualizar fisicamente a exibição linha por linha com essa informação.

Vsync on including input

Even no melhor dos casos, estamos olhando para um atraso de pelo menos 16,7ms entre seu input e quando o display pode começar a mostrar os resultados desse input para você.

Quando o factoring no display retarda a entrada, tempo de processamento da CPU e assim por diante, a latência entre a entrada e a atualização do display pode ser facilmente superior a 50ms.

Vsync desligado incluindo entrada, 60Hz display, 200 FPS

Agora vamos olhar para o diagrama Vsync desligado. A GPU renderiza continuamente independentemente de quando a tela está atualizando, levando 5ms para transformar sua entrada em um quadro completo. A tela pode então começar a exibir esse novo quadro imediatamente, embora ele possa ser apenas parte desse quadro. O resultado é a latência entre a sua entrada para o jogo, e quando a tela pode começar a mostrar os resultados dessa entrada, reduz de 16,7ms para apenas 5ms. E não haverá buffers adicionais em implementações no mundo real; é tão rápido quanto isso, mais a defasagem de entrada do seu monitor.

E é aí que você obtém a vantagem. Neste exemplo, rodando a 200 FPS com Vsync desligado em um monitor de 60 Hz reduz a latência de entrada para 5ms, enquanto com Vsync ligado, essa latência é de pelo menos 16,7ms, se não mais.

Even embora o display não seja capaz de mostrar todos os 200 frames por segundo na sua totalidade, o que o display mostra a cada 1/60 de segundo é produzido a partir de uma entrada muito mais próxima no tempo daquele frame.

Este fenômeno, naturalmente, também se aplica com monitores de alta atualização. A 144 Hz, por exemplo, você será capaz de ver muito mais frames a cada segundo para que você tenha uma experiência mais suave e mais responsiva em geral. Mas rodar a 200 FPS com Vsync desligado em vez de 144 FPS com Vsync ligado ainda lhe dará uma diferença entre 5ms e mais de 7ms de latência de entrada.

Agora quando estamos falando de diferenças de milissegundos, você provavelmente está se perguntando se você pode realmente notar essa diferença nos jogos.

Dependente do tipo de jogo que você está jogando, a diferença pode ser qualquer coisa, desde muito perceptível, até nenhuma diferença. Um jogo de ritmo rápido como o CS: GO rodando a 400 FPS em um monitor de 60 Hz, com latência de entrada na melhor das hipóteses em torno de 2,5ms, vai se sentir significativamente mais responsivo aos movimentos do seu mouse do que se você estivesse rodando o mesmo jogo a 60 FPS com 16,7ms de latência (ou mais).

Em ambos os casos, a tela só está mostrando um novo frame 60 vezes por segundo, então não vai se sentir tão suave como em uma tela de 144 Hz ou 240 Hz. Mas a diferença na latência de entrada é enorme; rodando a 400 FPS permite que você coloque suas entradas no display quase 7 vezes mais rápido, se não mais. Experimente por si mesmo e você vai sentir a diferença na resposta.

E não tiramos esta explicação do nada, na verdade a Nvidia conhece as limitações do Vsync em termos de latência de entrada, e é por isso que eles fornecem uma alternativa chamada Fast Sync (a alternativa da AMD é chamada Enhanced Sync). Esta técnica de sincronização de exibição é como uma combinação de Vsync ligado e Vsync desligado, produzindo o melhor dos dois mundos.

Fast Sync funciona introduzindo um buffer adicional no Vsync no pipeline chamado de último buffer renderizado. Isso permite que a GPU continue renderizando novos frames no buffer de volta, fazendo a transição para o último buffer renderizado quando completo. Então em uma atualização de exibição, o último buffer processado é empurrado para o buffer frontal que a exibição acessa.

Fast Sync / Enhanced Sync

A vantagem que isso cria é que a GPU não espera mais após completar um quadro para que a atualização de exibição ocorra, como é o caso do Vsync ligado. Em vez disso, a GPU continua a renderizar quadros, de modo que quando a tela for acessar um quadro no início do período de atualização, esse quadro tenha sido renderizado mais próximo da janela de atualização. Isso reduz a latência de entrada. Entretanto, ao contrário do Vsync desligado, Fast Sync fornece um quadro completo para a tela no início de cada atualização, em vez de simplesmente empurrar o quadro para a tela imediatamente, e é essa técnica que elimina o rasgo.

Fast Sync só funciona quando a taxa de quadros é maior do que a taxa de atualização da tela, mas consegue fornecer uma experiência de jogo mais responsiva sem rasgar. E, claro, a AMD tem um equivalente chamado Enhanced Sync.

E com esperança este explicador terá esclarecido algumas das suas dúvidas sobre o porquê de rodar um jogo acima da taxa máxima de atualização do seu monitor oferecer uma experiência de jogo mais responsiva, e porquê a capacidade de rodar jogos com taxas de quadros mais altas é sempre uma vantagem, mesmo que possa parecer que o seu monitor não pode tirar vantagem disso.

Uma última nota: não discutimos aqui tecnologias de sincronização adaptativa como G-Sync e FreeSync, e isso porque temos falado principalmente em rodar jogos acima da atualização máxima, onde a sincronização adaptativa não se aplica. Há muitos métodos de sincronização diferentes por aí, mas a sincronização adaptativa é muito diferente do Vsync e do Fast Sync de que temos falado, e pelo menos para esta discussão, não é realmente relevante.

Outra Leitura
  • Os Melhores Monitores de Jogo
  • FreeSync 2 Explained
  • As Melhores Cartas Gráficas 2018
Shopping Shortcuts
  • Radeon RX 570 na Amazon, Newegg
  • Radeon RX 580 na Amazon, Newegg
  • GeForce GTX 1060 6GB na Amazon
  • GeForce GTX 1070 Ti na Amazon, Newegg
  • GeForce RTX 2070 na Amazon, Newegg
  • GeForce RTX 2080 na Amazon, Newegg
  • GeForce RTX 2080 Ti na Amazon, Newegg

Crédito de cabeçalho de mastro: Foto de Jakob Owens

Articles

Deixe uma resposta

O seu endereço de email não será publicado.