Le più importanti tecnologie di post-processing nei giochi

Dall'anti-aliasing all'Anisotropic Filtering, scopriamo le tecnologie di post-processing alla base dei giochi moderni.

Le più importanti tecnologie di post-processing nei giochi
Articolo a cura di

Chi non ha mai sentito parlare di Post-Processing? Il termine indica l'insieme delle tecniche per migliorare le immagini 2D o 3D, in seguito all'elaborazione o riproduzione delle stesse. Con il passare del tempo, con l'evolversi delle tecnologie e con l'incremento della bruta forza di calcolo delle schede video dedicate, è aumentata direttamente la possibilità di aggiungere filtri d'immagine ed effetti particolari ai fotogrammi elaborati. Questo ha dato vita ad una sempre più importante diffusione nell'utilizzo degli effetti di Post-Processing. Infatti, le tecniche al momento sono molte e possono differire significativamente l'una dall'altra in termini di resa qualitativa, pesantezza di calcolo e semplice utilità o gusti personali. In questo speciale andremo quindi ad analizzare e illustrare singolarmente le tecniche più diffuse di Post-Processing, comunemente attivabili dal pannello delle configurazioni video dei driver e dei giochi.
Per le immagini di riferimento abbiamo usato due giohi di ultima generazione, ovvero  Deus Ex: Human Revolution e The Witcher 2.

Anti Aliasing (AA)

L'Anti-Aliasing è probabilmente la tecnica più conosciuta di Post-Processing. La sua funzione è di eliminare le varie scalettature dovute ai pixel (il cosiddetto effetto "alias") che si vengono a creare quando si visualizzano poligoni di vario tipo, specialmente a basse risoluzioni. Indubbiamente l'AA è uno dei processi che più possono impattare sulle prestazioni, ma esistono diverse metodologie che differiscono per pesantezza, metodo di esecuzione ed efficacia. In generale il ocncetto di abse di qualsiasi AA è che, essendo N il livello di qualità selezionato (es. 2X, 4X e così via), il processo campiona esattamente N volte il colore di un singolo pixel, restituendo a schermo la media colore di un intorno. Andiamo ora ad analizzare tutti i tipi di AA più diffusi:

Super Sampling Anti Aliasing (SSAA): Il Super Sampling è il primo tipo di AA sviluppato; con questo processo si riescono a ottenere i migliori risultati in resa grafica, ma il prezzo in termini di prestazioni è troppo elevato. In pratica la media colore viene calcolata sulla maggior parte dei pixel a schermo, inclusi diversi punti interni chiamati sub-pixel. E' detto anche Full Screen Anti Aliasing (FSAA).


Comparativa SSAA (Clicca per ingrandire)

Multi Sampling Anti Aliasing (MSAA): A differenza del Super Sampling, con questo processo vengono campionati esclusivamente i bordi dei poligoni e non il loro interno, riducendo drasticamente il carico di lavoro pur mantenendo le migliorie più evidenti che porta il supersampling. Questo però genera degli errori di troppo laddove vi siano poligoni trasparenti, lasciando l'alias immutato (per compensare esiste anche un tipo specifico di AA detto Transparency). In ogni caso il Multi Sampling è attualmente il processo di AA più utilizzato.


Comparativa MSAA (Clicca per ingrandire)

Vi riportiamo infine la comparativa al dettaglio tra SSAA e MSAA, in cui si nota l'applicazione del filtro rispettivamente su tutti pixel dell'immagine e solo sui bordi:


Comparativa SSAA / MSAA (Clicca per ingrandire)

Fast approXimate Anti Aliasing (FXAA): Questo tipo di AA, sviluppato solo di recente, differisce completamente dagli altri. Al posto di numerosi calcoli e un maggior carico di lavoro sulla scheda grafica, si processa un semplice e molto leggero effetto sfocatura su tutta l'immagine, rendendo i bordi dei poligoni più omogenei ed eliminando in parte le scalettature. L'FXAA, veloce e in certi casi più efficace dei metodi tradizionali, evidenzia un particolare difetto, generalmente fastidioso per gli utenti più accorti, ovvero una slavatura -anche pesante- della definizione delle texture.


Comparativa FXAA (Clicca per ingrandire)

MorphoLogical Anti Aliasing (MLAA): Di proprietà di AMD, il MLAA è un altro tipo di AA funzionante secondo tre criteri principali: ricerca di punti di discontinuità tra i pixel in una data immagine, identificazione dei modelli poligonali e unione dei colori adiacenti. Sostanzialmente il funzionamento è simile a quello del Multi Sampling, con la differenza che si procede ad eliminare le scalettature sui bordi dei poligoni andando a individuare precedentemente le forme degli stessi, a cui verrà poi applicato il filtro. Essendo di proprietà unica di AMD la pesantezza e l'efficacia dello stesso sull'immagine può variare molto a seconda del gioco in cui viene applicato e della scheda video utilizzata. In generale abbiamo comunque notato che in movimento, questo tipo di AA rende a volte peggio delle alternative.


Comparativa MLAA (Clicca per ingrandire)

Vi riportiamo infine la comparativa finale tra FXAA e MLAA:


Comparativa FXAA / MLAA (Clicca per ingrandire)

Subpixel Reconstruction Anti Aliasing (SRAA): Il SRAA è la risposta di Nvidia al MLAA. Attualmente ancora in fase di sviluppo, il processo ricalca quasi esattamente la controparte AMD utilizzando lo shading su singolo pixel e la visibilità dei sub-pixel, ma cerca di migliorarlo. La casa verde dichiara che grazie alla miglior gestione dei limiti geometrici indipendenti dalla complessità dell'immagine si avranno risultati superiori; ovviamente per ora prendiamo queste dichiarazioni con le pinze. Trovate la spiegazione completa in inglese qui.

Scaling e Anisotropic Filtering

Scaling
Lo scaling è una tecnica comunemente integrata nei televisori e monitor che permette di ingrandire o rimpicciolire l'immagine per adattarla alla risoluzione nativa del pannello. Questo è uno dei processi di Post-Processing più primitivi e solitamente è richiamato quando si renderizzano immagini o video a risoluzione inferiore a quella nativa -cosa che solitamente si fa in mancanza di potenza da parte della scheda grafica. Lo scaling può essere eseguito secondo varie metodologie, alcune migliori di altre; questo dipende esclusivamente dal chip integrato nel monitor, detto scaler. In qualsiasi caso, lo scaling effettuato per aumentare la dimensione dell'immagine, impatta spesso in maniera molto negativa sulla sua qualità finale. A meno di non avere un monitor o una tv con uno scaler di eccelsa qualità, l'utilizzo di questa pratica è caldamente sconsigliato. Cercate sempre di visualizzare giochi o video alla risoluzione nativa del vostro pannello per avere una resa più nitida e definita possibile.


Anisotropic Filtering (AF)
Il filtro anisotropico risale a parecchi anni fa ed è tuttora utilizzato in qualunque gioco. Questo processo permette di migliorare la qualità delle texture poste su superfici con angolazione diversa rispetto al punto di osservazione. Così come i filtri di natura lineare, l'anisotropico è utile per ridurre l'aliasing e per mantenere le proporzioni corrette delle texture in base alla prospettiva del soggetto, con la differenza che risulta più efficace sfruttando calcoli su forme ellittiche e non circolari. Avendo un impatto praticamente ininfluente sulle prestazioni dei PC di oggi, è sempre utile adottare un filtro anisotropico piuttosto che lineare, bilineare o ancora trilineare per non incappare in orrende texture sproporzionate che potrebbero rovinare la scena complessiva.


Comparativa AF (Clicca per ingrandire)

SSAO, HDR e Bloom

Screen Space Ambient Occlusion (SSAO)
Lo Screen Space Ambient Occlusion è utilizzato per aumentare il realismo riguardante i riflessi dei modelli riducendo o incrementando l'ammontare d'illuminazione sulle loro superfici. Il funzionamento si può riassumere brevemente: tracciando raggi in ogni direzione della superficie da illuminare, quelli che raggiungono lo sfondo o il cielo ricevono un incremento di luminosità, viceversa quelli che sono circondati da svariati oggetti non subiranno cambiamenti e risulteranno così ancor più in ombra. Lo SSAO è generalmente un effetto molto pesante da calcolare e che impatta in maniera decisiva sulle prestazioni.


Comparativa SSAO (Clicca per ingrandire)

L'HDR (High Dynamic Range) è utilizzato nei rendering delle immagini 3D per migliorare in modo significativo la qualità complessiva dell'immagine, aumentando l'intervallo tra il valore minimo e quello massimo d'illuminazione in determinati range e prendendo diversi livelli di esposizione come riferimento, mettendoli insieme in un'unica immagine. Questa tecnica viene sfruttata per riprodurre in modo migliore le luci e le ombre e per accentuare i colori in brillantezza e saturazione. Un effetto molto famoso che accompagna un uso efficace dell'HDR è il cosiddetto Eye Shutter (ma chiamato anche in altri modi), che simula l'impatto che una variazione improvvisa di luce ha sulle pupille al passaggio tra due ambienti illuminati diversamente.

Bloom
L'effetto Bloom mira a riprodurre un artefatto grafico tipico delle riprese o degli scatti reali, ovvero il bagliore della luce sulle superfici più scure su cui essa impatta. Questo genera un effetto sfocatura intorno all'oggetto, andando a creare una scena più realistica e "familiare" all'occhio umano, seppur meno definita in senso stretto. Anche questa tecnica ormai viene adottata da quasi tutti i giochi di ultima generazione, che tuttavia la implementano a volte in modo un po' troppo evidente.


Comparativa Bloom + HDR (Clicca per ingrandire)

Ormai questi due effetti engono sempre di più usati assieme e non siamo riusciti a trovare un titolo che permettesse di disabilitarne uno, lasciando l'altro attivo e viceversa. Per questo nell'immagine sopra trovate la comparativa dei due effetti insieme.

Depth of Field, Motion Blur e Vsync

Depth of Field (DoF)
Il Depth of Field, o profondità di campo in italiano, è la parte davanti e dietro al soggetto messo a fuoco, la cosiddetta "sfocatura". Questo effetto è utilizzato nelle scene 3D per incentrare l'attenzione su qualcosa di particolare e mettere in ombra il resto. Viene molto utilizzato negli FPS moderni quando si prende la mira verso qualcosa o qualcuno: il soggetto puntato rimane nitido e ben visibile ma andando verso i bordi dello schermo l'immagine tende a sfumare sempre di più. Esistono diversi tipi di DoF, ma in sostanza ne troviamo due categorie: quello statico e quello dinamico. Quest'ultimo, appannaggio delle sole DirectX 11 si può definire come vero e proprio effetto a tutto campo, dato che varia dinamicamente seguendo la profondità effettiva degli ambienti poligonali. L'altro invece è quello che ritroviamo più spesso in tutti i titoli pensati per librerie più vecchie ed applica una sfocatura che varia sempre allo stesso modo, indipendentemente dalla visuale e dallo scenario, usata spesso per nascondere pesanti artefatti grafici nella gestione generale del Draw Distance che generalmente accompagna una scarsa potenza di calcolo.


Comparativa DoF (Clicca per ingrandire)

Motion Blur
La tecnica del Motion Blur è utilizzata per conferire all'ambiente circostante o al soggetto, un'apparenza di movimento durante le singole immagini, o per conferire una maggior immersione del giocatore durante le scene renderizzate. Si pensi ad esempio a un classico gioco di guida: il Motion Blur in questo caso aiuta a conferire a ciò che circonda il punto di vista del soggetto, un effetto sfocatura simile a quello che accade nell'occhio umano quando l'attenzione viene focalizzata su un singolo punto, aumentando l'impressione di velocità e di movimento.


Comparativa Motion Blur (Clicca per ingrandire)
Nota: le immagini sono state prese mentre ci spostavamo velocemente con il mouse sull'asse orizzontale

Vertical Syncronization (Vsync)
La Vertical Synchronization non è un vero e proprio effetto di Post-Processing. Infatti non produce migliorie dal punto di vista grafico ma impedisce la comparsa del cosiddetto tearing. Il Tearing è un difetto che si viene a creare nel momento in cui la scheda grafica elabora un numero troppo elevato di frame al secondo sul vostro schermo, portando alla comparsa d'immagini spezzate e linee orizzontali più o meno visibili. Questo problema accade perché lo schermo e la scheda grafica non riescono a sincronizzarsi, quindi mentre il monitor è impegnato a visualizzare un frame appena calcolato, si ritrova a dover visualizzare il prossimo senza aver ancora finito il primo. Il Vsync previene tutto questo facendo elaborare alla scheda un numero di frame massimo pari alla frequenza di aggiornamento del pannello.

Esempio di Tearing (Clicca per ingrandire)

Tecnologie di Post-Processing Attualmente abbiamo una vasta scelta di tecniche di Post-Processing: l’appagamento visivo è aumentato molto dai tempi dei classici, proporzionalmente alla richiesta hardware per goderne appieno. La maggioranza di questi effetti porta significative migliorie che, se mal sfruttate, possono far crollare le prestazioni del vostro sistema e risultare superflue. Tecniche come l’AA, lo SSAO e il Vsync possono ridurre drasticamente le prestazioni in-game se impostate con poco criterio. Non pensiate che solamente perché possedete il non-plus-ultra delle configurazioni PC, ciò vi permetta di ignorare il modo in cui queste tecnologie funzionino: un processo di Super Sampling o Multi Sampling impostato a 16X ammazzerebbe le prestazioni di qualsiasi piattaforma da gioco, indifferentemente da quali componenti sia essa composta, oltre a non farvi notare nessuna -o quasi- miglioria grafica rispetto ad altri settaggi meno aggressivi, in dipendenza della risoluzione di esecuzione del gioco. In aggiunta, bisogna dire che è sempre preferibile impostare i filtri dai menu dei singoli videogames piuttosto che dal pannello dei driver della vostra scheda, in quanto le ottimizzazioni grafiche fatte dai programmatori vi faranno perdere sempre meno prestazioni di quelle generiche. Ora che sapete come le varie tecniche funzionano e a cosa servono, siamo sicuri che ne beneficerete ottimizzando appieno la resa grafica e le prestazioni dei vostri giochi, evitando problemi di prestazioni -potenza del PC permettendo- dovuti all’erroneo uso delle tecniche di Post-Processing.