L'angolo di 6502Free Span Buffer [1]
2002-12-28
Indice

Benvenuti!
Chi sono
Demo
Documenti
Quelli piccoli
Problemi
Scacchi
Immagini
Musica
Il mio blog
Scrivimi

English version 


L'algoritmo Free Span Buffer

In grafica 3D uno dei punti da affrontare e' la rimozione delle superfici nascoste. Con questo termine si intende il fare in modo che oggetti che si trovano vicini alla camera "nascondano" oggetti che si trovano lontani. Questo problema si divide a sua volta in due sottoproblemi distinti: innanzi tutto bisogna stabilire esattamente "cosa nasconde cosa" (il problema delle priorita') e in secondo luogo bisogna anche capire "come" fare in modo che un oggetto vicino nasconda un oggetto lontano.

In queste note non mi occupero' del primo problema (su cui eventualmente spendero' qualche parola in un altro testo) e assumero' che esista un ordinamento gia' stabilito dei poligoni da disegnare p1,...,pn (con pi che copre pj se i>=j). Questo significa che sono state fatte ipotesi o elaborazioni addizionali in quanto come mostra la figura seguente non e' possibile trovare un simile ordinamento nel caso generale.

Sovrapposizione ciclica
Questo semplice esempio mostra come non sia possibile nel caso generale trovare un ordinamento di disegno dei poligoni.

Algoritmi pittore e z-buffer

Un primo approccio che viene utilizzato e' chiamato "l'algoritmo del pittore" e consiste nel disegnare tutti i poligoni partendo dall'ultimo e arrivando al primo. Questo algoritmo e' sicuramente molto semplice ma ha lo svantaggio di fare molte elaborazioni il cui risultato viene poi eliminato. Per ogni punto di ogni poligono vengono infatti calcolate la luminosita', le texture, gli effetti di fog ... per poi magari coprire il tutto con un poligono piu' vicino alla camera. Una parziale soluzione, che inoltre permette di lavorare anche con ordinamenti approssimativi, e' quella dello z-buffer che consiste nel mantenere per ogni pixel un valore di profondita': durante il disegno un pixel viene effettivamente disegnato sullo schermo solo se la profondita' del pixel gia' presente sullo schermo e' superiore e in caso contrario e' possibile risparmiare tutti i calcoli relativi al pixel che risulta nascosto accennati prima (con l'algoritmo z-buffer conviene disegnare front-to-back in modo da disegnare subito i poligoni coprenti per risparmiare calcoli su poligoni successivi). La semplicita' dell'algoritmo z-buffer permette di implementare questa funzionalita' direttamente a livello di scheda video; inoltre il forte abbassamento del prezzo della RAM ha permesso di utilizzare questa soluzione a costi relativamente contenuti.