Smooth Gaming with Triple Buffering

SilveRRIng

Power Member
Isto não é propriamente um tweak para benchmarks, até porque é válido para quem usa o vSync, coisa impensável em benchmarks gráficos, mas parece-me muito pertinente para jogos.

Resumindo: A opção de usar triple buffering nos drivers, da ATi e nVidia, apenas activa para OpenGL. Para activar isto em DX é necessário um tweak, com um programa.

Para dar uma ideia, elas mostram benchmarks do F.E.A.R. para se perceber o potencial disto.

Have you ever being in a situation where you enable v-sync to get rid of annoying image tearing, but only found out it killed your frame rate? We know v-sync caps your maximum frame rate at your screen refresh rate, which is 60 time per second for common LCD monitors. Actually playing games at 60 fps is not bad and it should provide a smooth gaming experience. However, you sometimes find the frame rate strangely capped at 30fps as soon as it drops below 60fps. At this point you probably start screaming "OMG! tearing sucks, and v-sync sucks no less!!!". It's not v-syncs fault all alone, usually it's the combination of the images being rendered using double buffering with v-sync enabled. So you asked why is double buffering evil? Basically there are two buffers in the graphics hardware, the image you seeing on the monitor is in the front buffer and the next rendered frame is in the back buffer. Since we have v-sync enabled, before the graphics hardware can swap the front and the back buffer, it needs to wait for the next vertical blank period (happens every 1/60th seconds on monitors with refresh rate 60Hz) to maintain synchronization with the monitor's refresh rate. This works fine when the graphics card can render frames faster than 60fps. If all of this makes sense to you, perhaps you can imagine what happens when the graphics card is unable to bump 60 frames per second. When that happens, the graphics card is unable to make the buffer swap because the next frame is not ready in the back buffer and it'll have to wait for the next vertical blank period to make the swap. The end result is that instead of swapping buffers 60 times per second, it's only swapping the buffer 30 times a second, and that's the reason why frame rate is capped at 30fps.

This is where triple buffering comes into play. With triple buffering enabled, now we have 3 buffers and the graphics hardware can start rendering into the 3rd buffer without having to wait for the front buffer gets swapped out. Let's just say it helps maintaining frame rate when v-sync is enabled. Both ATi and nVidia provide an option to enable triple buffering in their drivers. Unfortunately it's only half right, the triple buffering option in their drivers only have effect in OpenGL games. Considering the numbers of OpenGL games is largely inferior to D3D games, it's even less than half right.

A explicação de como activar está a meio do artigo com imagens e links para sacar o tweaker.

Comparativo:

Triple Buffer OFF

fear_tb_off.jpg


Triple Buffer ON

fear_tb_on.jpg


Notice the maximum frame rate does not change due to v-sync, the percentage of the benchmark running above 40fps has doubled. This shows that triple buffering helps smoothing the gameplay and greatly reduce the stuttering effect.

Atenção a esta explicação dos possiveis senãos, depende do jogo e depende dos settings.

Triple buffering seems like the perfect solution to cure low frame rate, however, it does not come free. Enable triple buffering also means it requires 50% more frame buffer spaces. Under certain conditions, it can also negatively impact your gaming experience. A simple example can illustrate this potential problem. Let's say we are running a game at 1600x1200 resolution. Each pixel needs 32 bits to store the information, 1600x1200x32 = 61,440,000 bits, converting it to megabytes, it equals to 7.32MB. To use double buffering, it requires 14.64MB video memories; to use triple buffering, it requires 21.96MB video memories. Heck, it's only 21.96MB, what's the big deal? Modern video cards have 256MB video rams onboard. You are certainly right, it does not seem like memory usage would be an issue. However, once we enabled 4x FSAA, the number gets inflated really fast. With 4x FSAA enabled, there are 4 times more pixels being sampled, thus you need to multiple 21.96MB by 4 and it's whopping 87.84MB! That's more than 1/3 of your total video ram. If a game requires 200MB of space to store textures, light maps, bump maps, normal maps......etc., you are going to have a very bad gameplay experience with lots of pauses caused by hard drives accesses. This is just something to watch out for, if you find the game accessing the hard drive too frequently, it can be an indication that triple buffering is eating up too much of your video memories.

Se alguém testar que ponha aqui o resultados ou opinião acerca do comportamento dos jogos com vSync, Triple buffer Off e On, hardware e settings, para se ter uma ideia do impacto dependendo do cenário.

Artigo
 
Última edição:
God_Lx disse:
Posso ser só eu, mas não vejo aí nenhum link para experimentar...

EDIT: Já editaste :P
LOL, pois foi, tinha-me esquecido disso. Quero experimentar isto quando chegar a casa, no BF2. Se bem que jogo-o a 1280 4xAA, com 256MB de VRAM, é capaz de provocar muito swap...
 
Eu ja saquei o programa mas não estou a conseguir por aquilo a correr da-me sempre um erro quando carrego no executavel!!
 
Testei agora no F.E.A.R...sinto tudo muito mais suave :) e ganhei 2-3 fps que fazem algum jeito em firefights onde chego a ter 20 fps...nada mau! obrigado por este tweak :)
tenham nota que isto trabalha em sistemas muito especificos...
 
azeiteiro disse:
da erro pq precisa da porcaria do .net frameworks ou la o q é


isso e nas ATI , mas kem tem ATIs sempre foi preciso ter o netframework instalado ate só mesmo para usar drivers com CCC tens k o ter instalado senao tens conflitos
 
[BoB]Marley disse:
eu normalmente tenho sempre o triple buffer activado.... mas o v-sync desactivo-o sempre... n kero ter os jogos limitados a 75fps
mas afinal, há ou nota-se diferença de 30fps para cima? e de 75 para cima?
 
zelv disse:
mas afinal, há ou nota-se diferença de 30fps para cima? e de 75 para cima?

acho que os fps é uma coisa relativa, e varia de jogo para jogo.

em certos jogos nota-se, em outros mesmo ke n se note, convem ter acima disso... por exemplo o urban terror, convem ter 120fps menos do ke isso e o "boneco" "sprinta" mais devagar... no CS, usa-se a 100fps (pk? nao sei, mas dizem ke convem) e por aí adiante...

por exemplo, se fores jogar ut99 com uma placa destas recentes, provavelmente terás uns 400 ou 500fps (se n tiveres o v-sync ligado), e praticamente n consegues jogar, pk o jogo corre extremamente rápido. daí, baixa-se o netspeed de forma a que fique com uns 120fps, e aí fica bastante fluído..
 
lol eu tenho 500 e tal fps no UT99 e nao presciso de fazer isso do netspeed...o jogo esta fluidissimo mesmo mas nao rapido de mais
 
Cooling disse:
lol eu tenho 500 e tal fps no UT99 e nao presciso de fazer isso do netspeed...o jogo esta fluidissimo mesmo mas nao rapido de mais

o meu acontece-me isso.... n sei pk :\

parece que o boneco tem um foguete no cu... assim que baixo o netspeed para +-7500, já corre bem as uns +-120fps... se ligar o v-sync, os fps ficam "trancados" à sincronização do monitor, neste caso 75.

p.s.: tenho de experimentar a fazer uma instalação nova... é ke esta já tem uns 6 anos ou mais
 
[BoB]Marley disse:
o meu acontece-me isso.... n sei pk :\

parece que o boneco tem um foguete no cu... assim que baixo o netspeed para +-7500, já corre bem as uns +-120fps... se ligar o v-sync, os fps ficam "trancados" à sincronização do monitor, neste caso 75.

p.s.: tenho de experimentar a fazer uma instalação nova... é ke esta já tem uns 6 anos ou mais

hmm então se baixar o netspeed o jogo ja fica normal? tenho que experimentar.
 
Back
Topo