# Antialiasing

L'antialiasing (delle volte abbreviato con AA) è una tecnica per ridurre l'effetto aliasing (in italiano, scalettatura, gradinatura 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 aliasing

Le schede grafiche 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

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

Esistono molte tecniche per rendere i bordi più lisci e far percepire meno i pixel.

### Metodi tradizionali

Sono le tecniche pre-processing, quindi s'interpongono nella catena di generazione dell'immagine

#### Multisampling (Multicampionamento - MSAA)

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 - SSAA)

Il supersampling (SSAA), a volte chiamato Full Scene Anti-Aliasing (FSAA), anche se in quest'ultimo caso a volte viene utilizzata la tecnica MSAA è 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.

#### CSAA e Quincunx

Il Coverage-Sampling AA (CSAA) e il Quincunx (Quincunx AA) è un sistema usato principalmente 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.

### Tradizionale migliorato

Si trattano di tecniche tradizionali, arricchite con alcuni escamotage, che permettono di migliorare l'efficacia senza andare ad impattare significativamente sulle prestazioni.

#### Dynamic Super Resolution (DSR)

Si tratta di un filtro SSAA, ma che opera con fattori differenti da 2x e suoi multipli, infatti in questo caso l'immagine vine renderizzata con una risoluzione maggiore rispetto a quella voluta (per esempio con fattore 1,25, oppure 2,25, ecc) e poi ridimensionata alla risoluzione desiderata.

#### Virtual Super Resolution (VSR)

Si tratta di un filtro SSAA, che può essere applicato su giochi e motori grafici che nativamente non supportano il SSAA, in quanto sfrutta la possibilità di eseguire il gioco alle risoluzioni maggiori per poi ridurre l'immagine alla risoluzione del monitor, per fare un esempio eseguire l'applicazione alla risoluzione 4K per poi ridurre l'immagine a 1080P, ottenendo lo stesso effetto di un SSAA 4x a 1080P.

#### Temporal anti-aliasing (TAA)

Questa tecnica anti-aliasing è conosciuto anche come TAA 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 (effetto che diminuisce con l'aumento dei FPS), inoltre in questo caso la maschera di campionamento ha dei punti d'analisi disposti diversamente rispetto alle soluzioni tradizionali, perché altrimenti questi si sovrapporrebbero. Una 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.

##### Nvidia Temporal anti-aliasing o (TXAA)

Questa tecnica si differenzia dal TAA per il fatto che nella campionatura subpixel, vengono utilizzati anche parte dei subpixel dei pixel adiacenti.

##### Multi-Frame Sampled Anti-Aliasing (MFAA)

Si tratta di un TAA proprietaria di Nvidia, con schemi di campionamento subpixel programmabili.

##### Deep Learning Anti-Aliasing (DLAA)

Si tratta di un TAA proprietaria di Nvidia, che sfrutta l'intelligenza artificiale.

#### MSAA+Coverage

Si tratta di una soluzione MSAA con campioni subpixel accessori di copertura, che identificano solo la posizione dei poligono (ricerca dal basso impatto prestazionale) e poter determinare meglio il peso dei vari subpixel, questa soluzione influisce maggiormente sulla qualità dell'immagine con livelli bassi di filtraggio, migliorando molto l'MSAA×2, mentre con livelli superiori come MSAA×4 ha un impatto trascurabile, mentre con un livello ulteriormente superiore MSAA×8, l'impatto sulla qualità diventa pressoché ininfluente.

##### Coverage-Sampled Anti-Aliasing (CSAA)

Soluzione proprietaria di Nvidia

##### Enhanced-Quality Anti-Aliasing (EQAA)

Soluzione proprietaria di AMD

##### Custom-Filter Anti-Aliasing (CFAA)

Soluzione proprietaria di AMD, caratterizzata per la raccolta di informazioni anche al di fuori del singolo pixel

#### Quincunx super Anti-Aliasing (QSAA)

Evoluzione della tecnica Quincunx e proprietaria di Nvidia.

#### Directionally-Adaptive Edge AA (DAEAA)

Basato sul filtro MSAA, utilizza anche delle isolinee ed un'analisi stocastica con matrice 3×3 per migliorare la determinazione del colore.

### Metodi Post-Process Anti-Aliasing (PPAA)

Queste tecniche PPAA sono facili da implementare e funzionano in scenari in cui MSAA non lo fa (come l'illuminazione differita e altri aliasing non basati sulla geometria), ma mancano di un'adeguata precisione sub-pixel e sono meno stabili temporalmente. Inoltre causano una percettibile sfocatura di texture e testo, poiché è difficile per gli algoritmi di rilevamento dei bordi distinguere tra discontinuità di colore intenzionali e aliasing indesiderato causato da un rendering imperfetto.

#### Morphological anti-aliasing (MLAA)

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, venne utilizzato per la prima volta 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.

#### Conservative Morphological Anti-Aliasing (CMAA)

Tecnica implementata da Intel, si basa su un algoritmo che gestisce solo discontinuità simmetriche per evitare sfocature indesiderate (risultando quindi più conservativo). Rispetto a SMAA, fornisce meno anti-aliasing in quanto gestisce meno tipologie di forme, ma provoca anche meno sfocature e distorsioni alle forme, inoltre ha una maggiore stabilità temporale (è meno influenzata da piccoli cambiamenti dell'immagine da fotogramma a fotogramma).
Questo tipo di soluzione si è poi evoluto in una soluzione ibrida, denominata CMAA2.

#### Fast approximate anti-aliasing (FXAA)

L'FXAA è un tipo di anti-aliasing post-processo che è stato sviluppato da Timothy Lottes, ex 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.

#### Per-Primitive Antialiasing (PPAA)

Tecnica che estrude i contorni della geometria e li uniforma utilizzando l'alpha blending (trasparenza).

### Ibridi

Soluzioni che fondono tecniche tradizionali e post-processing, generalmente non standard e proprietarie di determinate case produttrici:

#### Enhanced Sub-pixel morphological anti-aliasing (SMAA)

Questa tecnica di anti-aliasing post-processing è stata sviluppata da Crytek, tra il 2011 e il 2012, ed è nota anche come SMAA. L'SMAA oltre alla tecnica morfologica con buon rilevamento sui modelli poligonali per gestire forme geometriche e diagonali, inoltre sfrutta le caratteristiche di contrasto locale parte da un'immagine con antialiasing tradizionale (SSAA o MSAA) eventualmente arricchita dal Temporal anti-aliasing (TAA).
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.

#### Conservative Morphological Anti-Aliasing 2.0 (CMAA2)

Rispetto alla sua prima versione ora è possibile abilitare anche un'elaborazione di tipo tradizionale MSAA e permettendo la possibilità di essere sfruttata in modo asincrono su unità di elaborazione grafica (GPU) che supportano questa funzionalità.

#### Subpixel Reconstruction Antialiasing (SRAA)

Utilizza un'elaborazione iniziale del tipo MSAA per la determinazione del colore per poi applicare l'ombreggiatura (che in questo caso è differita in quanto applicata dopo il filtro tipo MSAA) con un filtro simile al MLAA.

### AA con scaler

Sono filtri antialiasing che fanno uso anche di altre soluzioni non strettamente legate all'antialiasing, come l'interpolazione, esattamente come gli scaler. Queste soluzioni sono principalmente utilizzate con risoluzioni molto elevate, poiché altrimenti possono compromettere la qualità complessiva dell'immagine. Un'altra situazione in cui tali soluzioni possono essere vantaggiose riguarda i monitor che non sono dotati di upscaler o che dispongono di upscaler di scarsa qualità. Questi monitor potrebbero avere difficoltà a gestire risoluzioni che non seguono un rapporto di ingrandimento multiplo intero (ad esempio 2, 3, 4, ecc.), specialmente quando il computer non è in grado di generare un flusso costante di immagini in uscita alla risoluzione del monitor.

#### Temporal Anti Aliasing Upsampling (TAAU)

Tecnica della Epic Games, che integra uno scaler nel filtro TAA, lo scaler è del tipo temporale, quindi oltre ad utilizzare i dati del fotogramma corrente, utilizza anche informazioni del fotogramma precedente.

##### Temporal Super Resolution (TSR)

Evoluzione del TAAU

#### X$^e$ Super Sampling (X$^e$SS)

Soluzione di Intel e basato sull'intelligenza artificiale che si basa su standard aperti, che ne permette l'uso su differenti hardware (disponibile anche per i concorrenti)

#### FidelityFX Super Resolution (FSR) & Radeon Super Resolution (RSR)

L'FSR è una soluzione AMD a codice aperto e basato sull'intelligenza artificiale, dove si ha un approccio ibrido di supersampling, che combina la tecnologia di upscaling lineare e non lineare per ottenere un’immagine più dettagliata possibile, che ne permette l'uso su differenti hardware (disponibile anche per i concorrenti)
L'RSR è analogo all'FSR, ma non richiede l'integrazione nel videogioco, ma funziona grazie ai driver delle schede video AMD.
Con l'arrivo della versione 3 viene introdotta la funzione che genera fotogrammi intermedi (frame generation), in modo analogo al DLSS 3 della concorrenza, questa funzione di generazione dei fotogrammi venne poi resa disponibile in modo differente e indipendente, assumendo il nome di AMD Fluid Motion Frames AFMF, in quanto quest'ultima si basa sull'immagine renderizzate in uscita della scheda video

#### Deep Learning Super Sampling (DLSS)

Soluzione proprietaria Nvidia, da integrare nel videogioco, che sfrutta l'intelligenza artificiale e altre tecniche differenti a seconda della generazione DLSS per poter migliorare la qualità dell'immagine, sfruttando le caratteristiche hardware proprietarie.

### Soluzioni supplementari

Si trattano di soluzioni che aggiungono un effetto/correzione/intervento o migliorano l'effetto antialiasing e sono attivabili per taluni soluzioni.

#### Gamma corrected anti-aliasing

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

#### Transparency anti-aliasing

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.
Le soluzioni proprietarie come la TAAA di Nvidia che in caso di trasparenze o applica una soluzione del tipo SSAA (TrSSAA) o MSAA (TrMSAA), un'altra soluzione proprietaria e l'Adaptive Anti-Aliasing di AMD che invece si affida ad una soluzione SSAA, queste soluzioni possono avere limitazioni a seconda delle librerie grafiche

## Attivazione e impatto visivo

Generalmente per poter attivare l'antialiasing è necessaria una risoluzione video minima (generalmente 640×480) in quanto altrimenti l'immagine rischia di risultare poco definita, oltre al fatto che in molti casi i titoli pensati per tali risoluzioni sfruttano questa limitazione tramite il pixel art.
L'impatto visivo è tanto maggiore quanto è minore la densità pixel (in relazione alla distanza), in quanto i pixel sono più visibili, di conseguenza un ammorbidimento dei bordi ha un impatto maggiormente positivo, per questo motivo con una densità contenuta di pixel è necessario un livello di filtraggio maggiore rispetto a densità di pixel maggiori.
Per fare un esempio con risoluzione monitor e risoluzione immagine generata coincidenti (render a risoluzione nativa), una risoluzione di 640×480 (EDTV) su un monitor 4:3 24" o 854×480 su un monitor 16:9 29,5" a 60 cm di distanza è consigliabile un livello antialiasing MSAA 4× o SSAA 4× o Quincunx AA (2×Q), livelli superiori hanno un impatto relativamente trascurabile e relativamente più sfruttabile in caso di modelli poligonari molto densi, migliorando il filtraggio ai vertici dei poligoni, mentre livelli inferiori restituiscono un'immagine con poca nitidezza; Mentre con risoluzioni di 1920×1080 (Full HD) su un monitor 16:9 29,5" o 1440×1080 su un monitor 4:3 24" a 60 cm di distanza è consigliabile un livello antialiasing MSAA 4× o SSAA 4× o Quincunx AA (2×Q), livelli superiori difficilmente permettono un miglioramento apprezzabile, mentre livelli inferiori perdono leggermente di nitidezza; Mentre in caso di risoluzioni di 3840×2160 (4K) su un monitor 16:9 29,5" a 60 cm di distanza è consigliabile un livello antialiasing MSAA 2× o SSAA 2×, livelli superiori come Quincunx AA (2×Q) è consigliabile più per il fatto che non impatta maggiormente sulle prestazioni, più che per il fatto che migliora la qualità dell'immagine, livelli ulteriormente superiori difficilmente permettono un reale miglioramento dell'immagine.
Le soluzioni con upscaler effettuando un render a risoluzioni minori, necessitano di un livello di filtraggio tendenzialmente maggiore in quanto altrimenti si ha una perdita di definizione, inoltre le varie combinazioni di filtri possono creare un effetto differente a monitor, andando ad accentuare linee o attenuare texture. Sono una soluzione adatta a monitor ad elevata densità di pixel, quindi con una risoluzione di 7680×4320 (Ultra HDTV) su un monitor 16:9 29,5" a 60 cm di distanza e in questo caso può essere utilizzata una soluzione di filtraggio paragonabile alle soluzioni con render a risoluzioni native per il 4K. Per quanto riguarda l'utilizzo su schermi a risoluzione inferiore tipo 3840×2160 (4K) su un monitor 16:9 29,5" a 60 cm di distanza, in base all'intensità dell'upscaler potrebbe essere necessario adottare una soluzione di filtraggio superiore rispetto alle soluzioni con render a risoluzioni native per il Full HD. Mentre per l'utilizzo su schermi a risoluzioni ancor più contenuta tipo risoluzioni di 1920×1080 (Full HD) su un monitor 16:9 29,5" o 1440×1080 su un monitor 4:3 24" a 60 cm di distanza, è necessario utilizzare un livello di filtraggio maggiore rispetto alle soluzioni con render a risoluzioni native per l'EDTV, il che risulta relativamente poco efficace e si possono apprezzare perdite di qualità e definizione.

## Impatto computazionale

Maggiore è il livello di filtraggio, maggiore è il carico computazionale richiesto. Le tecniche di anti-aliasing variano per peso ed efficacia. SSAA offre la migliore qualità, ma ha un impatto notevole e non è sempre disponibile. MSAA è più comune e riduce il carico, soprattutto per i titoli con meno poligoni. Può essere esteso con l'anti-aliasing per trasparenza, che annulla le differenze con SSAA ma riduce le prestazioni, soprattutto con le trasparenze. Il Quincunx AA (2×Q) è meno comune, ma offre una qualità paragonabile al 4× SSAA con un impatto simile al 2× MSAA.
I sistemi temporali aumentano i campioni per il filtraggio senza un impatto significativo sulle prestazioni rispetto all'MSAA di base. Utilizzano i subpixel del fotogramma precedente fondendoli con quelli del fotogramma corrente. Le soluzioni Upscaler, eseguendo il rendering a risoluzioni inferiori, riducono l'impatto computazionale, ma sacrificano l'output finale. Nelle soluzioni proprietarie si cerca di utilizzare tecniche che sfruttano le specifiche hardware per mitigare la perdita di qualità.