View Single Post
Old 28-10-2006, 09:08   #1
fukka75
Senior Member
 
L'Avatar di fukka75
 
Iscritto dal: Jun 2003
Città: ovviamente la Capitale
Messaggi: 12635
Tearing, v-sync e triple buffering

Poiché c'è molta gente che non capisce come mai il frame rate dei giochi rimane stabile ad un valore fisso, o assume solo valori fissi, senza passare per quelli intermedi, mi permetto di spiegare un po' la cosa:

L'effetto tearing è lo "slittamento" orizzontale dell'immagine, come su piani diversi, che si nota soprattutto con i movimenti veloci del mouse.
Per eliminare questo fastidioso (soprattutto negli fps, dove si nota molto) effetto, si deve attivare l'opzione v-sync, o sincronizzazione verticale: in molti giochi moderni ciò è possibile direttamente dai menu ingame, oppure laddove non ci sia questa opzione, lo si può forzare direttamente dai driver, andando ad attivare l'opzione nei profili dei giochi (in genere cmnq è meglio lasciare l'impostazione di default "applicazione controllata" o "controllato dall'applicazione" e forzarlo "attivo" solo nel caso in cui il gioco non abbia l'opzione nei menu ingame). Il v-sync ha però due effetti collterali, uno meno pesante, l'altro decisamente più evidente:

1) L'attivazione del v-sync limita il frame rate massimo dei giochi alla frequenza di refresh del monitor: 60Hz -> 60fps, 85Hz -> 85fps, cioè se il gioco va a più di 60, 85, il frame rate viene limitato a questo valori (e fino a qua non è una grande perdita: 60fps sono ben al di là delle capacità umane di percepire irregolarità nel flusso delle immagini)

2) Se il fr scende al di sotto del valore di refresh, allora viene segato a suoi sottomultipli, cioè il fr può assumere SOLO valori che sono sottomultipli del valore della frequenza di refresh del monitor:
continuiamo con i due esempi dei 60Hz e degli 85HZ
60Hz
Se il frame rate scende, che ne so, a 55fps il v-sync lo porta a 30fps, se il fr scende al di sotto dei 30fps allora viene ulteriormente segato al sottomultiplo successivo, cioè 20fps, sotto i 20fps viene segato a 15fps e così via.
85Hz
Se il frame rate scende, che ne so, a 80fps il v-sync lo porta a 42.5fps, se il fr scende al di sotto dei 42.5fps allora viene ulteriormente segato al sottomultiplo successivo, cioè 28.3fps, sotto i 28.3fps viene segato a 21fps e così via.

L'unico modo per evitare questi adeguamenti è attivare nei driver il triple buffering (per nVidia c'è solo per i giochi OpenGL, per ATI è possibile avere il tb anche in Direct3D tramite ATT, vedi immagine sotto), che mantiene il fr al suo valore effettivo (55fps rimangono tali, 80fps idem, ecc.), sempre però limitato al valore pari alla frequenza di refresh (60Hz: se l'engine riesce ad andare a più di 60fps, sempre a 60fps è limitato) dal momento che il v-sync è ancora attivo: infatti il tb ha uno scopo solo se il v-sync è attivo, non serve a nulla se il v-sync è disattivo, né a migliorare la qualità dell'immagine o altro, come molti sembrano credere. Tenete cmnq presente che il tb occupa memoria della scheda video, in quantità proporzionale alla risoluzione e ai filtri attivati, quindi non abusatene se avete poca ram on-video. Per abilitare il tb esiste una utility, D3DOverrider, integrata in RivaTuner (http://www.guru3d.com/index.php?page=rivatuner&menu=8), ma del tutto indipendente da essa (quindi per avere D3DOr DOVETE installare RT, ma potete tranquillamente salvare la cartella ...\RivaTuner v2.0 Final Release\Tools\D3DOverrider, e disinistallare RT senza alcun problema: D3DOr funzionerà lo stesso).

Piccola guida sull'uso di D3D Overrider
Nella schermata principale del prog cliccate sul pulsantone "+" per aggiungere l'eseguibile del gioco ed assicuratevi che l'impostazione "force triple buffering" sia su ON (alsciate su Medium l'opzione "application detection level") ; adesso potete chiudere D3D Or, il programma rimane cmnq attivo (l'iconcina nella tray bar rimane visibile). Per comodità lasciatelo in avvio automatico, impostando su ON l'opzione "start with windows" nella finestra del prog. ATTENZIONE: D3DOr non funziona con gli eseguibili a 64bit (ad es. Crysis64)




Per i possessori di vga ATI, il tb per i giochi D3D può anche essere attivato tramite ATI TRAY TOOLS (lo trovate qui): ovviamente dovete flaggare la casella "force triple buffers" nella finestra riportata nella figura qui sotto
Quote:
Originariamente inviato da Stalker
"Profili dei giochi" (è il primo in alto) > "Gestisci profili dei Giochi".

__________________
Intel Corei7 3930k ** Asus Rampage IV Formula ** 4 x 4GB DDR3 G.Skill 1600MHz 8-8-8-24
Asus GTX970 Strix ** Samsung 840Pro 512GB ** Samsung 850 EVO 1TB ** Thermaltake Armor+

Ultima modifica di fukka75 : 07-02-2011 alle 14:59.
fukka75 è offline   Rispondi citando il messaggio o parte di esso