Antialiasing

Da Wikipedia, l'enciclopedia libera.
Esempio di antialiasing. I bordi dei caratteri nella seconda riga sono stati smussati.

L'antialiasing (delle volte abbreviato con AA) è una tecnica per ridurre l'effetto aliasing (in italiano, scalettatura,[1] gradinatura[2] o scalettamento) quando un segnale a bassa risoluzione viene mostrato ad alta risoluzione. L'antialiasing ammorbidisce le linee smussandone i bordi e migliorando l'immagine.

Formazione dell'effetto alias[modifica | modifica wikitesto]

Aliased.png Antialiased.png
Paragone tra un'immagine con aliasing (a sinistra) e una con filtro antialiasing (a destra)

Le schede video lavorano con triangoli e linee che, per essere mostrati, devono essere campionati (sampling). Questa è la fase dove vengono stabiliti i colori dei singoli pixel e che produce le scalinature tra gli oggetti finali.

Durante la campionatura al pixel viene assegnato un solo colore prendendo come riferimento il suo centro; se un pixel appartiene ad una linea che delimita due campi, anche in questo caso prevale il colore del campo a cui appartiene il centro del pixel. Per questo motivo su linee oblique, zone con alta differenza di colore o sui bordi netti si forma l'effetto alias. Per questo nella maggior parte dei casi (generalmente a livello hardware), l'immagine viene campionata come se invece di un singolo pixel ce ne fossero di più e al pixel finale viene assegnato il colore medio (supersampling).

L'attivazione dell'effetto, nei videogiochi, comporta (nella maggioranza dei casi) una diminuzione del frame rate sviluppato dalla scheda video, proprio a causa della grande quantità di dati che quest'ultima si trova a gestire.

Rendering sub-pixel[modifica | modifica wikitesto]

Confronto di diverse visualizzazioni con i diversi interventi sui sub-pixel; da sinistra a destra:
1) Immagine tradizionale
2) Immagine con gestione dei sub-pixel
3) Immagine con anti-aliasing
4) Immagine con gestione dei sub-pixel e anti-aliasing

Le diverse tecniche di anti-aliasing intervengono in modo differente, generalmente l'anti-aliasing interviene sul pixel e quindi in caso di un'immagine bicolore (bianco e nero) si noterà che i sub pixel dello stesso pixel sono illuminati allo stesso modo, garantendo la correttezza cromatica; Mentre alcune tecniche come il ClearType sfruttano maggiormente il sub-pixel, andando a favorire il contorno sacrificando la correttezza cromatica, motivo per il quale queste tecniche che inizialmente non regolavano l'intensità dei sub-pixel, hanno migliorato i risultati visivi con una gestione intermedia tra la gestione tradizionale dei sub-pixel e la gestione dei pixel dei metodi tradizionali di anti-aliasing.

Tipi di anti-aliasing[modifica | modifica wikitesto]

Metodi tradizionali[modifica | modifica wikitesto]

Multisampling (Multicampionamento)[modifica | modifica wikitesto]

Il multisampling antialiasing (MSAA) è certamente il metodo più utilizzato.

Tale metodo agisce sui bordi dei poligoni (non su tutta l'immagine), e l'effetto aliasing viene eliminato tramite un filtro di bilanciamento dei colori: se due (o più) poligoni giacciono sullo stesso pixel, il colore del pixel viene determinato in base ai colori dei poligoni. Per esempio, se su un pixel ci sono due poligoni di colori diversi p1 che copre 2/3 e p2 che copre il restante terzo, il colore del pixel sarà uguale al bilanciamento dei due colori, tenendo conto che la "forza" del colore di p1 sarà doppia rispetto a quella di p2.

Questa analisi sarà tanto più precisa quanto maggiore sarà tale filtro 2x, 4x, 8x, ecc.

Supersampling (Supercampionamento)[modifica | modifica wikitesto]

SSAA 3 × 3
9 subpixel

Il supersampling (SSAA), a volte chiamato Full Scene Anti-Aliasing (FSAA)[3], anche se in quest'ultimo caso a volte viene utilizzata la tecnica MSAA[4] è un metodo molto utilizzato, ma si differenzia dal multisampling, per il fatto che agisce su tutta l'immagine e quindi anche all'interno dei poligoni, e non solo sui bordi. Con l'SSAA ogni pixel viene suddiviso in più pixel che hanno un colore indipendente. Per calcolare il colore finale dei pixel viene fatta una "media" di tutti i pixel, generalmente dando una maggiore importanza ai pixel centrali. La maschera dei subpixel è l'insieme dei "frammenti" di pixel. Un'ottima maschera è di 4 × 4px (16 subpx) anche se paga in prestazioni rispetto alle più veloci 2 × 2 o 3 × 3px.

Questa tecnica può essere descritta anche come una riproduzione a video di un'immagine ridimensionata di 2, 3, 4 o più volte, il che permette eccellenti prestazioni qualitative, di gran lunga superiori al multisampling, ma di contro richiede un enorme dispendio di energie e risorse.

Quincunx[modifica | modifica wikitesto]

Quincunx: i quadrati verdi rappresentano la griglia di pixel prima dell'AA, i quadrati arancioni rappresentano la griglia di pixel dopo l'AA, dove vengono creati con la media dei colori dei quattro pixel verdi sottostanti e dal campione interposto tra loro

Il Quincunx (Quincunx AA) è un sistema usato dalla NVIDIA (con la denominazione 2xQ) che permette d'avere gli stessi risultati della 4×, ma risparmiando le prestazioni, le quali sono analoghe alla tecnica 2×; come contro può apparire una linea verticale o orizzontale non utilizzata.

Questa tecnica si applica a tutta l'immagine (esattamente come la tecnica SSAA) e consiste nel formare una griglia con i normali colori che andrebbero a formare l'immagine e creare la nuova videata sommando i colori dei quattro pixel con peso 1/8 e sommare anche un quinto campione interposto tra i quattro pixel, con peso da 1/2, per avere il pixel adiacente si utilizzeranno due dei punti usati dal pixel precedente.

Metodi post-processing[modifica | modifica wikitesto]

Morphological anti-aliasing (MLAA)[modifica | modifica wikitesto]

Questa tipo di antialiasing è stato sviluppato da Sony Computer Entertainment, e a differenza dei SSAA e MSAA non agisce prima della creazione dell'immagine, ma dopo. Si tratta di un post-processing ed agisce su tutta l'immagine, andando ad analizzare la forma di tutti i poligoni, i pixel e le texture alfa, in essa contenute.

L'MLAA ha dimostrato una notevole efficienza, consentendo una qualità dell'immagine molto elevata ad appena un minimo di riduzione delle prestazioni sostenute dal supersampling, con un guadagno sul fattore di richiedere molto meno tempo per calcolare ed applicare i suoi effetti sulle immagini, rispetto appunto a metodi tradizionali come il SSAA, o il MSAA.

Questa tecnica riduce drasticamente le scalettature, di un'immagine, agendo su ogni singolo elemento, e i suoi risultati sono sostanzialmente paragonabili a quelli del supersampling.

Essendo una creazione di casa Sony Computer Entertainment, l'MLAA, si è rivelato estremamente efficace sulla PlayStation 3, grazie all'utilizzo delle SPE del Cell, in giochi come God of War III, Killzone 3, LittleBigPlanet 2, Battlefield 3 e Deus Ex: Human Revolution.[5]

Fast approximate anti-aliasing (FXAA)[modifica | modifica wikitesto]

Confronto: a sinistra l'immagine senza antialiasing, al centro l'immagine con MSAA×4, a destra l'immagine con FXAA. È possibile notare che l'FXAA utilizza un effetto motion blur che smussa, ma allo stesso tempo sfoca, l'immagine.

L'FXAA è un tipo di anti-aliasing post-processo che è stato sviluppato da Timothy Lottes, programmatore di NVIDIA.

È stato creato per essere molto veloce, senza richiedere grande potenza di calcolo e dispendio di energie, ma allo stesso tempo anche per ottenere delle buone prestazioni visive. Come l'MLAA, l'FXAA, applica i suoi effetti a tutta l'immagine, agendo anche sulle texture alfa, ma rispetto a quest'ultimo consuma dal 15 al 20% in meno delle risorse necessarie, ottenendo però una qualità più bassa, ma comunque accettabile.

La qualità ridotta risiede nel fatto che l'FXAA utilizza un effetto motion blur per smussare un'intera immagine, rendendola però allo stesso tempo sfocata. Inoltre gli effetti dell'FXAA vengono quasi totalmente annullati quando gli elementi sono in movimento.[6]

Metodi alternativi[modifica | modifica wikitesto]

Soluzioni non standard e generalmente proprietarie di determinate case produttrici

Temporal anti-aliasing[modifica | modifica wikitesto]

Questo anti-aliasing è conosciuto anche come TAA o TXAA ed è una variante della MSAA. La maschera di applicazione dell'antialiasing di un fotogramma viene ruotata di 180° e utilizzata assieme alla maschera del frame successivo per determinare la correzione, raddoppiando la quantità di filtraggio senza intaccare le prestazioni, ma diminuendo la definizione dell'immagine conferendo un lieve effetto blur, inoltre in questo caso la maschera di campionamento ha dei punti d'analisi disposti diversamente rispetto alle soluzioni tradizionali, perché altrimenti questi si sovrapporrebbero. Un maschera TAA 2x, è in grado quindi di garantire gli stessi effetti di un MSAA 4x, ma di richiedere solo la metà delle risorse necessarie per funzionare.

Videogiochi che usano questa tecnica sono per esempio Metal Gear Solid 4: Guns of the Patriots, Halo: Reach e The Order: 1886, in tutti e 3 i giochi settata a 2x.

Sub-pixel morphological anti-aliasing[modifica | modifica wikitesto]

Questa tecnica di anti-aliasing post-processing è stata sviluppata da Crytek, tra il 2011 e il 2012, ed è nota anche come SMAA. L'SMAA è dotata di un buon rilevamento sui modelli poligonali per gestire forme geometriche e diagonali, e sfrutta le caratteristiche di contrasto locale.

Questa tecnica si è presentata per la prima volta in Crysis 3 ed in grado di ricostruire le caratteristiche dei subpixel, con risultati quasi paragonabili all'MSAA×4. La definizione di post-processing non è del tutto esatta visto che, l'SMAA, tende a cercare un certo equilibrio tra metodi tradizionali (l'MSAA) e metodi post (l'MLAA). Un SMAA 2x è generalmente considerato il migliore dato il rapporto qualità/prestazioni; anche se la massima maschera applicabile è il 4x.[7]

Soluzioni supplementari[modifica | modifica wikitesto]

Si trattano di soluzioni che aggiungono un effetto/correzione/intervento o migliorano l'effetto antialiasing.

Gamma corrected anti-aliasing[modifica | modifica wikitesto]

Questa tecnica migliora il colore delle immagini in base a come verrebbe visualizzato dal monitor, migliorando anche l'effetto anti-aliasing.

Transparency anti-aliasing[modifica | modifica wikitesto]

Questa tecnica di antialiasing è utilizzata in associazione con un altro metodo di antialiasing (che prevede solo il controllo dei bordi poligonali) per eliminare l'effetto aliasing non solo dai contorni poligonali, ma anche dalle texture ricche di trasparenze (recinzioni, staccionate, cancelli) dove altrimenti il filtro non potrebbe agire, smussando i contorni delle aree di colore contrastanti.

Note[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]