AntiAliasing: tipologie, differenze e prestazioni delle tecniche di AA

L'anti-aliasing è una tecnica che può essere applicata tramite tantissime metodologie. Vediamo quelle più diffuse e convenienti.

speciale AntiAliasing: tipologie, differenze e prestazioni delle tecniche di AA
Articolo a cura di
Daniele Vergara Daniele Vergara viene alla vita con un chip Intel 486 impiantato nel cervello, a mo' di coprocessore. E' più che entusiasta di tutto ciò che riguarda la tecnologia intera e i videogames, con un occhio di riguardo verso l'hardware PC e l'overclocking. D'inverno ama snowboardare, macinando km e km di piste. Lo trovate su Facebook, Twitter e Google+.

Uno dei problemi più importanti della computer grafica applicata ai videogiochi è l'aliasing. Tale effetto può essere relativamente intenso e rende tutta la scena molto più "pixellata", facendo decadere notevolmente la qualità visiva. In genere più si aumenta la risoluzione e più l'aliasing diminuisce, ma il metodo più opportuno per ridurlo è sicuramente quello di utilizzare un apposito filtro. L'anti-aliasing può essere una tecnica complicata, e se non comprendete tutte le sue sfaccettature vi invitiamo a leggere il nostro speciale dedicato, che spiega nel modo più semplice possibile le basi di questo filtro. In questo articolo, invece, effettueremo una disamina delle principali tipologie di anti-aliasing, visto che oggi sono disponibili molte tecniche per affrontare questo problema. Ognuna ha i suoi svantaggi e i suoi vantaggi, da bilanciare in rapporto alle prestazioni offerte e all'incidenza sulla qualità grafica. Semplificando la loro classificazione, possiamo dire che i filtri anti-aliasing si dividono in due grandi categorie: i metodi tradizionali, che riescono a produrre un effetto migliore ma richiedono più risorse, e i metodi post processing, i quali applicano l'anti-aliasing dopo aver analizzato la scena, riducendo il carico computazionale ma portando un blurring generalmente più marcato.

Il supersampling (SSAA)

Il supersampling è il filtro anti-aliasing di concezione più vecchia di tutta la lista: si tratta di un metodo spaziale, che richiede una enorme potenza computazionale, specialmente nella variante non adattiva. Quello che fa il supersampling è renderizzare l'area di interesse ad una risoluzione più elevata, utilizzando poi i pixel extra per effettuare determinati calcoli e, infine, effettuare il downsampling per ritornare alla risoluzione originale. Il supersampling scinde un pixel in più sotto pixel (il numero dipende dal livello del campionamento), effettua una media sul colore, sugli effetti di shading, sulle texture e molto altro, affinché il singolo pixel possa apparire più "omogeneo" una volta che l'SSAA è stato applicato. La variante più arcaica del supersampling applica questo metodo a tutta l'immagine, il che si traduce in una richiesta enorme in termini di memoria grafica e di banda passante. Una versione più evoluta, chiamata supersampling adattivo, applica il tutto ai soli bordi degli oggetti, ovvero ove è necessario, riducendo enormemente la potenza computazionale richiesta.

Il multisampling (MSAA)

Il multisampling è un filtro anti-aliasing che, di concezione, si basa sulla stessa filosofia del supersampling, ma rispetto a quest'ultimo e più intelligente. L'MSAA, anziché effettuare la media su tutti i sotto pixel che compongono i bordi di un oggetto, evita di prendere in considerazione i sub pixel che possiedono le stesse caratteristiche di colore, di ombreggiatura, di texture e così via. Se due sotto pixel contigui sono infatti dello stesso colore è praticamente inutile applicare l'anti-aliasing, motivo per cui vengono tagliati fuori, facendo risparmiare preziose risorse. Il risultato visivo dell'MSAA è praticamente identico a quello del supersampling, ma consente al sistema di risparmiare capacità di calcolo. Per approfondire il funzionamento del supersampling e del multisampling vi rimandiamo al nostro speciale dedicato.

Il Temporal anti-aliasing (TXAA)

Il Temporal anti-aliasing è un filtro ideato da NVIDIA che prende spunto dagli effetti di post-produzione applicati nel cinema. Il TXAA utilizza filtri temporali, antialiasing hardware e tecniche di anti-aliasing derivate dal cinema per migliorare la qualità di visione. Per eliminare l'aliasing da uno specifico pixel, il TXAA utilizza campioni sia interni che esterni al pixel interessato, insieme a campioni dei frame precedenti, per poi andare a fare delle operazioni di media e di pulizia. Questa procedura consente al Temporal anti-aliasing di essere molto efficace soprattutto nelle scene in cui c'è tanto movimento: pensiamo a delle foglie che si muovono per il vento o a delle auto in corsa. A differenza del multisampling e del supersampling, l'impatto sulla scheda grafica del TXAA è molto meno marcato, ma il risultato finale è molto meno nitido. Il Temporal anti-aliasing è infatti famoso per produrre un blurring piuttosto elevato. Quando NVIDIA lo propose esso apparve rivoluzionario, ma col tempo ha perso l'appeal che l'ha contraddistinto durante i primi mesi dalla sua "presentazione". Il TXAA è supportato solo dalle schede grafiche NVIDIA, da Kepler in su.

ll Multi-Frame Sampled anti-aliasing (MFAA)

Il Multi-Frame Sampled Anti-Aliasing è il filtro di più recente concezione tra quelli mostrati in questa guida, e per questo non ancora troppo diffuso. Esso è stato introdotto da NVIDIA con le schede grafiche Maxwell, ed in effetti è compatibile attualmente solo con quest'ultima architettura e con Pascal. L'idea di base prende spunto dal multisampling, e consente agli utenti di attivare anche la Dynamic Super Resolution. La particolarità dell'MFAA è quella di offrire al motore grafico il campionamento di pixel dal pattern variabile. Il multisampling, ad esempio, rimuove le scalettature seguendo dei pattern fissi (campionando aree di forma fissa, ovvero quadrata, romboidale...), mentre con il Multi-Frame Sampled Anti-Aliasing questo non accade: gli sviluppatori possono programmare dei pattern personalizzati, che in alcune occasioni possono aumentare sensibilmente la resa e le prestazioni finali. Variando il pattern di campionamento si può, infatti, essere più precisi nell'applicazione dell'anti-aliasing, frame per frame. Un altro vantaggio dell'MFAA è che i dati dei pixel da campionare possono essere conservati nella memoria RAM, salvaguardando una preziosa fetta del buffer grafico. Si tratta di un'idea intelligente, in quanto il filtro anti-aliasing è noto per avere un grosso impatto sulla VRAM. La maggiore problematica dell'MFAA è che si tratta di un filtro anti-aliasing ancora poco diffuso, compatibile solo con le schede grafiche NVIDIA, la cui resa finale dipende molto dall'abilità degli sviluppatori.

Il Fast Approximate anti-aliasing (FXAA)

Con il Fast Approximate Anti-Aliasing si va nel campo delle tecniche post processing, in quanto i filtri visti fino a questo momento facevano parte della categoria tradizionale. L'FXAA è il terzo filtro anti-aliasing della lista ad essere stato ideato all'interno delle mura di NVIDIA, ed è famoso per il suo bassissimo impatto sulle prestazioni. È sicuramente la metodologia da preferire se desiderate che il vostro frame rate non scenda più di tanto. Il Fast Approximate AA dipende moltissimo dalla qualità dell'algoritmo per la ricerca dei bordi, in quanto lavora esclusivamente su questi ultimi. Una volta trovati i contorni, quello che fa è applicare un filtro di smoothing per addolcirli, proprio come fa ad esempio il software fotografico del sensore del vostro smartphone per sfocare la zona che non è messa a fuoco durante una macro. L'FXAA è uno dei pochi metodi ad agire direttamente per via "grafica", senza effettuare onerosi calcoli matematici a livello dei pixel. L'effetto non è chiaramente paragonabile a quello del multisampling (e, fra le tecniche della lista, è quella probabilmente meno efficace dal punto di vista visivo, se trascuriamo il TXAA), ma il compromesso è davvero molto valido ed è da preferire se non avete una scheda grafica potente. Altro vantaggio è che l'FXAA, per merito delle sue fattezze, è implementato e attivato in tantissimi motori grafici, conferendogli una diffusione davvero molto ampia.

Il Morphological Anti-Aliasing (MLAA) e il Subpixel Morphological Anti-Aliasing (SMAA)

Il Morphological Anti-Aliasing è il secondo filtro della tipologia post processing, stavolta ideato però in casa AMD. L'MLAA lavora un po' differentemente dal multisampling e fa riferimento esclusivamente ai dati sul colore. Quello che fa è individuare i bordi degli oggetti, costruendo poi un percorso legando i vari pixel dei contorni, isolando i pixel di colore differente adiacenti e facendo la media tra questi. A differenza dell'MSAA, quindi, non c'è alcun sovra-campionamento. L'MLAA è generalmente considerato un filtro anti-aliasing piuttosto efficiente, ma i contro più rilevanti sono due: il primo riguarda le dimensioni dei pixel, ed infatti l'MLAA va in crisi quando abbiamo dei contorni più spessi, che non vengono adeguatamente smussati; il secondo neo, e che dipende in parte dal primo, è relativo alla possibile distorsione di alcune texture.

Nonostante l'idea di base sia buona e nonostante il carico computazionale accettabile, l'MLAA propone troppi compromessi a livello visivo e il suo utilizzo non è quindi molto diffuso.Il Subpixel Morphological Anti-Aliasing è il terzo e ultimo filtro applicato in post processing. Sviluppato da Crytek e utilizzato per la prima volta in Crysis 3, l'SMAA prova a risolvere i difetti dell'MLAA introducendo nella media un peso influenzato dal contrasto fra due pixel adiacenti. L'incremento visivo rispetto al Morphological Anti-Aliasing classico c'è, ma non si distacca troppo dai risultati dell'FXAA, ad esempio, che però è molto meno esoso in termini di risorse. A causa della sua natura poco "open", questo anti-aliasing non è disponibile su una grossa varietà di graphic engine.

Filtro anti-aliasing Il punto chiave dell’anti-aliasing applicato ai moderni titoli è il compromesso fra la qualità visiva e le prestazioni. L’FXAA è, sotto questo punto di vista, un ottimo filtro, ma il miglior risultato è ancora offerto dal più vecchio multisampling. Non tutti i computer da gioco sono però in grado di gestire quest’ultimo filtro, in quanto richiede tanta VRAM a bordo della scheda grafica, soprattutto alle risoluzioni più elevate. Volenti o nolenti, comunque, si soffre di un calo di prestazioni con qualsiasi filtro di anti-aliasing, ma la varianza è davvero elevata: tutto sta quindi all’utente e alla sua capacità di sperimentare per trovare - per un determinato titolo - il filtro anti-aliasing più adatto alle proprie necessità.