Implementazioni generiche dell'anti-Aliasing: Multisampling

Analisi del filtro anti-aliasing, la sua implementazione e le impostazioni dei driver.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Multisampling

Il Multisampling (MSAA) è stato creato come alternativa più veloce al supersampling. La premessa di base è trovare un equilibrio tra qualità e carico di lavoro in modo da aggiungere il quantitativo di calcolo extra minimo riducendo al contempo la scalettatura dei bordi. L'MSAA lo fa con due tecniche in particolare.

La prima è l'edge anti-aliasing, il che significa che solo i bordi degli oggetti sono interessati. Il computer riproduce il più possibile della scena senza alcun tipo di anti-aliasing, ma applica il filtro ai bordi degli oggetti, cioè proprio i punti "critici" di cui stiamo parlando. Per alleggerire ulteriormente il carico di lavoro, inoltre, ancora prima di applicare l'effetto viene effettuato uno Z-Test (un test su un campione ridotto). Questo permette di scoprire se esiste un differenziale di profondità per il singolo pixel, e determinare così se è necessario applicare l'antialiasing multisampling (MSAA).

La seconda tecnica di MSAA usata è un carico di lavoro a campionamento ridotto. Alcuni calcoli sono realizzati solo una volta per pixel, come i pixel shader, i lookup delle texture e il color sampling. Solo i valori di "depth" e "stencil" sono completamente campionati. Il PC usa questa informazione per determinare un mescolamento ottimale del colore tra l'oggetto e lo sfondo.

Nell'immagine potete vedere un esempio di come lavora il sampling MSAA 4x. Sulla sinistra ci sono quattro pixel, tre dei quali contengono il bordo di un triangolo e sono stati contrassegnati da una differenza nel valore Z, così il filtro MSAA sarà applicato. I punti rossi rappresentano la posizione usate per il campionamento dell'immagine: abbiamo quattro punti per ogni pixel perché stiamo esaminando il MSAA con un valore di 4x.

Naturalmente se aumenta il numero dei campioni aumenta anche la precisione del risultato, quindi MSAA 8x è meglio di 4x, che a sua volta è meglio di 2x.

Semplificando molto, in favore di una maggiore comprensibilità, possiamo poi affermare che se in un pixel si sovrappongono più oggetti, con la funzione MSAA è possibile campionare più colori in quel pixel. Una caratteristiche delle DirectX 9 (centroid sampling) poi fa sì che l'analisi degli oggetti sia più precisa, ed evita che venga preso in considerazione lo sfondo invece dell'oggetto su cui applicare il filtro.

L'MSAA è stato il metodo de facto per l'anti-aliasing da quando è stato adottato, soprattutto perché offre un grande bilanciamento tra qualità dell'immagine e velocità rispetto al supersampling. Ciò nonostante può trattarsi di un lavoro ancora piuttosto impegnativo per la scheda video, soprattutto con i modelli meno potenti (come potete verificare leggendo alcuni articoli dalla nostra sezione notebook).

Inoltre, come avrete già capito, usare l'MSAA non offre la stessa qualità del SSAA, visto che quest'ultimo riesce in effetti a migliorare la qualità visiva delle texture. O per dirla in un altro modo ci sono texture (specialmente gli oggetti con texture trasparenti) che non si possono correggere con la tecnica MSAA. Nell'esempio sotto l'MSAA impone l'anti-aliasing sui bordi degli oggetti, ma non riesce a migliorare la rete metallica e la superficie dell'acqua. Con il supersampling invece gli effetti sono evidenti.

Date queste imperfezioni, le aziende del settore grafico come AMD e Nvidia hanno adottato metodi proprietari di anti-aliasing per integrare e completare la tecnica base dei filtri MSAA. Prima di entrare nei dettagli, vediamo come si comportano le schede GeForce e Radeon quando si tratta di applicare le tecniche base.