Antialiasing tratto da: Han-Wei Shen
Cos’è un alias? Alias - In telecomunicazione un falso segnale dovuto a interferenza tra frequenza del segnale e frequenza di campionamento aliasing c’è ovunque in computer graphics poichè il rendering è un processo di campionamento Esempi: linee a dente di sega (jagged lines) false tramature di texture
Rendering è un processo di campionamento
Rendering è un processo di campionamento rendere una curva
Veloce rassegna di campionamento di segnali Due passi nella rappresentazione digitale di un segnale: campionamento e ricostruzione Aliasing può derivare da entrambi i passaggi
Alias provocato da sotto-campionamento una ruota sembra girare in senso inverso Osserva solo a 1/4 della frequenza problema di sotto campionamento
Alias provocato da sotto-campionamento segnale 1D segnale effettivo segnale campionato
Alias provocato da sotto-campionamento segnale 2d: moirée aliasing moderato aliasing più forte
Quanto basta? qual’è la giusta frequenza di campionamento? teorema del campionamento (o limite di Nyquist) - la frequenza di campionamento deve essere almeno doppia della massima frequenza del segnale due campioni in questo periodo
Si può evitare totalmente aliasing Dato il limite di Nyquist ? In realtà no – la frequenza massima potrebbe essere infinita, segnale non limitato in banda La maggior parte delle scene grafiche non sono bandlimited: bordi netti non possono mai venire campionati correttamente in modo digitale (point sampling) Come si può correggere o limitare l’aliasing
Ricostruzione Dopo aver campionato (idealmente) in modo corretto, dobbiamo ricostruire il segnale continuo Si procede usando filtri di ricostruzione
Filtri di ricostruzione Filtri più comuni: Tent filter Box filter Sinc filter = sin(px)/px
Box filter Molto semplice ma non molto buono
Tent Filter Basato su interpolazione lineare. Migliore ma ancora non smooth
Sinc Filter Filtro passa basso ideale:
Ri-campionamento Minification and Magnification – ricampiona il segnale a risoluzioni diverse Minification Magnification (note the minification is done badly here)
Magnification facile da usare, ricampiona semplicemente il segnale ricostruito Segnale ricostruito Ricampionamento a maggiore frequenza del segnale ricostruito
Minification Più difficile La frequenza del segnale è troppo alta per evitare aliasing Soluzioni possibili: Accresci l’ampiezza del filtro passa basso del filtro ideale sinc - sfoca l’immagine Prima sfoca l’immagine (con qualunque metodo), poi ricampionala
Tecniche di Antialiasing in tempo reale Tecniche pratiche usate in hardware grafico
Algoritmo basati su spazio schermo Approccio comune: campiona più fittamente la scena e calcola la media (sovracampionamento) risultato Idea
Differenti schemi di sovracampionamento Formula comune: c(i,x,y): colore del campione i per pixel(x,y); wi: peso Diversi schemi di sovracampionamento
FSAA (full screen anti-aliasing) Rendi la scena a una risoluzione molto più alta poi fanne la media Nvidia GeForce 2: usa ordered grid supersampling (OGSS) 3dfx voodo 5: rotated grid supersampling (RGSS) – elimina meglio alias 2x or 4x: numero di subpixels per ciascun pixel Costoso: l’intera scena può dover essere resa più volte! OGSS RGSS
Multisampling AA Nvidia GeForce3 – per accrescere performance 2x RGSS e 4x OGSS Non si inviano più texture for subpixels – usa la stessa texture di colore per i subpixels Usata solo sui pixel di contorno – GPU ha più intelligenza (è la maggiore differenza dal sovra campionamento)
Quincunx multisampling Genera 2 campioni per pixel Fatti prestare qualcosa dal vicino Qualità comparabile al metodo 4x a metà del costo
Confronto 4X - Quincunx 4X FSAA 4X Quincunx
ATI - SMOOTHVISIONTM usa un pattern di campionamento jittered Ogni pixel ha (2x, 4x, 8x) locazioni di campionamneto alternative pre-programmate, jittered. Pseudo-random-look (La visione umana è meno sensibile a configurazioni di campionamento casuali) Possibili locazioni per SMOOTHVISION 4x
ATI - SMOOTHVISIONTM 4x multi-sampling Quake3 screen shot 2x High-Quality mode Quake3 screen shot