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 sottocampionamento una ruota sembra girare in senso inverso Osserva solo a 1/4 della frequenza problema di sotto campionamento Alias provocato da sottocampionamento segnale 1D segnale effettivo segnale campionato Alias provocato da sottocampionamento 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: Box filter Tent 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) Idea risultato 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 OGSS supersampling (OGSS) 3dfx voodo 5: rotated grid supersampling (RGSS) – elimina meglio alias RGSS 2x or 4x: numero di subpixels per ciascun pixel Costoso: l’intera scena può dover essere resa più volte! 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 preprogrammate, jittered. Pseudo-random-look (La visione umana è meno sensibile a configurazioni di campionamento casuali) Possibili locazioni per SMOOTHVISION 4x ATI - SMOOTHVISIONTM 4x multi-sampling SMOOTHVISION™ 2x High-Quality mode Quake3 screen shot