PSYCOMANTIS
29-12-2002, 13:25
Premessa:
Tutti noi sappiamo che quello che vediamo sul monitor quando giochiamo ad un videogame e' la combinazione di due processi separati e ben distinti dati rispettivamente dalla scheda video e dallo stesso monitor.
La scheda video in base alla propria potenza di calcolo, invia al monitor una serie variabili di fotogrammi (frames) ogni secondo. Il monitor dal canto suo visualizza questi frames in base
al valore di refresh impostato. Il refresh non e' altro che il tempo necessario al monitor per completare un frame . Se quest'ultimo completa l'immagine in 1/85 di secondo il valore di refresh sara' di 85hz e i frame visualizzati su schermo in un secondo saranno 85 (sempre considerato che la scheda video riesca a fornirglieli).Naturalmente per avere una immagine stabile occorre che i frames inviati dalla scheda video e il refresh vengano sincronizzati, ovvero la scheda video deve attendere che il monitor abbia finito di aggiornare ogni singolo frames(v-sync attivato). Se invece il v-sync viene disattivato, la scheda non attendera' piu' che il monitor finisca di aggiornare i frames, ma sara' per cosi' dire libera di mandare a video tutti i frames che e' capace di generare. Il risultato di solito e' che il valore del frame rate finisce per superare quello del refresh dando vita ad un effetto sgradevole (effetto tearing). Dal canto suo si hanno problemi anche attivando il v-sync e impostando il refresh ad un valore irragiungibile dal frame rate, in questo caso l'immagine scatta.
Prendiamo ad esempio un valore impostato di refresh di 60hz (quindi il tempo necessario al monitor per aggiornare un frames sara' di 1/60 di secondo) e mandiamo a video una sequenza di 40 frames per secondo (quindi un frame ogni quarantesimo di secondo) . Abbiamo sessanta posti (dati dal refresh) ma solamente 40 potranno essere occupati (dai frames). I restanti 20 posti saranno semplicemente lasciati vuoti (e non ignorati come molti credono) il risultato sara' un bello scatto a video.Quello che e' importante sapere e' che il refresh non e' variabile e che comunque una volta impostato un valore quel valore verra' mantenuto per tutta la durata del ciclo (1 secondo) che ci siano frames da mostrare o meno. Nel caso in cui la scheda riesca a fornire i 60 frames necessari per occupare i 60 aggiornamenti (resi disponibili dall'impostazione a 60 hz) il risultato sara' una immagine dalla fluidita' perfetta. Certo che, aumentando il valore del refresh ( sempre ammesso pero' che il valore del frame rate sia sempre uguale a quello dell'aggiornamento) le cose possono solamente migliorare, ma da 70-75 frames in poi sara' comunque difficile distinguere la differenza.(almeno stando agli studi della Lucas film).
TEORIA:
Dunque in base a quello analizzato fino ad ora si deduce che:
Per avere una fluidita' ottimale il refresh deve essere impostato ad un valore sotto il quale il frame rate non scende mai. Naturalmente partendo da un valore minimo di 60.(il v-sync deve essere attivato) Facendo questo il valore dei frames e quello del refresh sara' sempre lo stesso (il v-sync attivato limitera' gli eccessi) e la fluidita' sara' perfetta.
esempio 1:
Allora, io ho un gioco ( nolf2) che nella peggiore delle ipotesi mi viaggia a 86 frames. Applico la regola suddetta , individuo il frame rates minimo(86) e imposto il refresh ad un valore sotto il quale il frame rate non scendera' mai, cioe' 85hz.(il v-sync deve essere attivato) poiche' il gioco non scende mai sotto gli 85 frames il refresh non rimarra' mai con aggiornamenti vuoti (85 aggiornamenti riempiti da 85 frames) il risultato sara' l'immagine piu' fluida ottenibile dal mio computer. Se io infatti avessi impostato un valore di refresh di 100hz quei 14 aggiornamenti mi sarebbero rimasti vuoti con conseguente scatto dell'immagine. Proprio sul presunto scatto che l'immagine compie quando il frame rate ha un valore inferiore a quello del refresh ho avuto molte contestazioni da vari utenti, quindi ho deciso di passare all'atto pratico.
PRATICA:
Prendete la demo di quake 3 e scaricatevi fraps (un conta-frames) a questo indirizzo http://www.fraps.com/download.htm ora andate su proprieta'-impostazioni-avanzate-openGl e impostate la voce "attendi sync verticale" su "sempre attivato" lanciate fraps e poi lanciate la demo di quake3 impostando una risoluzione bassa e il refresh del monitor a 60hz. Lanciate multiplayer-create-q3tourney2-next-fight (in questo modo sarete soli nell'arena selezionata) ora lasciate stare il mouse e giratevi attorno con il tastierino, dovreste avere un frame rate inchiodato a 60 (in caso contrario spostatevi in un punto dove rimane costantemente a 60) Quella che avrete davanti e' la fluidita' perfetta, non si vede uno scatto e tutto fila liscio come l'olio.
60 aggiornamenti coperti da 60 frames.Bene, adesso uscite dal gioco e andate sul pannello di controllo openGl della scheda video, attivate lo smoothvision a 6x e il filtraggio anisotropo a 16x spostate anche i livelli di dettaglio su massima qualita'. Adesso lanciate quake 3 a 1600x1200 impostando tutti i dettagli al massimo e tornatevene nella mappa di prima,cercate un punto dove girandovi intorno con il tastierino il frame rate non sia fisso a 60 ma che comunque mantenga tale valore per buona parte del "giro su voi stessi" (davanti alla colonna "cibernetica" di q3tourney2 per esempio) ecco che nel momento esatto in cui il frame rate scende sotto i 60 frames vedrete uno schifosissimo scatto (o piu' di uno).La prova la potete fare anche a 85hz basta che manteniate i parametri suddetti inalterati (cioe' che nel primo caso il frame rate girandovi con il tastierino numerico mantenga gli 85 fissi e nel secondo solamente per il 90% della durata del "giro")
La mia vuol essere solamente una puntualizzazione, perche' capisco benissimo che in certi casi servano refresh piu' alti e v-sync desincronizzati per avere velocita' piu' alte a scapito della qualita' di immagine.
Tutti noi sappiamo che quello che vediamo sul monitor quando giochiamo ad un videogame e' la combinazione di due processi separati e ben distinti dati rispettivamente dalla scheda video e dallo stesso monitor.
La scheda video in base alla propria potenza di calcolo, invia al monitor una serie variabili di fotogrammi (frames) ogni secondo. Il monitor dal canto suo visualizza questi frames in base
al valore di refresh impostato. Il refresh non e' altro che il tempo necessario al monitor per completare un frame . Se quest'ultimo completa l'immagine in 1/85 di secondo il valore di refresh sara' di 85hz e i frame visualizzati su schermo in un secondo saranno 85 (sempre considerato che la scheda video riesca a fornirglieli).Naturalmente per avere una immagine stabile occorre che i frames inviati dalla scheda video e il refresh vengano sincronizzati, ovvero la scheda video deve attendere che il monitor abbia finito di aggiornare ogni singolo frames(v-sync attivato). Se invece il v-sync viene disattivato, la scheda non attendera' piu' che il monitor finisca di aggiornare i frames, ma sara' per cosi' dire libera di mandare a video tutti i frames che e' capace di generare. Il risultato di solito e' che il valore del frame rate finisce per superare quello del refresh dando vita ad un effetto sgradevole (effetto tearing). Dal canto suo si hanno problemi anche attivando il v-sync e impostando il refresh ad un valore irragiungibile dal frame rate, in questo caso l'immagine scatta.
Prendiamo ad esempio un valore impostato di refresh di 60hz (quindi il tempo necessario al monitor per aggiornare un frames sara' di 1/60 di secondo) e mandiamo a video una sequenza di 40 frames per secondo (quindi un frame ogni quarantesimo di secondo) . Abbiamo sessanta posti (dati dal refresh) ma solamente 40 potranno essere occupati (dai frames). I restanti 20 posti saranno semplicemente lasciati vuoti (e non ignorati come molti credono) il risultato sara' un bello scatto a video.Quello che e' importante sapere e' che il refresh non e' variabile e che comunque una volta impostato un valore quel valore verra' mantenuto per tutta la durata del ciclo (1 secondo) che ci siano frames da mostrare o meno. Nel caso in cui la scheda riesca a fornire i 60 frames necessari per occupare i 60 aggiornamenti (resi disponibili dall'impostazione a 60 hz) il risultato sara' una immagine dalla fluidita' perfetta. Certo che, aumentando il valore del refresh ( sempre ammesso pero' che il valore del frame rate sia sempre uguale a quello dell'aggiornamento) le cose possono solamente migliorare, ma da 70-75 frames in poi sara' comunque difficile distinguere la differenza.(almeno stando agli studi della Lucas film).
TEORIA:
Dunque in base a quello analizzato fino ad ora si deduce che:
Per avere una fluidita' ottimale il refresh deve essere impostato ad un valore sotto il quale il frame rate non scende mai. Naturalmente partendo da un valore minimo di 60.(il v-sync deve essere attivato) Facendo questo il valore dei frames e quello del refresh sara' sempre lo stesso (il v-sync attivato limitera' gli eccessi) e la fluidita' sara' perfetta.
esempio 1:
Allora, io ho un gioco ( nolf2) che nella peggiore delle ipotesi mi viaggia a 86 frames. Applico la regola suddetta , individuo il frame rates minimo(86) e imposto il refresh ad un valore sotto il quale il frame rate non scendera' mai, cioe' 85hz.(il v-sync deve essere attivato) poiche' il gioco non scende mai sotto gli 85 frames il refresh non rimarra' mai con aggiornamenti vuoti (85 aggiornamenti riempiti da 85 frames) il risultato sara' l'immagine piu' fluida ottenibile dal mio computer. Se io infatti avessi impostato un valore di refresh di 100hz quei 14 aggiornamenti mi sarebbero rimasti vuoti con conseguente scatto dell'immagine. Proprio sul presunto scatto che l'immagine compie quando il frame rate ha un valore inferiore a quello del refresh ho avuto molte contestazioni da vari utenti, quindi ho deciso di passare all'atto pratico.
PRATICA:
Prendete la demo di quake 3 e scaricatevi fraps (un conta-frames) a questo indirizzo http://www.fraps.com/download.htm ora andate su proprieta'-impostazioni-avanzate-openGl e impostate la voce "attendi sync verticale" su "sempre attivato" lanciate fraps e poi lanciate la demo di quake3 impostando una risoluzione bassa e il refresh del monitor a 60hz. Lanciate multiplayer-create-q3tourney2-next-fight (in questo modo sarete soli nell'arena selezionata) ora lasciate stare il mouse e giratevi attorno con il tastierino, dovreste avere un frame rate inchiodato a 60 (in caso contrario spostatevi in un punto dove rimane costantemente a 60) Quella che avrete davanti e' la fluidita' perfetta, non si vede uno scatto e tutto fila liscio come l'olio.
60 aggiornamenti coperti da 60 frames.Bene, adesso uscite dal gioco e andate sul pannello di controllo openGl della scheda video, attivate lo smoothvision a 6x e il filtraggio anisotropo a 16x spostate anche i livelli di dettaglio su massima qualita'. Adesso lanciate quake 3 a 1600x1200 impostando tutti i dettagli al massimo e tornatevene nella mappa di prima,cercate un punto dove girandovi intorno con il tastierino il frame rate non sia fisso a 60 ma che comunque mantenga tale valore per buona parte del "giro su voi stessi" (davanti alla colonna "cibernetica" di q3tourney2 per esempio) ecco che nel momento esatto in cui il frame rate scende sotto i 60 frames vedrete uno schifosissimo scatto (o piu' di uno).La prova la potete fare anche a 85hz basta che manteniate i parametri suddetti inalterati (cioe' che nel primo caso il frame rate girandovi con il tastierino numerico mantenga gli 85 fissi e nel secondo solamente per il 90% della durata del "giro")
La mia vuol essere solamente una puntualizzazione, perche' capisco benissimo che in certi casi servano refresh piu' alti e v-sync desincronizzati per avere velocita' piu' alte a scapito della qualita' di immagine.