Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica...
-
Upload
stefania-marchese -
Category
Documents
-
view
214 -
download
0
Transcript of Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica...
![Page 1: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/1.jpg)
Antialiasing
parzialmente tratto da: Han-Wei Shen
Daniele Marini
Corso Di Programmazione Grafica aa2005/2006
![Page 2: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/2.jpg)
Programmazione Grafica aa2005/2006 2
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 (moirée)
![Page 3: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/3.jpg)
Programmazione Grafica aa2005/2006 3
Aliasing spaziale di linee e di texture
• Osserviamo aliasing sia su singole linee o bordi (denti di sega) sia su texture (moirée)
![Page 4: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/4.jpg)
Programmazione Grafica aa2005/2006 4
Aliasing temporale
• Si osserva aliasing anche in sequenze di immagini:
![Page 5: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/5.jpg)
Programmazione Grafica aa2005/2006 5
Il rendering è un processo di campionamento
![Page 6: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/6.jpg)
Programmazione Grafica aa2005/2006 6
Il rendering è un processo di campionamento
rendere una curva
![Page 7: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/7.jpg)
Programmazione Grafica aa2005/2006 7
Veloce rassegna di campionamento di segnali
• Due passi nella rappresentazione digitale di un segnale: campionamento e ricostruzione– Campionamento: da segnale continuo a campioni discreti– Ricostruzione: dai valori discreti al segnale continuo
• Aliasing può derivare da entrambi i passaggi
![Page 8: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/8.jpg)
Programmazione Grafica aa2005/2006 8
Alias provocato da sotto-campionamento
• una ruota sembra girare in senso inverso
Osserva solo a 1/4 della frequenza
problema di sotto campionamento
![Page 9: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/9.jpg)
Programmazione Grafica aa2005/2006 9
Alias provocato da sotto-campionamento
• segnale 1D
segnale effettivosegnale campionato
![Page 10: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/10.jpg)
Programmazione Grafica aa2005/2006 10
Alias provocato da sotto-campionamento
• segnale 2d: moirée
aliasing moderato aliasing più forte
![Page 11: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/11.jpg)
Programmazione Grafica aa2005/2006 11
Se aumentiamo la frequenza di
campionamento?
f=1 rpm
1 campione per rivoluzione
1 < campione/rivoluzione < 2
2 campioni/rivoluzione
> 2 campioni/rivoluzione
![Page 12: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/12.jpg)
Programmazione Grafica aa2005/2006 12
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
![Page 13: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/13.jpg)
Programmazione Grafica aa2005/2006 13
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?
![Page 14: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/14.jpg)
Programmazione Grafica aa2005/2006 14
Ricostruzione
• Dopo aver campionato (idealmente) in modo corretto, dobbiamo ricostruire il segnale continuo
• Si procede usando filtri di ricostruzione
![Page 15: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/15.jpg)
Programmazione Grafica aa2005/2006 15
Filtri di ricostruzione
• Filtri più comuni:
Box Filtro a tenda
Sinc = sin(x)/x
![Page 16: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/16.jpg)
Programmazione Grafica aa2005/2006 16
Box
• Molto semplice ma non molto buono
• Si chiama anche nearest neighbor
![Page 17: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/17.jpg)
Programmazione Grafica aa2005/2006 17
Filtro triangolare
• Basato su interpolazione lineare. Migliore ma ancora non smooth
32x3232x32
Nearest neighborNearest neighbor
LineareLineare
![Page 18: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/18.jpg)
Programmazione Grafica aa2005/2006 18
Sinc
• Filtro passa basso ideale:
nearestneighbor
lineare
bicubica
![Page 19: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/19.jpg)
Programmazione Grafica aa2005/2006 19
Ricampionamento
• Allargare o ridurre il segnale• Supponiamo che i campioni siano a intervalli unitari: 0,1,2,3,4,…
• Ricampionare in modo che la loro distanza valga a– a< 1 produce magnification– a>1 produce minification
![Page 20: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/20.jpg)
Programmazione Grafica aa2005/2006 20
Ri-campionamento
• Minification e Magnification – ricampiona il segnale a risoluzioni diverse
Magnification
Minification
(in questo caso la minificazione è stata fatta male)
![Page 21: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/21.jpg)
Programmazione Grafica aa2005/2006 21
Magnification
• facile da usare, ricampiona in modo semplice il segnale da ricostruire
Segnale ricostruito Ricampionamento a frequenza doppia del segnale ricostruito
![Page 22: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/22.jpg)
Programmazione Grafica aa2005/2006 22
Minification
• Raddoppiamo la distanza tra i campioni
• Si ha un effetto di sfocatura
![Page 23: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/23.jpg)
Programmazione Grafica aa2005/2006 23
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
![Page 24: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/24.jpg)
Programmazione Grafica aa2005/2006 24
Tecniche di Antialiasing in tempo reale
• Tecniche pratiche usate in hardware grafico
• Lavorano nello spazio schermo
![Page 25: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/25.jpg)
Programmazione Grafica aa2005/2006 25
Algoritmi basati su spazio schermo
• Approccio comune: campiona più fittamente la scena e calcola la media (sovracampionamento)
• È più difficile: i bordi hanno infinite frequenze
idea risultato
![Page 26: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/26.jpg)
Programmazione Grafica aa2005/2006 26
Differenti schemi di sovracampionamento
• Formula comune: c(i,x,y): colore del campione i per
pixel(x,y); wi: peso
Diversi schemi di sovracampionamento
![Page 27: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/27.jpg)
Programmazione Grafica aa2005/2006 27
Campionamento perturbato (Jittered)
• Il campionamneot regolare non può eliminare l’aliasing, può solo ridurlo!
• Perché ?• Poiché i bordi richiedono la presenza di alte frequenze infinite
• Jittering rimpiazza l’aliasnig con rumore• Si usa nel ray tracing• Esempio:
![Page 28: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/28.jpg)
Programmazione Grafica aa2005/2006 28
Tecniche di multicampionamneto con A-
buffer• Prende >1 campione / pixel, suddivide la computazione tra campioni entro il pixel– Lighting– Texturing
• Fattori di forza: aliasing dei bordi e accurato trattamento della trasparenza
![Page 29: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/29.jpg)
Programmazione Grafica aa2005/2006 29
A-buffer
• Per trattare meglio i bordi si usa una maschera di ricoprimento per pixel
• La maschera di ricoprimento, la profondità e il colore costituiscono un fragment
• Durante il rendering i fragment possono esser scartati quando possibile (test di profondità)
• Quando tutti i poligoni sono stati resi, i fragment vengono fusi in un solo colore visibile– Costa in memoria!
![Page 30: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/30.jpg)
Programmazione Grafica aa2005/2006 30
Multicampionamento: Quincunx
• Genera 2 campioni per pixel• w1=0.5, w2=0.125, w3=0.125, w4=0.125, w5=0.125 (filtro triangolare 2D )
• Tutti i pixel producono lo stesso effetto sull’immagine (pixel di centro= 0.5, pixel d’angolo = 4*0.125=0.5)
![Page 31: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/31.jpg)
Programmazione Grafica aa2005/2006 31
Quincunx
• Fatti prestare qualcosa dal vicino
• Qualità comparabile al metodo 4x a metà del costo
![Page 32: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/32.jpg)
Programmazione Grafica aa2005/2006 32
FLIPQUAD
• Pesi: 0.25 per campione• Si comporta meglio di
Quincunx
![Page 33: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/33.jpg)
Programmazione Grafica aa2005/2006 33
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
![Page 34: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/34.jpg)
Programmazione Grafica aa2005/2006 34
Multisampling AA
• Nvidia GeForce3 – per accrescere performance
• 2x RGSS e 4x OGSS • Non si inviano più texture per 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)
![Page 35: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/35.jpg)
Programmazione Grafica aa2005/2006 35
Confronto 4X - Quincunx
4X FSAA 4X Quincunx
![Page 36: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/36.jpg)
Programmazione Grafica aa2005/2006 36
Jittering: 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 perSMOOTHVISION 4x
![Page 37: Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.](https://reader033.fdocument.pub/reader033/viewer/2022060106/5542eb6a497959361e8d6925/html5/thumbnails/37.jpg)
Programmazione Grafica aa2005/2006 37
ATI - SMOOTHVISIONTM
Quake3 screen shot
4x multi-sampling SMOOTHVISION™ 2x High-Quality mode