Aliasing e tecniche di Antialiasing - Dizionario videoludico

Cosa vuol dire Aliasing, e perché le tecniche di Anti-Aliasing impattano così tanto sulle prestazioni, mettendo sotto stress le schede grafiche?




Innanzi tutto il termine aliasing non è ad esclusivo appannaggio del mondo videoludico ma interessa varie aree tematiche: audio, trasmissione dei segnali digitali, grafica, tipografia, e così via… Ovviamente essendo questo un sito dedicato ai videogame, la discussione riguarderà esclusivamente tale ambito.
Di seguito parto dalla definizione del termine per poi passare a fare degli esempi, e includere una panoramica sulle tecniche messe in piedi per limitare tale fenomeno. Senza tuttavia scomodare formule matematiche o termini troppo tecnici: l’obiettivo finale che mi interessa perseguire è rendere il giocatore cosciente di cosa sia l’aliasing al fine di scegliere, anche in base al proprio hardware, la tecnica migliore per contrastarlo. 
Spesso gli utenti pc si complicano la vita scegliendo filtri più pesanti del dovuto, e magari con impatti grafici trascurabili. In particolar modo si ignora che alcuni correttivi sono più adeguati per schede AMD e altri per le controparti NVIDIA. E leggendo alcuni commenti in rete ho il sentore che alcuni — probabilmente i più giovani — neanche modifichino i parametri base delle opzioni grafiche, accettando le impostazioni standard per non far danni o per pigrizia.

Una definizione semplice

L’aliasing — in generale — è un artefatto grafico che si crea nel momento in cui si decide di trasformare un segnale analogico in uno digitale, facendo leva su una banda di dati “insufficiente” (focalizzate il virgolettato perché ci tornerò presto nelle prossime righe).
Nell’ambito della grafica 3D questa magagna si palesa nel momento in cui ci rendiamo conto che le linee che dovrebbero essere curve in realtà sono rappresentate da spezzate, costituite da tanti piccoli gradini generalmente quadrati (detti pixel); non a caso l’effetto aliasing è spesso tradotto in italiano come effetto scalettatura (o anche gradinatura).
Perché in precedenza ho usato le virgolette?
In realtà tutte le immagini digitali sono costituite dai pixel che di norma (nel nostro ambito) sono quadrati; è possibile anche far uso di forme diverse (come gli esagoni). Ma si suole parlare di artefatto quando questa caratteristica si rende percepibile all’occhio umano, che di norma viene invece ingannato grazie all’uso delle alte risoluzioni. Se ingrandite le immagini ben riprodotte — o se visualizzate una fonte video su un dispositivo con una risoluzione maggiore — noterete dei quadratini che compongono i fotogrammi. Quindi le tecniche di antialiasing non eliminano questa caratteristica intrinseca, ma ne limitano l’impatto fino a non farcelo percepire.



Nei videogame per imitate l’effetto aliasing si usano diverse tecniche di anti-aliasing (spesso abbreviato con AA) che sforzano l’hardware, perché — oltre a riprodurre i vari fotogrammi — le schede grafiche sono costrette a computare algoritmi più o meno elaborati al fine di contrastare questo artefatto, ammorbidendo le linee delle immagini in vari modi (giocando con la prospettiva, la profondità di colore, renderizzando la risoluzione, ecc…).
Il tipo di correttivo scelto propone spesso anche più livelli di profondità (2x, 4x, 8x, 16x), migliorando ulteriormente il risultato al costo di ulteriori esborsi prestazionali. Un ulteriore variabile che incide sul carico hardware è l’area d’intervento: alcune tecniche si soffermano solo sui punti più delicati dell’immagine (i contorni), mentre altre lavorano sull’intero spettro.
Tutte le tecniche dell’elenco successivo possono essere raggruppate in due macro categorie: processi di rendering o metodi di post-processing. I filtri appartenenti al secondo gruppo non renderizzano l’immagine originale ad una risoluzione superiore (per calcolare il valore medio da associare poi al pixel di contorno) ma si limitano ad applicare dei correttivi (a immagine già renderizzata) per manipolare solo alcune caratteristiche.
Uno dei vantaggi di giocare ad alte risoluzioni (ad esempio in 4K) è il non dover far più uso di tali accorgimenti. Certo, riprodurre un filmato in 4096×2160 pixel (o in Ultra Hd, limitandosi ai “soli” 3840×2160 pixel) comunque richiede un hardware ancora più costoso che limitarsi ad esempio al full-hd accoppiato ai vari filtri anti-aliasing.
Bando alle ciance e vediamo quali sono — e cosa fanno in pratica — le varie tecniche messe in piedi per contrastare l’effetto scalettatura.

Aliasing e tecniche di Antialiasing - Dizionario videoludico


Full scene Anti-Aliasing (FSAA): 

Questo filtro ormai non viene più applicato nei videogame, a causa dell’ingente mole di calcoli richiesta; ma lo si incontra tutt'ora nel rendering di immagini fotografiche.
La tecnica si concentra sulla determinazione della tonalità da assegnare al pixel che dimora nel limbo tra due oggetti, analizzando i colori dei pixel circostanti.
In pratica il pixel interessato viene diviso in quattro sotto pixel, e la sfumatura di ognuno di essi è determinata in parte dal colore dell’originario pixel e in parte dalla tonalità del pixel ad esso direttamente adiacente.

Supersampling (SSAA): 

Questa tecnica — nella sua versione standard — è una delle prime prove ideate, ed è molto pesante in termini di risorse hardware necessarie. Invece di agire su determinate aree più problematiche renderizza tutta l'immagine ad una risoluzione superiore a quella nativa, sfruttando il maggior numero di pixel per smussare i contorni, e infine riscala il prodotto alla risoluzione originale (downscaling).
In base al livello di profondità scelto — ad esempio 4x — il supersampling scinde un pixel in più sotto pixel (qui abbiamo ipotizzato 4 sub-pixel), quindi calcola un valore medio finale per il futuro pixel agendo su più variabili (colore, shader, trasparenze, texture, ecc…).
Per rendere meno vaga l’idea mi soffermo su una delle variabili interessate, il colore. Immaginate di visualizzare un tronco d’albero marrone su un fondale verde (la vegetazione circostante). Diamo per scontato che siamo in presenza di aliasing e applichiamo un SSAA di livello 4 (4x): questa tecnica sfrutterà i 4 sotto pixel in più (in cui è stato scisso il pixel originale, quindi c’è stata una moltiplicazione, non fatevi ingannare dalle parole) per fare in modo di rendere più omogenea la tonalità di contorno tra il marrone e il verde, attenuando così l’aliansing.
Il problema di questa tecnica è il peso computazionale che rischia di compromettere la fluidità del video in presenza di particolari effetti speciali. Ad esempio se una sequenza è interessata da effetti particellari (legati a fumo e/o esplosioni) si potrebbe incorrere in un drastico calo nelle prestazioni poichè l’SSAA sarà applicato sull’intero processo (effetto particellare incluso).
La variante più moderna è detta supersampling adattivo che applica la procedura ai soli bordi degli oggetti, riducendo di conseguenza la mole dei calcoli (sono così escluse anche le trasparenze).

Multisampling Anti-Aliasing (MSAA): 

E’ una sorta di rivisitazione più elegante e meno dispendiosa del supersampling adattivo, peraltro genera un risultato molto simile e pressoché non avvertibile dall’occhio.
Il procedimento è il medesimo della succitata tecnica, ma vengono scartati dal calcolo del valor medio i sub pixel che possiedono gli stessi valori per le varie variabili oggetto d’analisi (colore, ombreggiatura, texture e così via).
Ritornando all’esempio precedente (limitando l’analisi al solo colore): se due sub-pixel sono caratterizzati dalla stessa tonalità marrone, con il multisampling non vengono presi in esame giacché l’informazione sarebbe semplicemente duplicata.
Lo svantaggio è che la tecnica non viene applicata alle trasparenze, per poter limitare l’effetto è stato ideato MSAA adattivo.

Le soluzioni proprietarie di Nvidia AMD per applicare l’AA alle trasparenze

Lo svantaggio delle ultime due tecniche (SSAA adattivo e MSAA) risiede nel non potersi applicare alle trasparenze. Queste ultime sono delle texture bidimensionali che vengono inserite all’interno di un elaborato in 3D per non appesantire il lavoro delle schede grafiche nella gestione di effetti di ombre e luci su oggetti che in 3D sarebbero troppo complessi. Dovete infatti pensare ad ogni elemento grafico dello scenario come a una sequenza di tanti piccoli triangolini che lo compongono: alcune di queste immagini sono più complesse di altre da gestire e per non impattare sulla fluidità generale vengono elaborate solo in 2D. Vi faccio degli esempi così esclamerete: “Ah, ecco perché in quel gioco il foliage era in bassa definizione!”
Sicuramente avrete notato queste trasparenze con: le catene in Mad Max, le ringhiere in Mafia 3, la vegetazione di Fallout 4, e i cavi elettrici di Steep.
Bene su questi elementi in 2D non è possibile applicare le succitate due tecniche. Ad ogni modo le due aziende leader nel campo GPU hanno ideato dei loro filtri per intervenite a supporto di SSAA e MSAA proprio con le trasparenze.

  • NVIDIA ha elaborato il Transparency Adaptive anti-aliasing (TAAA) implementato dalla serie Ge-force 7xx, e declinato in due versioni: una per il multisampling (TrMSAA) e l’altra per il supersampling (TrSSAA).
  • AMD risponde con: Adaptive Anti-Aliasing per il supersampling, funziona soprattutto in DirectX 9; e Alpha to Coverage (ATOC) per il multisampling, agisce bene in DirectX 10 e 11.


Aliasing e tecniche di Antialiasing - LucullusGames


Temporal anti-aliasing (TXAA): 

E’ un filtro ideato da NVIDIA che sfrutta una commistione di tecniche diverse applicate a più fotogrammi; prende spunto dagli effetti di post-produzione applicati nel mondo cinematografico. Risulta quindi più efficace nelle scene in cui c'è molto movimento: cavalli lanciati alla carica, auto che sfrecciano su pista, ecc.…
Ritornando al nostro esempio dell’albero immerso nel verde, stavolta si tratta di limitate l’aliasing sul fogliame mosso dal vento: tra le varie operazioni verranno elaborate anche delle medie tra i pixel appartenenti a frame precedenti.
L'impatto sulla scheda grafica — rispetto ad altre tecniche — è decisamente meno marcato, ma anche il risultato finale è meno efficace. Inoltre il temporal anti-aliasing produce un marcato blurring. Il TXAA è supportato solo dalle gpu NVIDIA, da Kepler in poi.

Multi-Frame Sampled anti-aliasing (MFAA): 

Anche questo filtro è stato ideato da NVIDIA. E’ abbastanza recente, di fatto è disponibile solo per le gpu appartenenti alle famiglie Pascal e Maxwell.
L’idea alla base è quella messa in piedi dal multisampling, ma agli sviluppatori è concesso di intervenire sulle forme diverse dei gruppi di sotto pixel. Ma il vantaggio più interessante è riposto nella possibilità di allocare parte dell'informazione sulla ram di sistema, sgravando il peso che di norma viene caricato sulla vram (memoria della scheda grafica).
L’efficacia di questa tecnica dipende dalla volontà dei programmatori dei singoli giochi d’intervenire in maniera diretta: se dedicano un impegno aggiuntivo per elaborare degli interventi personalizzati il risultato è ottimo. Trattandosi però di un filtro proprietario, per giunta applicabile su una famiglia di schede ristrette, gode di una bassa diffusione.

Fast Approximate anti-aliasing (FXAA):

Altro filtro ideato da NVIDIA, caratterizzato da un basso impatto sulle risorse hardware. Questa tecnica rientra nella categoria dei filtri di post-processing. Lavora solo per via grafica (senza mettere in essere onerosi calcoli numerici), dando vita a un semplice algoritmo applicato solo sui bordi dell’immagine. A questi pixel di “confine” viene dunque applicata una semplice sfocatura, giocando sulla luminosità delle varie tonalità.
Il risultato finale risente dello specifico algoritmo implementato per individuare i contorni; non è efficace quanto il multisampling e il supersampling ma è più adeguato del TXAA.
Non essendo limitato a una famiglia di schede in particolare, gode di una buona diffusione nei motori grafici.

Morphological Anti-Aliasing (MLAA):

Filtro creato da AMD, rientra nella categoria delle tecniche di post-processing. Le operazioni messe in piedi si limitano all’area del colore. Vengono prima individuati i bordi degli elementi, poi vengono isolando i pixel adiacenti di colore differente, quindi viene calcolato un valor medio da associare al pixel finale. Attenzione: l’idea di fondo è simile a quella dell'MSAA, ma a differenza di quest’ultimo non c’è un sovra-campionamento che moltiplica il numero di dati (upscaling).
l'MLAA va però in crisi in presenza di contorni piuttosto spessi, che non vengono adeguatamente smussati. L’impatto sulle vram è molto basso.

Subpixel Morphological Anti-Aliasing (SMAA): 

Filtro sviluppato da Crytek, utilizzato per la prima volta in Crysis 3. L’idea alla base è la stessa dell’MLAA ma la software house tedesca ha introdotto un peso nella discriminazione di quali pixel scartare, e quali prendere in considerazione per individuare il colore corretto da associare al pixel per limitare l’aliasing. Il risultato finale è migliore del prodotto di AMD, e l’impatto sulle vram è basso. E’ spesso paragonabile al risultato che si ottobre con un MSAA in 2x. E’ poco diffuso, ma è possibile forzarlo con strumenti come injectSMAA.

Classifica delle tecniche più famose in base all'efficacia:
SSAA, MSAA
SMAA
FXAA,
MLAA
TXAA

Commento finale:

Abbiamo imparato che le tecniche di anti-aliasing non eliminano l’aliasing ma lo limitato, e che non tutte sono uguali. I metodi di post-produzione (FXAA, MLAA, SMAA) più che altro alterano le immagini, ergo il risultato è inferiore a quello ottenuto con processi elaborati in fase di rendering; d’altro canto consentono anche di limitare notevolmente il dispendio di risorse sulle schede grafiche. A seconda della risoluzione con cui volete giocare — e dell’hardware in vostro possesso — avete quindi diverse scelte a disposizione. Se non avete problemi di potenza computazionale la scelta più adeguata dovrebbe indirizzarvi su MSAA (SSAA è ottimo ma ormai è troppo pesante). Ma se siete alla ricerca di un buon compromesso tra qualità — e minor dispendio di risorse — allora potreste valutare anche SMAA, MLAA, FXAA. Evitate invece TXAA.
E se nel menù delle opzioni grafiche è presente una semplice voce del tipo “Antialias Si/No”?
Ciò può capitare sia in alcune produzioni indie che in porting pigri da giochi console. Non sappiamo in tal caso quale tecnica sia stata implementata con sicurezza, ma molto probabilmente avremo a che fare con FXAA o SMAA.


Fonte immagini: Google