News:

in collaborazione con:

Menu principale

Tearing, questo (s)conosciuto

Aperto da Turrican3, 21 Gennaio, 2014, 00:00:19

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Bluforce

A come la vedo io lo screen tearing non dipende dal frame rate.
Mi spiego meglio, i due giochi recenti che più mi hanno massacrato col tearing sono stati Dead Rising e GT5. Uno va a 30 e l'altro a 60.

Semplicemente in talune situazioni il motore grafico arranca e crea il tearing perché i frame escono dalla sincronizzazione con la frequenza video.

Su console quasi nessuno usa il V-sync perché le risorse GPU sono estremamente limitate e preferiscono usarle altrove.

Joe

Io ricordavo la stessa cosa che ho trovato su wikipedia, ma potrei/potremmo sbagliarci. Posso dirti solo cosa vede il mio occhio sul mio PC, i giochi che vanno veloci, senza vsync generano tearing, quelli lenti non mostrano tearing con o senza vsync attivo. :)

Il double/triple buffering non lo ricordo come un effetto che potesse generare problemi, semmai serve/serviva per velocizzare. Ma qui veramente stiamo parlando di cose che leggevo sulle riviste di 15 anni fa.  :notooth:

Joe

Citazione di: Bluforce il 21 Gennaio, 2014, 12:37:14
A come la vedo io lo screen tearing non dipende dal frame rate.
Mi spiego meglio, i due giochi recenti che più mi hanno massacrato col tearing sono stati Dead Rising e GT5. Uno va a 30 e l'altro a 60.

Probabilmente parliamo di diverse forme di tearing (ecco perché ho sempre specificato del tearing su PC), generate per ragioni diverse.

Turrican3

Io ho già scritto troppo a riguardo per i miei standard, non insisto anche perchè se si dovesse iscrivere chi-sappiamo-noi mi massacrerebbe (e avrebbe ragione :bua:) nel vedermi scrivere di cose delle quali non ho esperienza diretta/pratica. :ciao:

Joe

Ah beh, io parlo solo per quel che ricordo sulle riviste dei "bei" tempi delle schede 3D su picchio.  :asd:  Potrebbero essere cambiate tante cose, o semplicemente ricordo male.

Frozzo

Citazione di: Turrican3 il 21 Gennaio, 2014, 12:10:00
Dovrei fare un disegnino per spiegare come l'ho capita io... comunque in buona sostanza (sempre come l'ho capita io eh? :D) con il vsync disattivato di norma noti il tearing perchè mandi a video un'immagine che "non ha fatto in tempo" ad essere aggiornata interamente, il che significa che ti ritrovi con due pezzi: una parte del frame precedente e una di quello successivo.

E' vero in parte, il V-Sync impone al motore grafico di aspettare che il frame in elaborazione venga completato prima di passare all'altro, è una sorta di controllo aggiuntivo se vuoi, ma se lo disattivi non necessariamente il gioco flickera o desynca e genera tearing perchè appunto non è detto che tu mandi a video un frame spezzato, credo si possa temporizzare il tutto, o almeno questo è quello che ho capito dall'esperienza su pc, quello che non so è di quanto influisca il V-Sync sugli fps :/

Turrican3

Volevo fare il disegnino ma sono un po' incasinato quindi vediamo se ci riesco col semplice testo.

Io l'ho capita così, e lasciamo fuori dal discorso tecnologie come G-SYNC perchè mi/ci complicherebbero la vita e soprattutto la spiegazione. :D

Allora, da un lato abbiamo un monitor/tv con una certa modalità video impostata. Per semplicità diciamo 1280*720, 60hz, progressive scan.
Ogni 1/60mo di secondo l'elettronica che gestisce l'uscita video del PC/console/quel-che-volete andrà a pescare da qualche parte quello che deve essere visualizzato sul suddetto monitor/tv. Ogni volta che viene completata la visualizzazione di un'immagine "completa" viene generato un segnale, detto vertical blanking o vsync o [forse ci sono ulteriori terminologie].

Dall'altro lato abbiamo... il PC/console/quel-che-volete.
E il PC/console/quel-che-volete può scegliere tipicamente due strade: sfruttare il vsync o ignorarlo.

Se si sfrutta il vsync si va tranquilli: si istruisce il processore grafico a sputare a video un nuovo frame in sincronia con il suddetto segnale; se però il nuovo frame per qualsivoglia motivo non è "pronto" si dovrà aspettare il successivo segnale di vsync (nell'esempio, arriverà dopo 1/60mo di secondo ovvero dopo circa 16 millisecondi). Niente tearing.

I problemi iniziano se non si utilizza il vsync. Sostanzialmente il PC/console/quel-che-volete può fare quel che gli pare, il che significa che con buonissima probabilità il suo "passo" non sarà lo stesso scandito dal vsync. Potrà quindi accadere che si andrà a pescare dalla memoria quel che deve essere inviato a video troppo prima (o troppo dopo) che l'engine avrà finito di ridisegnare un frame per intero. Con la conseguenza che a display noteremo parte di uno e parte dell'altro.

In soldoni, se ogni stanghetta verticale è, dal lato PC il completamento di un frame e dal lato video il plurimenzionato segnale di vsync:

CON VSYNC

PC/cons. _____|_____|_____|_____|_____|...

video _____|_____|_____|_____|_____|...



SENZA VSYNC

PC/cons. ___|______|______|_______|___|...

video _____|_____|_____|_____|_____|...


Si può notare immediatamente come il "grafico" della riga del video sia il medesimo in entrambi i casi, dato che si tratta di un andamento costante e definito dagli standard.

Spero di non aver scritto un numero eccessivo di vaccate. :asd:

Parsifal

E' una tua creazione il "grafico"?  :hihi:

Turrican3

#23
Chiamarlo disegnino è fin troppo generoso da parte mia. :bua:

Bluforce

Quindi sostanzialmente il tearing sbuca fuori a prescindere dal frame rate (pacifico che fosse 30 fissi o 60 fissi non si avrebbe tearing, giusto?), quando il motore grafico va in sofferenza (ed infatti se ben ricordo compare maggiormente quando ci sono movimenti repentini della telecamera del gioco). Anche se a far spuntare il tearing in giochi sotto i 60 frame a quanto vedo bisogna impegnarsi ben benino..
O non c'ho capito niente?

Ed in ciò c'entra mica CoD PS4 ed i suoi problemi di stuttering a causa del fatto che va a più di 60 frame e quindi alcuni frame vengono saltati provocando una sorta di rallentamento dell'immagine?

Turrican3

#25
Citazione di: Bluforce il 22 Gennaio, 2014, 12:03:48Quindi sostanzialmente il tearing sbuca fuori a prescindere dal frame rate

Se non ho capito male dipende tutto dal vsync: il punto è "stargli dietro", se questo non accade il rischio di andare fuori sincronia è elevatissimo* e spuntano i "due" frame incompleti con l'odiosa riga di separazione.

* = a meno che non esistano altre forme di sincronismo che mi sono però sconosciute... :ciao:


EDIT il succo del discorso, per semplificare ulteriormente, è che le due "entità che si parlano" sono l'una funzionante a frequenza fissa mentre l'altra non lo è necessariamente. Per questo motivo il famigerato G-sync citato è una mezza rivoluzione: perchè rende variabile (ergo adattabile/flessibile!) ciò che oggi è costante, ovvero la frequenza con cui si "vanno a pescare" i pixel da mandare a video.

Joe

#26
Complimenti per la chiara e semplice spiegazione.  :sisi:

Detto questo, continuo a testimoniare che sui miei PC ho sempre visto problemi di tearing solo nei titoli che vanno dai 60 fps su (senza Vsync attivo). Sarà sicuramente un caso, perché la tua spiegazione ha assolutamente senso, oppure la gestione è leggermente diversa e migliorativa all'interno del driver stesso della scheda video (e che su console magari non c'è). Difatti il V-sync lo tengo quasi sempre disabilitato nei giochi che vanno mediamente sui 30 (o meno) fps, perché non riscontro problemi di tearing.

Turrican3

Denghiu, ma ribadisco il disclaimer di prenderla con le pinze: per quanto si tratti di roba a me nota da secoli grazie ai bei tempi dell'Amiga potrebbe non essere del tutto "attuale" (e/o corretta :bua:).

In materia di migliorìe/novità ad esempio a me non perfettamente chiare ci sarebbe da citare il triple-buffering ma evito perchè qua davvero direi SOLO caxxate, sconoscendone del tutto il funzionamento (o meglio, l'ho letto sia su wikipedia che altrove ma ci sono troppe cose che mi sfuggono ergo evito)