Placas 3D: FPS, V-Sync, Triple Buffering e tearing

Ir em baixo

Placas 3D: FPS, V-Sync, Triple Buffering e tearing

Mensagem por unruly em Sab 19 Set 2009, 1:44 am





Existem basicamente três motivos para investir em uma placa 3D mais rápida: FPS, qualidade de imagem e compatibilidade.

O aumento no frame-rate (FPS) é o aspecto mais enfatizado, já que melhora a jogabilidade e torna a movimentação mais fluída. Ele é determinado diretamente pela resolução e pelas configurações usadas. Quanto mais trabalho a placa precisa executar a cada frame, menos frames ela consegue renderizar por segundo, e vice-versa.

É possível rodar jogos atuais em placas relativamente modestas, mas você fica limitado a resoluções mais baixas e precisa se conformar em manter a maior parte dos efeitos visuais desativados e reduzir a qualidade das texturas. Um bom exemplo são os jogos 3D para o iPhone e outros smartphones, que rodam dentro das limitações dos aparelhos justamente por utilizarem resoluções muito mais baixas e efeitos visuais modestos se comparado a um PC.

O FPS pode ser também limitado pelo desempenho do processador (afinal, é ele quem executa a maior parte do processamento referente ao jogo ou ao aplicativo), mas em situações normais a placa 3D torna-se um gargalo muito antes do processador.

Um Athlon II X2 250 (3.0 GHz), por exemplo, é capaz de (caso o desempenho não seja limitado pela placa 3D) rodar o Left 4 Dead a cerca de 100 FPS com o nível máximo de qualidade, enquanto um Core i5 750 oferece cerca de 130. Mesmo um velho Athlon 64 3000+ (2.0 GHz) oferece uma média de 35 FPS, o que é mais do que suficiente para um jogador casual.

Por outro lado, uma GeForce GTS 250 oferece uma média "apenas" 56 FPS ao rodá-lo a 1680×1050 com AA de 4x e mesmo uma Radeon HD 4850 X2 oferece pouco mais de 100 FPS nas mesmas condições.

Em geral, o processador limita o FPS apenas ao usar uma placa 3D desproporcionalmente rápida em relação a ele (como ao instalar uma placa 3D high-end em um micro antigo), ou ao jogar usando resoluções muito baixas (o que reduz o trabalho da placa 3D para renderizar cada frame).

Isso nos leva ao segundo motivo, que é a qualidade da imagem. Usando uma placa mais rápida, você pode se dar ao luxo de sacrificar parte dos quadros para usar resoluções mais altas, ativar o uso de antialiasing, recursos de sombra, Anisotropic Filtering e outros recursos, que melhoram de forma expressiva a qualidade visual.
O FPS "prático" é limitado pela taxa de atualização do monitor. A maioria dos monitores de LCD atuais trabalha com 60 Hz de taxa de atualização, o que permite a exibição de um máximo de 60 quadros por segundo. Em situações onde a placa 3D é capaz de gerar um número maior de quadros por segundo, os quadros adicionais acabam sendo simplesmente descartados.

Monitores CRT ofereciam, taxas de atualização um pouco mais altas (indo geralmente até 85 Hz com resolução de 1024×768 nos monitores de 17"), mas isso não foi suficiente para que eles resistissem ao avanço dos LCDs. Muitas pessoas associam a maior taxa de atualização com uma melhor jogabilidade, mas na verdade ela acaba fazendo pouca diferença. O principal motivo de os monitores CRT trabalharem com taxas de atualização mais altas é que elas são necessárias para evitar o aparecimento de flicker. Diferenças de jogabilidade ao utilizar um monitor de CRT e um LCD estão mais relacionadas ao tempo de resposta, que era consideravelmente mais alto nos monitores LCD antigos.

Este limite "físico" para a exibição dos quadros, representado pela taxa de atualização do monitor faz com que não faça muito sentido gastar mais com uma placa para jogar com um FPS muito acima de 60 quadros, simplesmente porque os quadros excedentes não serão exibidos. O principal motivo de algumas pessoas gastarem mais de mil reais em uma placa 3D de ponta não é o desejo de jogar a 200 quadros por segundo, mas sim de poder jogar a 60 FPS em um monitor de 22" ou mais, usando a resolução nativa do LCD e com todos os efeitos ativados.

O problema com relação ao FPS é que ele não é um valor fixo. Ele varia de forma considerável de acordo com a cena, caindo bastante nas cenas mais movimentadas, que são justamente quando você mais precisa. Isso faz com que muitos prefiram reduzir os efeitos (ou comprar uma placa ainda mais rápida), de forma a obter 100 FPS ou mais e assim jogar com uma boa margem de segurança, de forma que o valor não caia muito abaixo dos 60 FPS mesmo nas cenas mais pesadas.



Em condições normais, o olho humano não é capaz de diferenciar muito mais do que 25 quadros por segundo, que é a taxa utilizada nos filmes. É justamente por isso que os novos formatos de vídeo sempre priorizam o aumento na resolução e não no número de quadros por segundo. A questão é que você tende a ficar muito alerta ao jogar, sobretudo no caso dos jogos de primeira pessoa, o que faz com que o cérebro consiga captar mais informações e assim diferenciar entre um número maior de quadros.

Para um jogador ocasional, um FPS de 30 quadros pode ser mais do que satisfatório, mesmo levando em conta que a taxa caia para 20 ou mesmo 18 FPS nas cenas mais movimentadas. Por outro lado, um gamer mais hardcore dificilmente ficará satisfeito com menos de 60 FPS e talvez seja até capaz de perceber a queda para 40 ou 35 FPS na cenas mais intensas.

Uma forma de tornar a exibição dos quadros mais fluída é ativar o V-Sync, opção que sincroniza a atualização dos quadros com o refresh do monitor. A ideia é que o monitor exiba um novo quadro a cada atualização, sem pular ou repetir quadros. Ao usar refresh de 60 Hz para o monitor, o sistema tenta exibir sempre 60 quadros, ao usar 75 Hz tenta exibir 75 quadros e assim por diante, o que seria o ideal.

Naturalmente, o sistema só será capaz de exibir 60 FPS caso a placa de vídeo seja capaz de renderizar um novo quadro a cada 0.1666 segundo. Em situações onde a placa passa a demorar mais do que isso para renderizar cada quadro, a imagem passa a ser atualizada a cada dois quadros (30 FPS) ou mesmo a cada 3 quadros (20 FPS). A vantagem é que a atualização é sempre mais ou menos constante, sem "pulos", mas a desvantagem é que os quadros ficam alguns milissegundos parados no buffer da placa de vídeo, esperando a próxima atualização do monitor.

Com o V-Sync desativado, os novos frames são exibidos o mais rápido possível. Se um novo frame fica pronto enquanto o monitor ainda está renderizando a primeira metade do anterior, o monitor finaliza a atualização da tela exibindo o novo frame. Isso causa um fenômeno curioso, que faz com que a tela exiba a metade superior do primeiro frame e a metade inferior do frame seguinte, fazendo com que a imagem fique cortada (efeito que é chamado de tearing):



Muitos não percebem o tearing e preferem jogar com o V-Sync desativado, de forma a obter o melhor FPS possível, mas muitos ficam bastante incomodados com ele e preferem o "conforto" de jogar com o V-Sync ativado. Nesse caso a questão é bastante subjetiva e depende basicamente do gosto pessoal.

Ao optar pelo uso do V-Sync você pode escolher entre usar o Double Buffering, onde a placa de vídeo utiliza dois frame-buffers e o Triple Buffering (uma técnica mais recente, disponível em jogos atuais), onde a placa de vídeo utiliza três buffers:



Ao usar o Double Buffering, o primeiro buffer contém o frame completo que está sendo exibido no monitor, enquanto o segundo contém o frame seguinte, no qual a GPU da placa de vídeo ainda está trabalhando.

Caso o V-Sync esteja ativado, sempre que a placa de vídeo não consegue finalizar o quadro seguinte antes que o tempo da atualização da tela se esgote, o sistema repete o quadro anterior e a placa precisa esperar mais 16.66 ms (a 60 Hz), para poder trabalhar no quadro seguinte, o que causa um retardamento na exibição do quadro (input-lag) que pode ser suficiente para transformar um kill em um down em um FPS multiplayer. Ao desativar o Double Buffering, o input-lag é eliminado, mas em compensação você passa a lidar com o tearing.

Ao ativar o Triple Buffering, a placa passa a dispor de um terceiro buffer, o que permite que ela inicie o processamento de um novo quadro em situações em que o segundo buffer já está cheio. Isso ajuda a absorver melhor a variação de processamento necessário entre os quadros e faz com que a placa perca a atualização de um número muito menor de quadros, resultando em um bom meio-termo, onde o tearing é completamente eliminado e o input-lag é também reduzido.

Em resumo temos:

V-Sync desativado: Muito tearing, porém baixo input-lag
V-Sync com Double Buffering: Sem tearing, porém input-lag mais alto
V-Sync com Triple Buffering: Sem tearing, input-lag mediano

Como sempre, existe uma pequena desvantagem em usar o Triple Buffering, que é um pequeno aumento no uso de memória de vídeo, mas ele é desprezível em uma placa atual.

No fim da linha, temos a questão da compatibilidade, que está relacionada às versões do DirectX (ou do OpenGL) suportadas pela placa, assim como o suporte ao processamento de shaders via hardware. Usando um notebook com uma Mobility Radeon X1270 (uma placa compatível com o DirectX 9) por exemplo, você não conseguirá rodar jogos baseados no DirectX 10 ou DirectX 11, independentemente das configurações de imagem usadas.

Em geral, a questão da compatibilidade é um problema em placas no extremo low-end, já que o baixo desempenho inviabiliza rodar jogos atuais bem antes do que a obsolência relacionada à API suportada. Outro ponto importante é que os desenvolvedores de jogos raramente limitam a compatibilidade com uma determinada API antes que a grande maioria dos usuários tenham feito a transição para placas compatíveis com ela (afinal, mais usuários com hardware capaz de rodar o jogo significam mais vendas).
Um bom exemplo é que a grande maioria dos jogos compatíveis com o DirectX 10 incluem rotinas de compatibilidade, que permitem que eles rodem também sobre placas limitadas ao DirectX 9 (como as GeForce 7, por exemplo), embora com menos efeitos. Ao que tudo indica, a transição para o DirectX 11 será também feita de maneira similar, já que ele é basicamente um superset da versão anterior.
avatar
unruly

Mensagens : 174
Data de inscrição : 02/09/2009
Idade : 33
Localização : 201.189.67.140

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum