Con questo articolo, inizio una maratona sui termini tecnici usati nei videogiochi, in particolar modo mi riferisco alle impostazioni grafiche, che per molti sono un mistero e si limitano ad utilizzare quelle di default.

Cos’è l’aliasing?

Guardate quest’immagine: (click per ingrandire)

2015-noAA
Clicca per ingrandire!

Vedete quelle orribili scalettature in faccia al Comandante Shepard? Non sono brutte? La causa è molto semplice: il monitor è formato da pixel, piccoli quadratini che compongono l’immagine come un mosaico; per via di questa struttura, non è in grado di visualizzare linee trasversali, che vengono approssimate creando scalettature, o aliasing.

Le tecniche di antialiasing (d’ora in poi AA) cercano di eliminarle dagli albori della computer grafica. Ne esistono a dozzine, e noi vedremo quelle più utilizzati nei videogiochi.

In questo articolo non ci addentreremo in dettagli tecnici su come vengono implementate le varie tecniche, ma ci limiteremo ad un veloce ma spietato confronto.

Niente AA

me3-noaa
Clicca per ingrandire!

Giocare senza AA è tollerabile solo ad alte risoluzioni.

Vantaggi:

  • Alte prestazioni
  • Immagine nitida

Svantaggi:

  • Aliasing

Supersampling (SSAA, FSAA)

Questa è la più antica e pesante tecnica di AA. Sempicemente, esegue il rendering dei pixel a risoluzione più alta, e poi li scala alla risoluzione corretta.

Il fattore di AA (2x, 4x, 8x, …) indica quanti campioni prendere per ogni pixel. Solitamente si utilizza un fattore di 4x, il che significa 4 campioni per pixel, ossia per un monitor 1080p, parliamo di 3840*2160, ossia 4K! Si capisce subito che le prestazioni tracollano. Fattori oltre 4x non mostrano differenze apprezzabili, ma riducono ulteriormente le prestazioni.

me3-ssaa
Clicca per ingrandire!

Il supersampling non va confuso con il DSR di nVidia: quest’ultimo infatti si limita a mostrare risoluzioni più alte al gioco (fino a 4 volte la risoluzione dello schermo), e poi scala alla risoluzione reale, mentre il supersampling è eseguito interamente all’interno del driver video e non mostra risoluzioni fittizie al gioco. In altre parole, DSR richiede supporto del gioco, SSAA no. DSR inoltre non è una tecnica di AA, come è ben visibile in questo screenshot.

Vantaggi:

  • Alta qualità
  • AA applicato su geometria, texture, shader e trasparenze

Svantaggi:

  • Molto pesante
  • Alto uso di VRAM

Multisample (MSAA)

Funziona in modo simile all’SSAA, ma si applica solo sui bordi dei poligoni, che ottengono così una qualità identica a quella dell’SSAA, ma con un impiego molto minore di risorse.

Poichè il filtro si applica solo sui bordi della geometria, shader, texture e in particolar modo le trasparenze a 1 bit spesso utilizzate per la vegetazione restano scalettati.

me3-msaa
Clicca per ingrandire!

Il fattore di AA funziona come nell’SSAA.

Vantaggi:

  • Impatto sulle prestazioni molto minore rispetto all’SSAA
  • Uso contenuto di VRAM

Svantaggi:

  • Non si applica a texture, shader e trasparenze.

Adaptive MSAA

Si tratta di un ibrido tra MSAA e SSAA, che utilizza il primo per la geometria, e il secondo per le trasparenze. Questo permette di superare il problema principale dell’MSAA, ossia il fatto che le trasparenze a 1 bit spesso usate per la vegetazione rimangono scalettate pesantemente, senza incidere troppo sulle prestazioni.

Nessun filtro è applicato su texture e shader, ma questi di solito non sono un problema grazie al filtro anisotropico e al mipmapping, che illustreremo in un prossimo articolo.

Il fattore di AA funziona come in MSAA e SSAA.

Poichè l’SSAA è utilizzato nelle trasparenze, se finite in mezzo ad un effetto particellare (ad esempio del fumo), si noterà un drastico calo nelle prestazioni poichè l’SSAA dovrà essere applicato sull’intero schermo.

Vantaggi:

  • Qualità molto simile all’SSAA
  • Prestazioni piuttosto alte

Svantaggi:

  • Calo di prestazioni notevole in presenza di molte trasparenze

Fast Approximate AA (FXAA)

Questo filtro opera in modo totalmente diverso dai precedenti. Il render è eseguito alla risoluzione reale, senza alcun filtro AA; l’immagine prodotta, affetta da aliasing, viene analizzata da un semplice algoritmo che rileva i pixel che appartengono ai bordi basandosi sulla differenza nella luminosità rispetto ai pixel attorno ad esso, e applicando a questi pixel una semplice sfocatura (media dei pixel vicini).

Poichè si applica dopo il rendering, non c’è più distinzione tra geometria, texture, ecc., e il filtro agisce sull’intera immagine. Visto da una certa distanza, l’effetto è molto buono, il ché combinato con l’impatto quasi nullo sulle prestazioni, lo rende l’algoritmo più usato sulle console; da vicino però si notano spesso dei bordi ancora scalettati e una sfocatura piuttosto evidente.

me3-fxaa
Clicca per ingrandire!

Vantaggi:

  • Impatto quasi nullo sulle prestazioni e sulla VRAM
  • AA applicato su geometria, texture, shader e trasparenze

Svantaggi:

  • Qualità piuttosto bassa

Subpixel Morphological AA (SMAA)

Funziona in modo simile all’FXAA, ma con un filtro ben più avanzato sia nel rilevamento dei bordi che nella rimozione delle scalettature. Le prestazioni sono praticamente identiche all’FXAA, ma la qualità finale è molto vicina a quella dell’SSAA. Senza addentrarci nei dettagli tecnici molto complicati, se il gioco lo supporta è la scelta col miglior rapporto qualità/prestazioni.

me3-smaa
Clicca per ingrandire!

Vantaggi:

  • Impatto quasi nullo sulle prestazioni e sulla VRAM
  • Buona qualità
  • AA applicato su geometria, texture, shader e trasparenze

Svantaggi:

  • Poco diffuso, ma è possibile forzarlo con strumenti come injectSMAA

AA temporale (TXAA)

Una tecnica che nVidia ha portato recentemente nel mondo videoludico (ma usata da un decennio nei film in CG) è il TXAA, o Antialiasing Temporale.

L’obiettivo non è semplicemente rimuovere le scalettature, ma rimuovere anche effetti come il cosiddetto crawling ben visibile ad esempio su cavi elettrici e sui bordi delle trasparenze a 1 bit menzionati pocanzi.

Non sono riuscito a trovare informazioni rilevanti sul funzionamento, ma si tratta sostanzialmente di una delle tecniche precedenti combinate con un algoritmo che rileva i suddetti effetti analizzando gli ultimi fotogrammi ed applica una sfocatura per rimuoverli.

La qualità è alta, ma l’impatto sulle prestazioni è intollerabile.

Vantaggi:

  • Alta qualità
  • AA applicato su geometria, texture, shader e trasparenze

Svantaggi:

  • Prestazioni molto basse

MultiFrame AA (MFAA)

Una tecnica introdotta da nVidia per dimezzare l’impatto prestazionale di SSAA e MSAA (ad esempio a 4x ha l’impatto di un 2x).

L’idea è la seguente: anzichè usare N campioni per pixel, ne uso N/2 e alterno tra i fotogrammi la loro posizione (ad esempio con un fattore simulato di 4x, nel primo fotogramma uso 2 campioni vicini alla sinistra del pixel e nel secondo vicini alla destra). In questo modo, in un fotogramma potrei “essere” da una parte del bordo e nel successivo potrei “essere” dall’altra. Visto a 60FPS, i bordi non appaiono lampeggianti, ma quasi privi di scalettature come se avessi usato N campioni.

Vantaggi:

  • Buona qualità
  • Buone prestazioni

Svantaggi:

  • Disponibile solo sulla serie 900 di nVidia forzandolo dal driver video
  • Effetto non visibile negli screenshot

Cosa scegliere?

Personalmente utilizzo l’SMAA nei giochi recenti, poichè è la tecnica col miglior rapporto qualità/prestazioni e l’SSAA 4x in quelli più vecchi dato che le prestazioni non sono un problema. Se avete schermi a risoluzione molto alta, potete anche fare a meno dell’AA.

Sfortunatamente, capita sempre più di frequente che sviluppatori lazzaroni introducano un’opzione del tipo “Antialias Si/No”, senza specificare la tecnica. Solitamente questi giochi sono porting da console oppure indie, quindi molto probabilmente abbiamo a che fare con FXAA o SMAA, se siamo fortunati. Ad ogni modo, è possibile disattivarlo in gioco e forzarlo tramite le impostazioni del driver video o tool come RadeonPro.

Altre tecniche?

Esistono ovviamente altre tecniche di AA che non hanno mai preso piede. Volete farvi due risate? Se avete una scheda AMD serie HD 6000 o successiva, andate nelle impostazioni del driver e forzate l’AA morfologico (Morphological AA, MLAA), poi avviate un gioco ed ammirate: notate l’effetto acquerello? Notate come i font sembrano tendere al Comic Sans? Tutti questi effetti diventano ancora più marcati alle basse risoluzioni! Ci credete che questo orrore funziona in modo molto simile all’eccellente SMAA?

LASCIA UN COMMENTO