Autore Topic: Tearing, qualche chiarimento  (Letto 10784 volte)

0 Utenti e 1 visitatore stanno visualizzando questo topic.

Offline Schubert

  • Veterano
  • ****
  • Post: 2.720
  • Shuuberuto, SEGA
Tearing, qualche chiarimento
« il: 15 Dic 2011, 14:36 »
Avrei bisogno di una spiegazione da parte di chi ne capisce più di me di queste cose. Ho notato che il tearing, nei giochi che presentano questo problema, può essere accentuato o può al contrario diminuire fino a scomparire a seconda del tipo di uscita video e della risoluzione.

Premetto che ho due 360, una collegata ad un televisore full hd via hdmi a 1080p, l'altra ad un tv hd ready via vga oppure component (non ha l'ingresso hdmi), di solito vga perchè ha una resa migliore. Skyrim in hdmi 1080p non presenta tearing, mentre sull'altro televisore con component 720p ho un leggero tearing, idem su vga su tutte le risoluzioni (con alcune, quelle basse, è più accentuato) ad eccezione di 1280x720, ma solo se imposto i "livelli di riferimento" su intermedio. Con espanso ho un po' di tearing. Questa cosa in particolare mi è totalmente oscura. Cosa c'entra la gamma di colore con il tearing?

Con Dead Island, che ha un tearing molto più accentuato rispetto a Skyrim, su hdmi 1080p il problema è molto limitato, mentre sull'altro televisore è molto più frequente e come in Skyrim aumenta/diminuisce a seconda della risoluzione.

Da cosa dipende esattamente il tearing? C'entrano eventualmente anche i settaggi del televisore oppure dipende solo da risoluzione e tipo di uscita video?

Grazie  ;D

Offline UnNamed

  • Condottiero
  • ******
  • Post: 8.217
  • GRLSVT
Re: Tearing, qualche chiarimento
« Risposta #1 il: 15 Dic 2011, 14:48 »
Il tearing dipende dal refresh del televisore.
Detto semplicemente quando viene renderizzato il primo frame, il motore grafico inizia a renderizzare il secondo a seconda della frequenza Hz del gioco (50, 60) ecc. I televisori spesso hanno una frequenza inferiore o superiore (59,97, 100, ecc) o leggerissimamente incostante, per cui anche se la console spara a video il secondo frame può capitare che il primo sia ancora presente. L'effetto è quello di una immagine tagliata in due, nel punto dove si trova il pennello di refresh.

Il problema viene risolto con il v-sinc e triplo buffer. Il primo inchioda il rendering alla frequenza del televisore o un suo multiplo , il secondo invece manda l'immagine in un buffer e la spara a video solo quando è completa.

Offline Schubert

  • Veterano
  • ****
  • Post: 2.720
  • Shuuberuto, SEGA
Re: Tearing, qualche chiarimento
« Risposta #2 il: 17 Dic 2011, 18:21 »
Ok grazie, allora la differenza che noto è dovuta ai televisori.

Offline Wis

  • Highlander
  • *********
  • Post: 67.279
  • Mellifluosly Cool
Re: Tearing, qualche chiarimento
« Risposta #3 il: 19 Dic 2011, 10:33 »
Dubito fortemente che il tearing sia dovuto ai televisori, piuttosto è il contrario, ovvero che il gioco non riesce a stare dietro all'output del buffer video che va al televisore (che è a frequenza necessariamente fissa e sempre uguale).
Ovvero una volta impostata una modalità video, sia essa RGB tramite VGA, o HDMI o Y/Pb/Pr tramite Component, la frequenza di trasferimento delle immagini dalla console alla TV sarà sempre quella impostata dal segnale video (siano essi 50 o 60Hz).
Il tearing viene prodotto proprio nel buffer video della console stessa, siccome viene inviato alla televisione anche se incompleto (ovvero viene inviata un'immagine composta in parte dal vecchio frame e in parte da quello nuovo).
Il V-Sync viene spento per preservare la fluidità anche quando il motore non riesce a stare dietro perfettamente al refresh video. In caso di sua presenza il gioco crollerebbe da 60 a 30 fps senza stadi intermedi. Per avere un framerate variabile non sottomultiplo del refresh è necessario avere un double buffering, ovvero utilizzare due buffer alternati dove riporre l'immagine in calcolo, in modo da non cancellare l'immagine precedente mentre stai renderizzando la successiva (e quindi eliminare i frame "spezzati").
In questo il cambio di televisione non dovrebbe comportare nulla. Il cambio di risoluzione d'uscita potrebbe invece essere determinante (1080p piutosto che 720p), e ancora la profondità del range cromatico non dovrebbe comportare nulla.
Skyrim e Dead Island sono giochi talmente incostanti e complessi che è facile che le tue impressioni siano viziate da come il gioco si comporta di volta in volta per motivi incomprensibili ma totalmente slegati dal collegamento video.
Professional Casual Gamer

Offline atchoo

  • Reduce
  • ********
  • Post: 49.364
  • Pupo
Re: Tearing, qualche chiarimento
« Risposta #4 il: 19 Dic 2011, 12:39 »
Per avere un framerate variabile non sottomultiplo del refresh è necessario avere un double buffering, ovvero utilizzare due buffer alternati dove riporre l'immagine in calcolo, in modo da non cancellare l'immagine precedente mentre stai renderizzando la successiva (e quindi eliminare i frame "spezzati").
Magari... Serve il triple buffering per fare quello che descrivi.
Un paio di link interessanti su vsync, triple buffering & C.:
http://www.anandtech.com/show/2794
http://www.tweakguides.com/Graphics_1.html
Penso che il triple buffering non sia così facilmente implementabile, per problemi di memoria, sulle console. Alcuni giochi PS3 lo prevedono, comunque.

Offline Wis

  • Highlander
  • *********
  • Post: 67.279
  • Mellifluosly Cool
Re: Tearing, qualche chiarimento
« Risposta #5 il: 19 Dic 2011, 15:37 »
Sì scusa, hai ragione.
Per double consideravo i due back buffer di calcolo, ma in tutto devono essere tre zone di memoria dove mettere l'immagine (e infatti si chiama triple, non double).
In pratica:
1) Front buffer (quello che appare a video)
2) Back buffer 1 (dove viene generato il frame che verrà swappato con il front buffer)
3) Back buffer 2 (utilizzato alternativamente al back buffer 1 per calcolare il frame)
Professional Casual Gamer

Offline The Fool

  • Eroe
  • *******
  • Post: 18.418
  • キャプテン・フューチャー
Re: Tearing, qualche chiarimento
« Risposta #6 il: 19 Dic 2011, 16:43 »
Sì insomma, il televisore non c'entra niente, dipende da come è programmato il software. Su PC puoi attivare il v-sync, su console no e ti tieni il tearing.
Like a hand of God

Offline Schubert

  • Veterano
  • ****
  • Post: 2.720
  • Shuuberuto, SEGA
Re: Tearing, qualche chiarimento
« Risposta #7 il: 19 Dic 2011, 19:06 »
Grazie per le risposte, a grandi linee penso di aver capito  :)

Offline ubiritan

  • Matricola
  • Post: 32
    • E-mail
Re: Tearing, qualche chiarimento
« Risposta #8 il: 13 Feb 2012, 15:21 »
Ma quindi è sconveniente attivare sia il v-sync che il triple buffering?

Offline Wis

  • Highlander
  • *********
  • Post: 67.279
  • Mellifluosly Cool
Re: Tearing, qualche chiarimento
« Risposta #9 il: 23 Feb 2012, 10:30 »
No, con il V-Sync attivato fondamentalmente eviti che vengano mandati al front buffer più fotogrammi di quelli che permette il refresh video.
Professional Casual Gamer

Offline ubiritan

  • Matricola
  • Post: 32
    • E-mail
Re: Tearing, qualche chiarimento
« Risposta #10 il: 23 Feb 2012, 11:11 »
No, con il V-Sync attivato fondamentalmente eviti che vengano mandati al front buffer più fotogrammi di quelli che permette il refresh video.

Ma, al fine di evitare il tearing, potrei anche limitarmi ad attivare solamente il triple buffering?
Da quanto ho capito, il fatto che l'immagine che stia renderizzando si trovi in un buffer separato rispetto a quella pronta per essere mandata a video dovrebbe evitare la visualizzazione di immagini composte da una parte dal nuovo rendering e l'altra con il vecchio.
Poi magari il monitor non riesce a star dietro alla frequenza con la quale aggiorno il buffer ma questo al limite mi farà perdere qualche fotogramma ma non mi genererà tearing.
E' così?

Offline Andrea_23

  • Eroe
  • *******
  • Post: 13.655
  • Ho un problema col copincolla
    • Ventitre's Lair
Re: Tearing, qualche chiarimento
« Risposta #11 il: 26 Feb 2012, 23:21 »
Il triple buffering funziona solo in congiunzione col v-sync : ).
.....f|0w
-----------. Steam ID|B.net

Offline atchoo

  • Reduce
  • ********
  • Post: 49.364
  • Pupo
Re: Tearing, qualche chiarimento
« Risposta #12 il: 27 Feb 2012, 10:04 »
Uhm... Su MAME puoi attivare il solo triple buffering e il tearing sparisce nel 99,9% dei casi. È comunque una conseguenza "indiretta", parlando in termini poco tecnici (del resto io tecnico non sono).

Offline Wis

  • Highlander
  • *********
  • Post: 67.279
  • Mellifluosly Cool
Re: Tearing, qualche chiarimento
« Risposta #13 il: 27 Feb 2012, 10:59 »
Da quanto ne so io puoi avere Triple Buffering anche senza V-Sync.
Se hai il Triple Buffering attivato senza il V-Sync non avrai tearing se hai cali di framerate sotto il refresh video, ma li avrai se sali sopra ad esso.
Esempio: refresh a 60Hz, gioco che renderizza 90 fps al secondo. Se hai il triple buffering ma non il V-Sync (che bloccherebbe il framerate a 60) avrai fenomeni di tearing.
Di fatto il Triple Buffering aggiunge solo un Back Buffer in più per immagazzinare quei frame che andrebbero persi se non ci fosse lo spazio per calcolarli.
Uno schermo a 60Hz si aggiorna ogni 0.016 secondi. Un gioco a 50 fps riesce a generare un frame ogni 0.02 secondi. Questo vuol dire che con il V-Sync attivato la GPU salterà un refresh del video e poi starà 0.012 secondi immobile con il frame completato ad aspettare il nuovo refresh. Basterebbero due di questi tempi morti per realizzare un altro frame (cosa che non avviene perché la GPU non sa dove metterlo). Il Triple Buffering dà lo spazio alla scheda video dove poter calcolare un nuovo frame ottimizzando questi tempi morti, oltre che, essendo 'indietro' di un frame calcolato (e infatti inserendo anche un minimo lag nella visualizzazione) permette di passare sempre il frame completo, debellando il tearing anche in assenza di V-Sync.
Spero che quanto ho scritto sia comprensibile. ^__^U

[EDIT] In parole povere: il Triple Buffer consente, attraverso l'aggiunta di un minimo lag, di avere lo stesso framerate che si avrebbe in assenza di V-Sync, ma senza tearing.
« Ultima modifica: 27 Feb 2012, 11:01 da Wis »
Professional Casual Gamer

Offline Andrea_23

  • Eroe
  • *******
  • Post: 13.655
  • Ho un problema col copincolla
    • Ventitre's Lair
Re: Tearing, qualche chiarimento
« Risposta #14 il: 27 Feb 2012, 20:42 »
Uhm... Su MAME puoi attivare il solo triple buffering e il tearing sparisce nel 99,9% dei casi. È comunque una conseguenza "indiretta", parlando in termini poco tecnici (del resto io tecnico non sono).

Evidentemente la voce che tu spunti nel mame include sia TP che V-sync : ). Una cosa è certa: il TP senza v-sync è utile come la forchetta nel brodo.
Rende il paragone? ^^
.....f|0w
-----------. Steam ID|B.net