Sei sulla pagina 1di 25

La Pipeline Grafica La pipeline grafica e' un insieme di operazioni e trasformazioni geometriche, effettuate in sequenza sugli elementi grafici, che

trasforma figure tridimensionali (3D), in valori di illuminazione dei punti dello schermo. Utilizza tecniche grafiche che sono sono state sviluppate per lo piu' negli anni 70 ed 80; col tempo il loro uso si e' di fatto standardizzato, o quasi, per cui i diversi fornitori implementano, sui loro prodotti, funzioni simili. La grafica 3D e' utilizzata spesso per giochi, ed altre applicazioni con immagini in movimento, ove occorre disegnare l'immagine 30-60 volte al secondo, occorrono quindi grandi prestazioni, piu' di quanto la CPU riesca a fornire. La pipeline e' quindi in parte implementata in hardware, da apposite schede grafiche, che sono veri e propri processori paralleli, di grande potenza e complessita'. I fornitori di schede grafiche producono, assieme alle schede, il software per utilizzarle, come driver e le librerie di funzioni software che sono usate dagli sviluppatori. C'e' uno stretto legame fra la struttura interna delle schede ed i dettagli del software per il loro uso; per questo i fabbricanti di schede non forniscono dettagli sul software, che viene distribuito in forma chiusa (senza il source); i driver, per Linux, sono implementati come moduli proprietari del kernel, distribuiti in forma binaria. Anche le librerie per l'uso delle schede si sono in qualche modo standardizzate, ed oggi (2008) esistono due interfaccie per l'uso delle schede grafiche (dette API: Application Standard Interfaces): le OpenGL, sostenute da un consorzio di fornitori, ed originate dalle librerie create negli anni 80 dalla SGI per le sue workstation grafiche; e le DirectX della Microsoft, per l'uso delle schede grafiche con Windows. Le API forniscono al programmatore una loro visione della pipeline grafica, che e' quella che il software applicativo "vede" e puo' non corrispondere nel dettagli a quello che vien fatto nella scheda grafica, che cambia da fornitore a fornitore, da modello a modello e non sempre viene reso noto. Ad ogni modo si puo' dire che la pipeline grafica consiste delle seguenti fasi:

Definizione oggetti grafici (Application Stage): questa fase e' gestita dalla CPU; qui si individua la posizione degli oggetti da disegnare: quali sono visibili e quali no, in che posizione sono, dove sono le luci , da dove viene vista la scena etc. Nei giochi e' la logica del gioco che determina la posizione degli oggetti ad ogni istante, calcolando le collisioni fra gli oggetti, i movimenti etc. Trasformazioni geometriche e calcolo luci (Transform & Lighting o Geometry Stage) In questa fase gli oggetti vengono ruotati e proiettati sul piano dello schermo. Questa fase e' implementata in hardware in molte schede grafiche. Calcolo dei valori di illuminazione di tutti i pixel dello schermo (Rastering Stage). In questa fase vengono applicate textures ed vari effetti (nebbia, trasparenza etc.), si calcola anche quali punti sono nascosti da oggetti avanti ad essi. L'immagine e' disegnata in un'area di memoria detta: "frame buffer". Infine il frame buffer viene convertito in appositi segnali che sono inviati allo schermo.

Il "geometry stage" e' effettuato nelle moderne schede grafiche in hardware, da componenti chiamate "vertex shaders", ce ne sono piu' di uno, che operano in parallelo su diverse parti dell'immagine. Le unita' che effettuano il "raster stage" sono dette "pixel shaders" ed anche qui ce ne sono piu' di una, che lavorano in parallelo. Ci sono poi unita' speciali per il calcolo e

l'applicazione delle texture. Le texture sono immagini bidimensionali che rappresentano le superfici, come rugosita' delle pareti, disegni dei pavimenti, zone di cielo, ed anche la superficie della pelle, dettagli dei volti etc.; tutte queste cose possono essere rappresentate come disegni in due dimensioni (2D) che vengono poi incollate sulle superfici dei triangoli. Ogni punto della texture ha 2 corrdinate, in genere indicate come: (u,v), queste vengono messe in corrispondenza dei punti di coordinate (x,y,z) del vertici dei triangoli.

Geometry stage: In questa fase si calcola la luce della superficie ai vertici dei triangoli, i triangoli vengono poi ruotati e proiettati sulla superficie dello schermo. Qui non si entrera' nei dettagli del calcolo; la matematica di tutto questo non e' poi tanto complicata, ma bisogna avere un po' di nozioni di base. Le superfici degli oggetti da disegnare sono rappresentate come un reticolo di triangoli. I triangoli sono figure semplici e possono ricoprire una superficie curva senza buchi (come sarebbe per dei rettangoli), pero' ci vogliono molti triangoli per rappresentare in modo accettabile superfici curve. Forme geometriche piu' complesse dei triangoli richiedono meno elementi per rappresentare le superfici, ma sono piu' complicati da disegnare e non si prestano bene ad essere trattati in hardware. Per questo risulta conveniente utilizzare triangoli, anche se sono molti si trattano velocemente usando hardware dedicato. I triangoli sono rappresentati dai loro vertici, che hanno una posizione, un colore, una perpendicolare alla superficie (la normale). I colori sono rappresentati tramite le loro componenti RGB (rosso, verde e blu), 3 numeri per ogni punto, che esprimono le intensita' dei colori fondamentali, in piu' c'e' un valore che determina la trasparenza (alfa). Ci sono anche altri modi di esprimere i colori, ma qui assumeremo la questa rappresentazione: RGBA, con ogni valore che va da 0 ad 1. Un colore con tutti valori eguali a 0 e' nero, un colore con valori eguali ad 1 e' bianco. In questa fase della pipeline gli oggetti sono ruotati e proiettati sul piano dello schermo; per trattare nello stesso modo rotazioni e traslazioni, i punti sono rappresentati in uno spazio a 4 dimensioni, quello che i matematici chiamano "spazio affine". In questo modo tutte le trasformazioni geometriche possono essere rappresentate come trasformazioni lineari, esprese da matrici, che operano su vettori. Nelle moderne schede grafiche c'e' hardware apposito per effettuare queste operazioni matematiche. Il calcolo della luce di ogni vertice del triangolo e' effettuato in base ad un modello fenomenologico, che non rappresenta il vero processo fisico della diffusione della luce da parte delle supefici, ma in pratica funziona abbastanza bene e da' un effetto che sembra realistico. La formula per il colore di un vertice e' del tipo seguente (ci sono 3 equazioni, una per ogni componente RGB):

il valore del colore di un punto e' quindi dato dalla somma di una serie di termini:

Il primo termine esprime la luce ambiente, cioe' una luce uniforme, che non viene da una particolare direzione, emessa dal punto stesso, se e' una sorgente luminosa, Ia e' la sua intensita e ka un coefficiente che dipende dal materiale della superficie; C'e' quindi una somma su tutte le sorgenti luminose della scena; o il primo termine della somma esprime la diffusione della luce da parte della superficie; id e' l'intensita' della sorgente, kd e' un coefficiente che dipende dalla superficie, esprime la frazione di luce diffusa indietro, L e' la direzione della luce rispetto al punto ed N la perpendicolare al punto della superficie, il

prodotto diL ed N(e' quello che i matematici chiamano prodotto scalare di due vettori) esprime l'angolo della sorgente di luce rispetto alla superficie il secondo termine della somma esprime la riflessione speculare: e' quella che conferisce alle superfici illuminate un punto brillante, che dipende dalla direzione con cui si guarda la superficie, ks e' un coefficiente che dipende dalla superficie, is l'intensita' della sorgente, R e' la direzione di riflessione e V la direzione dell'osservatore, il prodotto di R e V esprime l'angolo dell'osservatore rispetto alla direzione della riflessione. e' un coefficiente che esprime quanto e' grande il punto lucente.

In figura (dalla Wikipedia) un'immagine che mostra l'efetto dei diversi termine del modello di illuminazione sopra descritto (detto modello di Phong).

Una volta illuminati i vertici dei triangoli vengono ruotati e proiettati, in modo da riportarli sulla superficie dello schermo. Per trattare nello stesso modo rotazioni e traslazioni, i punti sono rappresentati in uno spazio a 4 dimensioni, quello che i matematici chiamano "spazio affine". In questo modo tutte le trasformazioni geometriche possono essere rappresentate come trasformazioni lineari, espresse da matrici, che operano su vettori. Nelle moderne schede grafiche c'e' hardware apposito per effettuare queste operazioni matematiche.

A questo punto c'e' la fase di "clipping", alcuni triangoli sono un po' fuori un po' dentro la zona visibile, vengono quindi "ritagliati" in modo da fare nuovi triangoli, con tutti i vertici visibili. Vengono anche esclusi dal disegno oggetti fuori dalla visuale (object rejection) e supefici che non sono rivolte verso il punto di vista (back-face culling).

Rastering Stage. In questa fase vengono calcolati i valori dei colori dei punti dello schermo, interpolando i valori ai vertici dei triangoli. Ci sono diversi modi di interpolare, che prendono il loro nome dai ricercatori che li hanno introdotti:

flat shading : e' il sistema piu' semplice, tutto il triangolo ha un colore unico, calcolato in base ad valor medio della normale dei vertici. I triangoli di cui e' composta la superficie sono molto evidenti e ce ne vogliono molti per rappresentarla bene. Gourand Shading : i colori ai vertici del triangolo sono calcolati in base alle direzioni normali ai vertici, poi si interpolano i valori dei vertici del triangolo per ottenere i

valori dei colori dei punti interni. I bordi dei triangoli appaiono smussati, l'immagine e' piu' realistica ed occorrono meno triangoli per rappresentare la superficie; Phong Shading : si calcolano le normali ai punti interni del triangolo, interpolando quelle dei vertici, ed in base alle normali si calcola la luce su ogni punto. Questo metodo e' piu' pesante dal punto di vista del calcolo, ma permette una miglior rappresentazione delle superfici ed anche una buona resa degli effetti di riflessione speculare delle superfici.

Nella figura sotto il confronto fra il flat ed il Gouraud shading, si vede come il Gouraud shading comuffi i bordi dei triangoli e come, modulando i colori, la superficie sembri piu' tondeggiante. Sotto ancora confronto fra flat e Phong shading, il Phong shading rende meglio gli effetti speculari e le superfici. Le schede grafiche in genere implementano in hardware il flat ed il Gourand Shading, solo recentemente si e' iniziato ad usare il Phong Shading.

Nella fase di rendering vengono anche applicati alle superfici le texture. Ed i colori dei punti interni dei triangoli vengono combinati con i colori delle texture; siccome i valori dei colori sono in genere rappresentati da numeri fra zero ed uno, e per combinare i colori delle texture si moltiplicano fra loro i loro valori, accade che combinando piu' colori si finisca per avere colori molto scuri, come si oserva in alcuni videogiochi. Anche l'illuminazione di superfici puo' essere rappresentata da texture, e le texture vengono utilizzate per molti effetti speciali, come rendere rugose le superfici etc., ci possono essere anche texture animate, per rappresentare superfici che cambiano colore. Nelle schede grafiche sono anche implementati metodi complicati per migliorere l'applicazione delle texture, tenendo conto degli effetti prospettici e della distanza dall'oggetto. Nella tecnica detta: "mipmapping" vengono utilizzate diverse versioni delle texture, via via rimpicciolite ed utilizzate se la superficie e' distante. Quando poi, cambiando la distanza, ad un pixel dell'immagine corrispondono piu' punti della texture questa viene "filtrata"; nel bilinear filtering si media sui punti vicini della texture, nel trilinear filtering si media anche sulle texture di dimensioni diverse, da usarsi per diverse distanze; nell'anisotropic filtering si media in modo diverso lengo le 2 dimensioni della superficie, questo serve per tener conto di effetti prospettici, che si osservano quando la superficie e' inclinata rispetto alla linea di vista. In figura un esempio di texture applicata ad una sfera. Si vede come la mappatura possa essere fatta in diversi modi.

Alla fine della fase di rendering vengono effettuati tutta una serie di test, che permettono di realizzare effetti particolari:

fog : effetti di nebbia: in base alla distanza dal punto di osservazione si introduce un fattore di mascheramento dei colori, che appare come una nebbia che nasconde gli oggetti piu' lontani; alfa-testing : si combinano i colori dei punti sulla linea di vista tenendo conto della trasparenza stencil test : certe zone della figura possono non essere disegnate, in base ad una mascheratura, conservata in una zona particolare, della "stencil bufer"; depth test: Nel disegnare l'immagine accade che alcuni punti ne coprano altri, che non sono piu' visibili. Per sapere quali punti sono coperti si utilizza il cosiddetto zbuffer: assieme alle coordinate ed ai colori di ogni punto viene conservata, nello zbuffer, la sua distanza dal punto di osservazione. Nel calcolare i colori dei pixel viene poi tenuto solo il punto piu' vicino all'osservatore. Antialiasing : il rappresentare linee diagonali nello schermo, che e' composta da tanti quadratini (i pixel), puo' far apparire le linee a scalini. Per evitare questi effetti (detti di aliasing) vengono utilizate tecniche di anti-aliasing, che mischiano i valori dei pixel vicini per rendere meno evidenti i bordi (dithering).

Il Frame Buffer I valori di illuminazione e colore calcolati per ogni pixel sono scritti infine su una zona di memoria detta "frame buffer", il frame buffer viene riportato sullo schermo dall'elettronica della scheda grafica. In Genere ci sono 2 frame buffer (talvolta 3), mentre si riporta uno sullo schermo si disegna l'immagine sull'altro. La componente che trasforma i valori del frame buffer in segnali video analogici e' detta: RAMDAC (random Access memory Digital Analog Converter), questi segnali vengono inviati al video coi segnali che pilotano il fascio di elettroni lungo le linee e le colonne dello schermo. In caso di video digitali questa conversione non serve, possono essere utilizzati direttamente i valori digitali dei colori e la trasmissione dei dati al video avviene in modo diverso. La scheda video puo' produrre diversi tipi di segnali:

segnali analogici, per schermi a tubo catodico e certi schermi LCD, che hanno solo ingresso analogico e fanno poi una ri-conversione a volori digitali, per questi si usa un connettore tipo VGA; segnali digitali, per i quali si usa un connettore tipo DVI, ci sono diversi tipi di connettori DVI, alcuni possono portare anche un segnale analogico oltre a quello

digitale. Il tipo DVI-I ha sia segnale analogico che digitale, il DVI-D solo digitale, il DVI-A solo analogico. I connettori dei diversi tipi non sono perfettamente compatibili. Segnali tipo televisivo, per cui si usa un connettore tipo RCA od S-video

shader la parola inglese shader indica uno strumento della computer grafica 3D che generalmente utilizzato per determinare l'aspetto finale della superficie di un oggetto. Consiste essenzialmente in un insieme di istruzioni, quindi un programma sottoposto ad alcune restrizioni secondo il paradigma dello stream processing. Caratteristiche principali Gli shader devono riprodurre il comportamento fisico del materiale che compone l'oggetto cui sono applicati. Si pu quindi creare uno shader per i metalli, uno per la plastica, uno per il vetro e cos via, e riutilizzarli pi volte all'interno di una scena. Una volta modellato un oggetto complesso, come pu essere ad esempio una finestra, si assocer al modello della cornice uno shader per il legno, uno per la maniglia, e uno per il vetro. La caratteristica riutilizzabilit di questo strumento preziosa nel lavoro con la computer grafica 3D, sia in termini di tempo che di risultato finale. Per determinare l'apparenza della superficie, essi utilizzano tecniche gi consolidate come l'applicazione di texture, gestione delle ombre. Gli shader possono anche essere usati per applicare effetti di postprocessing. Essendo programmi a tutti gli effetti, possibile utilizzarli anche per la replicazione di eventi fisici molto complessi quali collisioni e simulazioni fluidodinamiche. Nell'ambito dell'ottica sono abitualmente usati per simulare: diffusione, riflessione, rifrazione, e dispersione della luce. Shader nelle pipeline grafiche [modifica] Le moderne Graphics Processing Unit dispongono di diverse pipeline adibite alla trasformazione di una scena 3D in un'immagine raster che possa essere rappresentata sullo schermo. Tali pipeline svolgono una serie di operazioni basate su shader programmabili. Tipologie di shader [modifica] Le librerie grafiche DirectX e OpenGL utilizzano tre tipologie di shader, che sfruttano le capacit di shading delle Graphics Processing Unit presenti nelle schede video. Vertex shader - gestisce la posizione dei vertici di un oggetto, pertanto ne pu alterare solamente la forma Geometry shader - viene usato per combinare una serie di vertici per formare un oggetto pi complesso al quale applicare effetti di pixel shading: un'applicazione pu definire dei GS che prendono tre vertici di un triangolo e fanno una cosa che si chiama tassellazione, ovvero crea automaticamente dei triangoli all'interno. Pixel shader - elabora i singoli pixel di un oggetto, per applicare texture o effetti come bump mapping o nebbia (calcola che colore avr ogni pixel in base alla texture applicata e all'illuminazione della scena). Con la decima versione delle librerie DirectX, integrate in Microsoft Windows Vista, le tre tipologie sono state riunite nell'Unified shader model, o Shader Model 4.0. Schema semplifcato di una pipeline grafica [modifica] 1. 2. 3. 4. La CPU invia le istruzioni e le coordinate 3D della scena alla GPU Nel vertex shader programmabile viene trasformata la geometria e vengono applicati alcuni effetti di illuminazione Il geometry shader, se presente, trasforma ulteriormente la geometria della scena La geometria viene riprodotta in triangoli, che vengono ulteriormente trasformati

5. 6.

in quad (ogni quad una primitiva di 2x2 pixel) Vengono applicati ulteriori effetti tramite il pixel shader Viene effettuato il test di visibilit (z-test): se un pixel visibile, viene scritto nel framebuffer per l'output su schermo.

Il vertex shader una sequenza di istruzioni, usate nella computer grafica, che permette di modificare gli attributi dei vertici della geometria assegnando il calcolo alla Graphics Processing Unit (GPU) presente sulla scheda video. I vertex shader possono modificare le coordinate dei vertici, i parametri di illuminazione (tra cui il colore), la parte di texture visualizzata, eccetera. L'uso dei vertex shader diventato sempre pi massiccio negli ultimi anni grazie all'aumento della potenza delle schede grafiche ed alla maggior flessibilit che i produttori di GPU hanno introdotto con le ultime versioni. Analogamente al pixel shader, il vertex shader viene eseguito in parallelo sulla GPU permettendo una maggior potenza e velocit di calcolo. Il Geometry shader (GS) un programma shader eseguito di solito sulla Graphics Processing Unit (GPU) di una scheda grafica. Funzione [modifica] Il geometry shader in grado di generare nuove primitive (quali pixel, linee o triangoli) partendo da primitive gi esistenti. Viene eseguito dopo al vertex shader e riceve come input un'intera primitiva e le eventuali informazioni di adiacenza. Se, ad esempio, lo shader effettuer un'operazione su un triangolo, ricever in input le coordinate dei tre vertici. Il geometry shader restituisce come output zero o pi primitive, che vengono rasterizzate e inviate al pixel shader per le ultime elaborazioni. Il pixel shader (o fragment shader secondo la nomenclatura OpenGL) nel campo della grafica per computer, uno shader, ovvero una sequenza di istruzioni, un breve programma, che viene eseguito da una Graphics Processing Unit per ciascun pixel da elaborare. L'uso dei pixel shader consente di applicare effetti come bump mapping, ombre, esplosioni, effetti di diffrazione, rifrazione e la simulazione dell'effetto fresnel (implementato nel videogioco Half-Life 2) permettendo una migliore simulazione degli effetti dell'illuminazione e un aspetto pi realistico di superfici dalle propriet ottiche particolari. La potenza che risiede nell'uso dei pixel shader nelle moderne schede grafiche dovuta alla possibilit di sfruttare un'elaborazione parallela grazie alle numerose pipeline presenti nella GPU. Una volta definita la sequenza di istruzioni, questa verr eseguita in maniera parallela su pi fragment, ottimizzando cos il tempo di calcolo. Le pi recenti schede grafiche hanno abbandonato la tradizionale suddivisione fra unit pixel shader e unit vertex shader in favore dei cosiddetti stream processor. Questo sistema permette di rendere pi flessibile la straordinaria potenza di calcolo di queste nuove schede: gli stream processor sono dei processori in grado di elaborare indifferentemente sia istruzioni PS che VS, in questo modo la GPU elabora a "pieno carico", senza lasciare pi, ad esempio, le unit VS ferme mentre quelle PS arrancano sotto il peso dei calcoli. FASE RENDERING

Modellare Elaborazione geometrica - geometric processing Rasterizzazione Display GEOMETRIC Cambiamento coordinate da world a screen Trasformazioni dei vertici Normalized view volume: proiezione ortografica Clipping al view volume Hidden surface Shading RASTERIZZAZIONE Scan conversione Operazioni su pixel (texture) DISPLAY Effetti: anti aliasing

Il Frame Buffer la memoria che registra temporaneamente le immagini generate world coordinate system lo spazio pu essere orientato in due modi: mano sinistra: avvolgete la mano allasse x e puntate il pollice verso x a sinistra, z (medio) viene verso di voi e y (indice) va verso lalto mano destra: avvolgete la mano allasse x e puntate il pollice verso x a destra, z (medio) viene verso di voi e y (indice) va verso lalto questo definisce il world coordinate system in cui sono definiti la scena Il processo base di raffigurazione di una geometria determinare quale parte della geometria raffigurare: trasformazione window_to_viewport decidere quali linee sono visibili e quali esterne alla window: clipping convertire la geometria in pixel: scan conversione di linee e poligoni trasformazione window_to_viewport . Le coordinate schermo La figura precedente definita in uno spazio cartesiano indipendente dal dispositivo di visualizzazione (display, carta, ) In passato il disegno veniva descritto direttamente in coordinate del dispositivo (es. il plotter) La conversione tra coordinate mondo - world co-ordinates e coordinate dispositivo device co-ordinates si chiama trasformazione window-to-viewport Modelli di Illuminazione 1- Modelli locali Obiettivi Visualizzare scene cercando di simulare al meglio la realt Elemento chiave: interazione luce-materiali Modellare le sorgenti di luce Modellare lapparenza visiva dei materiali Calcolare linterazione Distinguiamo tra:

Modelli di illuminazione globale Modelli di illuminazione locale I modelli locali trattano linterazione luce-materia localmente in un punto campione sulla superficie, senza occuparsi di calcolare da dove proviene la luce (sorgenti di luce e/o ambiente?) I modelli globali si occupano invece di descrivere da dove proviene la luce prima della sua interazione con un materiale e dove va dopo questa interazione Una immagine pu essere determinata applicando solo il modello di illuminazione locale o anche quello globale per determinare pi correttamente da dove proviene la luce (meglio, ma pi lento) I modelli di illuminazione locale considerano: sorgenti di luce puntiforme allinfinito o a distanza finita illuminazione ambiente costante riflessione diffusiva o speculare approssimata sorgenti di luce estese approssimate sorgenti di luce direzionali I modelli globali tengono conto anche di caratteristiche fotometriche e radiometriche delle sorgenti: composizione spettrale della luce emessa energia e geometria della emissione forma del corpo illuminante luce ambiente modellata correttamente SORGENTI DI LUCE Il colore della sorgente descritto con tre componenti di intensit (vettore) per le tre bande rosso, verde, blu: I=[IR, IG, IB] Distinguiamo tra sorgenti di luce e luce ambiente In generale lenergia che giunge da una sorgente a un punto inversamente proporzionale al quadrato della distanza ma in CG non sempre questo principio applicato LUCE AMBIENTE La luce ambiente nei modelli locali descrive il contributo di illuminazione dovuto alla diffusione (atmosfera, pulviscolo, nebbia) e riflessioni multiple tra le superfici degli oggetti della scena Anche la luce ambiente pu avere un colore descritto come vettore: Ia=[Ia,R , Ia,G , Ia,B] MODELLI ILLUMINAZIONE LOCALI Livelli di accuratezza crescente Lambert: Riflessione diffusa Phong: Riflessione diffusa Riflessione speculare imperfetta Componente luce ambiente Sorgenti di luce Trasparenza RIFLESSIONE NEI MODELLI LOCALI La riflessione di tre tipi. Dati: N normale alla superficie, L direzione luce incidente, R direzione luce riflessa in modo speculare: Riflessione diffusiva: costante in tutte le direzioni, ma funzione di LN (ovvero dipende dallangolazione con cui la luce arriva sulla superficie) Riflessione speculare perfetta LN = RN e la luce viene riflessa lungo ununica direzione

Riflessione speculare imperfetta: la luce viene riflessa allinterno di un angolo solido con intensit massima nella direzione R, e decrescente a 0 allontanandosi da R (simula bagliori, highlight) Nei modelli locali ogni materiale caratterizzato da una riflettivit, ovvero da quale percentuale di luce nelle tre componenti rosso,verde e blu riflette La riflettivit non unica, ma in relazione al tipo di luce che si considera Riflettivit alla luce ambiente Alla riflessione diffusiva Alla riflessione speculare Questo modo di trattare la riflettivit non ha alcuna corrispondenza con la realt fisica: solo una approssimazione! MODELLO DI PHONG Calcola anche la riflessione speculare imperfetta (bagliori) considerando la posizione dellosservatore La luce riflessa data dalla somma di 3 componenti: 1. Riflessione lambertiana 2. Riflessione speculare imperfetta 3. Luce ambientale

I r = k d I i cosq + k s I i (cos a ) + k a I a
n
1. 2. 3. 4. Laspetto della superficie del materiale caratterizzato da: kd: coefficiente di riflessione diffusiva 0 kd 1 ks: coefficiente di riflessione speculare 0 ks 1 ka: coefficiente di riflessione luce ambientale 0 ka 1 n: esponente di Phong (ampiezza dellhighlight) Il colore e lapparenza della superficie dipendono quindi dai nove valori (kdR kdG kdB) colore diffuso (ksR ksG ksB) colore speculare (kaR kaG kaB) colore ambientale Per il principio di conservazione dellenergia dovrebbe essere: kd + ks 1 Ovvero una superficie non pu riflettere pi luce di quanta ne riceve. Tuttavia nella simulazione software questo pu anche verificarsi come errore voluto. Dipende dallimplementazione software

Nella componente speculare: Langolo misura quanto losservatore si discosta dalla direzione speculare rispetto alla luce Lesponente di Phong n determina lampiezza dellhighlight (maggiore n, minore lhighlight La componente ambientale simula la luce che non proviene direttamente dalle sorgenti di illuminazione ma dagli altri oggetti dellambiente ed costante (indipendente dal punto di vista e dalla posizione delle sorgenti). Moltissimi oggetti di uso comune hanno una riflessione mista: in parte diffusiva e in parte speculare Applicare il modello locale Shading e Smoothing

Shading: raffigurare poliedri assegnando alle facce una luminosit proporzionale alla luce che ricevono Smoothing: simulare superfici curve descritte da poliedri, mediante tecniche di interpolazione La luminosit che giunge su una faccia dipende dal suo orientamento verso la sorgente di luce (legge di Lambert) essenziale conoscere la normale di una faccia Vari metodi di calcolo del vettore n normale ad una superficie Shading di poligoni (Flat shading) N, V ed L variano su ogni poligono Se si assume osservatore distante e sorgente di luce distante V e L sono costanti Anche N quindi costante sullintero poligono Il calcolo di shading viene fatto per lintero poligono una sola volta Flat shading: i poligoni vengono colorati uniformemente indipendentemente dalla posizione dellosservatore La luminosit{ del colore del poligono determinata dallangolo tra la direzione della normale al poligono e la direzione da cui proviene la luce molto veloce e consente animazioni real time importante sfruttare informazioni gi calcolate nel passare da una faccia alla successiva Si possono organizzare i triangoli di un poliedro in triangle strip, il che permette di risparmiare informazioni sulle normali, ad es. OGL usa la normale del terzo vertice per il primo triangolo, la normale del quarto per il secondo e cos via SMOOTH SHADING Ci sono due tecniche di interpolazione: Interpolazione di Gouraud Implementata a livello hardware su tutte le recenti schede grafiche 3D Interpolazione con modello di Phong Implementata a livello hardware solo sulle pi recenti e costose schede grafiche 3D GOURAOURD Gouraud smoothing: i poligoni vengono colorati indipendentemente dalla posizione dellosservatore Si considerano le normali alla superficie nei vertici del poligono e per ognuno dei vertici si calcola lintensit{ Nei punti interni al poligono lintensit{ non costante ma determinata dalla interpolazione bilineare di quella nei vertici La continuit cromatica garantita tra poligoni adiacenti Gouraud shading: attenzione! Sebbene la continuit{ cromatica tra poligoni adiacenti renda laspetto di una superficie curva, questa sempre e solo poligonale! Si vede dai contorni! PHONG SMOOTHING Basato sullinterpolazione delle normali Il colore si calcola alla fine sul singolo pixel 1.Gouraud vs. 2.Phong smoothing hardware veloce continuo fino al I ordine effetti lucentezza limitati (migliorano se si aumenta la triangolazione) Software (hw sulle nuove sch. 3D) Pi lento continuo fino al II ordine si pu applicare modello di Phong per lucentezza FLAT,GERAURD,PHONG

LUCE La luce che colpisce un materiale pu essere: 1. Assorbita (trasformata in unaltra forma di energia: calore.) 2. Riflessa (diffusamente e/o specularmente) 3. Trasmessa (diffusamente e/o specularmente) Trasmissione speculare: Rifrazione, governata dalla legge di Snell: Sorgente di luce un oggetto in grado di emettere un flusso luminoso Ci possibile perch unaltra forma di energia viene trasformata in energia luminosa 1. 2. 3. 4. 5. La luce prodotta dalle sorgenti pu essere: Naturale (illuminazione naturale) - luce diretta del sole - luce diffusa dallatmosfera Artificiale (illuminazione artificiale) - luce prodotta dagli apparecchi di illuminazione Una sorgente puntiforme ideale emette luce con la stessa intensit luminosa in tutte le direzione Gli apparecchi reali emettono luce con intensit luminosa differente in funzione della direzione rispetto ad un asse di riferimento Lasse di riferimento coincide in genere con lasse geometrico dellapparecchio o della sorgente

Limiti dei modelli di illuminazione locale I modelli Flat, Gourad, Phong sono stati formulati empiricamente Una soluzione corretta del problema della interazione tra luce e materia, richiederebbe la soluzione delle equazioni di Maxwell per il campo elettromagnetico Tale approccio non praticabile in forma analitica o numerica a causa della elevata complessit Z-BUFFER Lo Z-buffer un dispositivo hardware (o simulato via software) che consente la rimozione delle linee e facce nascoste in tempo reale Per ogni punto immagine di ogni poligono lo Z-buffer mantiene linformazione sulla distanza dal punto di vista TEXTURE MAPPING La tecnica usata per gestire variazioni di riflettanza memorizzare la riflettanza come una funzione o una immagine e mapparla sulla superficie La funzione o immagine detta texture map ed il processo di mappatura detto texture mapping Pu essere classificato in base a differenti propriet: Dimensionalit della funzione di texture Il tipo di corrispondenza tra punti della superficie e punti della texture map Se la funzione di texture procedurale o se essenzialmente una tabella Il texture mapping non riguarda solo la definizione del colore Texture Mapping Utilizzo di un pattern per determinare il colore di un frammento. I pattern possono essere:

Determinati da una procedura di generazione di texture Immagine digitalizzata Bump mapping Simulazione di irregolarit geometriche superficiali attraverso la perturbazione delle normali Richiede elaborazione su ciascun frammento Displacement mapping Perturbazione della geometria Environment (reflection mapping) Come immagine per il texture mapping uso una immagine dellambiente Simulazione di superfici riflettenti, cerco di ottenere un effetto simile al raytracing E un caso particolare di texture mapping TEXTURE MAPPING 1D, 2D, 3D Texture mapping Il texture mapping, nella sua forma pi usata (color mapping) consiste nellapplicare una immagine su una superficie 2D TEXTURE MAPPING Tutte le strategie di mapping comportano mapping tra sistemi di riferimento: Coordinate di texture: utilizzate per identificare i punti sulla immagine da mappare Coordinate parametriche: utilizzate per modellizzare curve e superfici Coordinate object o world: dove avviene il mapping (concettualmente) Coordinate window: dove limmagine finale prodotta Gli elementi della texture map, sono detti texels o texture elements La texture map una matrice 2D che immaginiamo descritta da una funzione continua T(s,t) s, t sono le coordinate di texture (normalizzate in [0,1]) T sono i valori RGB (ma potrebbero essere altro) Definizione di un mapping tra una superficie rettangolare (texture map) e una superficie arbitraria (es.: sfera) Assegnamo il colore nella fase di rendering....il mapping tra coordinate window e coordinate texture: che effetto ha la proiezione prospettica? Aliasing: texture periodica Il mapping pu essere diretto o inverso Mapping diretto: lalgoritmo opera in texture space. Ogni texel viene mappato in world coord. poi trasformato e proiettato Definiamo una funzione che associa un texel con un punto delloggetto, che a sua volta verr mappato sul piano immagine Difetto: posso avere dei buchi o delle sovrapposizioni, non usato MAPPING INVERSO In realt ci servirebbe procedere in senso opposto: nel momento in cui assegnamo il colore al pixel dellimmagine finale vogliamo sapere quali sono i valori RGB da considerare La funzione di mapping deve quindi essere invertibile Maglie poligonali: Definizione della texture nello spazio bidimensionale (s,t): coordinate di texture In fase di modellazione associare ad ogni vertice di ciascun triangolo (xi,yi,zi) il corrispondente punto nello spazio (s,t)

In fase di rendering associare ad ogni frammento generato allinterno di una faccia il colore del corrispondente punto nello spazio (s,t) Si pu definire facilmente la funzione di mapping se ho la superficie descritta in forma parametrica Basta specificare una corrispondenza tra u,v e s,t (pu essere lidentit{ con un fattore di normalizzazione) TEXTURE MAPPING LINEARE Mapping semplice ed invertibile Non tiene conto della curvatura della superficie descritta da u,v Va bene per mappare su un piano ALIASING Minification: un pixel corrisponde a molti texel. La texture viene campionata: posso avere un effetto di mancanza di dettagli Magnification: un texel corrisponde a molti pixel. La texture viene ingrandita sullimmagine Cosa succede se un pixel copre molti texel (minification)? Se uso il point sampling posso avere artefatti tipo seghettature e pattern nelle immagini statiche In animazione posso avere un effetto di migrazione della texture Il filtraggio bilineare va bene se non ho una minificazione eccessiva Dovrei considerare tutti i texel che vengono coperti dal pixel (area averaging, si fa la media dei pixel adiacenti) Per ridurre i tempi di calcolo della media uso delle strutture a piramide TEXTURE MAPPING E SHADING Il valore di colore ottenuto dal texture mapping pu essere usato come tale per assegnare il colore al pixel o pu essere composto al valore di riflessione diffusa del modello di Phong. BUMP MAPPING Tecnica per far apparire corrugate superfici lisce senza alterare il modello geometrico Basata sulla alterazione della normale alla superficie prima che venga applicato il modello di shading Il bump mapping non determina occlusioni e ombre Devo variare la normale per ciascun frammento. Lo posso realizzare nella pipeline?? SI, programmando un fragment shader SI, effettuando varianti del bump mapping (normal mapping) Il bump mapping non supportato in OpenGL perch la texture applicata dopo il calcolo dellilluminazione DISPLACEMENT MAPPING Utilizzo la texture map per variare la geometria I texel rappresentano degli offset da applicare alla geometria ENVIROMENT MAPPING Le superfici altamente riflettenti riflettono lambiente circostante La simulazione di questi effetti richiede informazioni globali sulla scena Ray tracing Come rendere questi effetti avendo a disposizione un modello di illuminazione locale? Attraverso le mappe di riflessione (environment map o reflection map). Difetti:

Limmagine che generiamo nel primo passaggio non molto corretta perch generata senza la presenza dello specchio Su quale superficie proiettiamo la scena nel primo passo? Vorrei avere una informazione completa sulla scena in modo da poterla applicare se muovo lo specchio Lapproccio classico fare la proiezione su una sfera Nella versione originale dellenvironment mapping la superficie della sfera veniva poi convertita in un rettangolo

Illuminazione e shading [modifica] Lo shading (lett. "ombreggiatura") il processo di determinazione del colore di un determinato pixel dell'immagine. Esso comprende in genere il processo di illuminazione (lighting), che ricostruisce l'interazione tra gli oggetti e le sorgenti di luce: a questo scopo sono necessari per un modello di illuminazione le propriet della luce, le propriet di riflessione e la normale alla superficie nel punto in cui l'equazione di illuminazione viene calcolata. Per produrre una rappresentazione visuale dell'immagine efficace, bisogna simulare la fisica della luce. Il modello matematico pi astratto del comportamento della luce l'equazione di rendering, basata sulla legge di conservazione dell'energia. Essa un'equazione integrale, che calcola la luce in una certa posizione come la luce emessa in quella posizione sommata all'integrale della luce riflessa da tutti gli oggetti della scena che colpisce quel punto. Questa equazione infinita non pu essere risolta con algoritmi finiti, quindi necessita di approssimazione. I modelli di illuminazione pi semplici considerano solo la luce che viaggia direttamente da una sorgente luminosa ad un oggetto: questa chiamata "illuminazione diretta". Il modo in cui la luce viene riflessa dall'oggetto pu essere descritto da una funzione matematica, chiamata "funzione di distribuzione della riflessione bidirezionale" (bidirectional reflectance distribution function, BRDF), che tiene conto del materiale illuminato. La maggior parte dei sistemi di rendering semplifica ulteriormente e calcola l'illuminazione diretta come la somma di due componenti: diffusa e speculare. La componente diffusa, o Lambertiana corrisponde alla luce che viene respinta dall'oggetto in tutte le direzioni, quella speculare alla luce che si riflette sulla superficie dell'oggetto come su uno specchio. Il modello di riflessione di Phong aggiunge una terza componente, ambientale, che fornisce una simulazione basilare dell'illuminazione indiretta. ---La riflessione diffusa della luce da parte di una superficie una riflessione (fenomeni che avvengono quando la luce interagisce con la materia)non speculare, in cui cio un raggio di luce che incide sulla superficie non viene rimandato indietro ad un angolo determinato, ma viene diffuso su molte direzioni che possiamo descrivere come casuali. Un diffusore ideale (con riflettanza lambertiana) riflette la luce omogeneamente in tutte le direzioni. Un oggetto fatto da particelle che non assorbano la luce, come il gesso, o da fibre incolori, come la carta, o da un materiale policristallino, come il marmo di Carrara, riesce a riflettere indietro quasi tutta la luce che riceve, ma in maniera diffusa, non specularmente. Gran parte degli oggetti che vediamo tutti i giorni riflettono diffusamente la luce, bianca o colorata, tanto che si pu dire che la riflessione diffusa di gran lunga il meccanismo pi importante con cui gli oggetti si rivelano al nostro occhio. Riflessione speculare [modifica] Molti materiali sono in grado di riflettere specularmente la luce, purch sia possibile "lucidare" la loro superficie, cio eliminarne tutte le irregolarit che siano confrontabili con lunghezza d'onda della luce (frazioni di m). Spontaneamente regolari, tra i materiali comuni, sono le superfici dei liquidi, che si dispongono con una superficie

perfettamente piana, o comunque liscia, e il vetro, perch la sua struttura amorfa fa s che le molecole, libere dalle rigide geometrie cristalline, durante la solidificazione possano seguire le tensioni superficiali, che impongono una superficie microscopicamente liscia. Solo i metalli, per, possono riflettere con efficienza la luce che li colpisce: nei normali specchi il materiale riflettente, infatti, alluminio o argento. Tutti gli altri materiali comuni, anche se "lucidati a specchio", riflettono solo piccole frazioni di luce. Tranne che in condizioni particolari, come nei prismi di vetro usati in "riflessione totale"; o in materiali complessi, appositamente strutturati, come la pelle argentea di molti pesci. La riflessione diffusa da superfici bianche, invece, pu essere molto efficiente nel ridare indietro pressoch tutta la luce ricevuta, perch deriva dalla somma di tutte le piccole riflessioni che vengono dagli strati superficiali del materiale. Riflessione mista [modifica] Se un oggetto diffondente ha una superficie microscopicamente regolare, si possono avere contemporaneamente sia riflessione diffusa che speculare, come gli oggetti lucidi non metallici: un piatto di ceramica, un mobile laccato, una ciliegia, un marmo levigato. Un oggetto bianco lucido in genere riflette non pi del 5 o 10% della luce, e diffonde tutto il resto. ------Gli oggetti sono in realt bombardati da moltissime sorgenti luminose indirette: la luce "rimbalza" da un oggetto all'altro finch non perde energia. L'"illuminazione globale" indaga questo comportamento della radiazione luminosa. Come l'illuminazione diretta, essa comprende una componente diffusa ed una speculare. La riflessione reciproca diffusa riguarda la luce che colpisce un oggetto dopo averne gi colpito un altro. Dal momento che questo ha assorbito una data lunghezza d'onda dello spettro della luce che lo ha colpito, la luce che respinge ha un colore diverso da quella da cui illuminato. La riflessione reciproca speculare si manifesta generalmente con caustiche (ovvero con la concentrazione della radiazione luminosa in un punto da parte di una superficie speculare, come quella ottenibile dalla luce solare con una lente). Dato che gli algoritmi completi di illuminazione globale, come Radiosity e il photon mapping, richiedono grande capacit di calcolo, sono state sviluppate tecniche per approssimare l'illuminazione globale. L'algoritmo di occlusione ambientale, ad esempio, calcola da quanta luce ambientale pu essere raggiunto ogni punto di un modello. I modelli poligonali impiegati in applicazioni in tempo reale non possono avere un alto livello di dettaglio; il sistema pi semplice per illuminarli calcolare un valore di intensit luminosa per ogni poligono, basato sulla sua normale. Questo metodo chiamato flat shading, dato che rivela la forma "piatta" di ogni poligono. Per evitare questa "sfaccettatura", i valori corrispondenti ai vertici devono essere interpolati. Il Gouraud shading calcola l'intensit luminosa ad ogni vertice del modello basandosi sulla normale corrispondente, quindi esegue una interpolazione lineare(metodo per trovare la radice di una funzione) su tutta la superficie del poligono. Il difetto pi evidente di questa tecnica che "perde" i riflessi speculari vicini al centro di un poligono. La soluzione data dal Phong shading l'interpolazione su tutta la superficie del poligono delle normali ai vertici, e successivamente il calcolo dell'illuminazione pixel per pixel. Queste equazioni si applicano a oggetti che possiedono colorazione propria, ma modellare ogni dettaglio presente sulla superficie di un oggetto sarebbe enormemente dispendioso. Col texture mapping si pu descrivere la superficie di un oggetto senza aggiungere complessit alla scena: un'immagine (texture) viene "spalmata" sulla superficie di un oggetto, come un planisfero su una sfera per creare un mappamondo; durante lo shading, il colore del modello viene identificato in quello della texture, nel suo pixel ("texel") corrispondente.

Dato che le texture non possono rispecchiare l'illuminazione della scena, ma solo il colore del modello, per "perturbare" le normali ai poligoni si usa il bump mapping. Questo fa uso di immagini che contengono, anzich un colore, un valore usato per modificare la normale al poligono nel punto corrispondente, e modificare cos la forma della superficie. Questa tecnica aggiunge "ruvidit" alle superfici con grande risparmio di poligoni. Il normal mapping una tecnica che sostituisce invece di perturbare la normale alla superficie: una normal map un'immagine a 3 canali in cui ogni pixel rappresenta un vettore 3D, ovvero la normale al punto stesso. L'obiettivo di ogni algoritmo di shading determinare il colore risultante di uno specifico punto sulla superficie di un oggetto. Gli shader programmabili offrono grande versatilit in questo, basandosi su linguaggi di programmazione specifici detti "linguaggi di shading". Questi linguaggi vengono sviluppati per applicazioni specifiche nella computer grafica, e includonoalgebra lineare e caratteristiche mirate alle problematiche di illuminazione. Gli shader possono includere qualsiasi tecnica di illuminazione, texture mapping e manipolazione geometrica. Uno "shader procedurale" determina il colore risultante in maniera completamente algoritmica: possono cos risultare convincenti senza bisogno di grandi texture. Formano una classe a s stante i "vertex shader" e i "pixel shader", designati appositamente per funzionare insieme ad algoritmi scanline e per girare su una GPU. Mentre in precedenza ogni hardware grafico implementava una specifica pipeline che costringeva l'utilizzatore ad usare esclusivamente il modello di illuminazione per cui era programmato l'hardware, con questa categoria di shader ogni momento del rendering sotto il controllo dello sviluppatore. modello di riflessione di Phong Nella computer grafica 3D, il modello di riflessione di Phong un modello d'illuminazione ed ombreggiatura per calcolare il colore dei punti appartenenti ad una superficie. Venne sviluppato da Bui Tuong Phong durante la sua discussione di dottorato presso l'Universit dello Utah. Questa dissertazione prese il nome di "Illumination for Computer Generated Pictures", venne sostenuta nel 1973, insieme ad un metodo che permetteva l'interpolazione di colore per ogni pixel appartenente ad un poligono rasterizzato. La tecnica interpolativa prende il nome di Phong shading, anche nel caso in cui venga utilizzata con modelli di riflessione diversi da quello qui descritto. Il modello di riflessione di Phong pu essere visto come una semplificazione della pi generica equazione di rendering; con il vantaggio di semplificare il calcolo del colore di un punto della superficie: 1. un modello di riflessione locale, ovvero non considera riflessioni di secondo ordine, a differenza di quanto fatto dal ray tracing e dal radiosity. Al fine di compensare la perdita di parte della luce riflessa, un'ulteriore luce ambiente viene aggiunta alla scena. 2. Divide la riflessione in tre fattori, riflessione speculare, riflessione diffusiva e riflessione d'ambiente. Definiamo per prima cosa, per ogni sorgente luminosa, i componenti is e id, che sono rispettivamente le intensit (spesso misurate in RGB) dei componenti speculare e diffusivo della luce. Una costante ia controlla la luce ambiente, e viene a volte calcolata come somma dei contributi forniti dalle varie sorgenti. Se definiamo, per ogni materiale (che solitamente sono assegnati ai materiali con una relazione 1 a 1): ks: costante di riflessione speculare, la percentuale di luce entrante che viene riflessa kd: costante di riflessione diffusiva, la percentuale di luce entrante che viene diffusa (riflettenza Lambertiana) ka: costante di riflessione d'ambiente, percentuale di riflessione della luce ambiente

presente in ogni punto della scena : costante di lucentezza del materiale in questione, che decide in quale modo la luce viene riflessa. Definiamo inoltre lights come insieme di tutte le sorgenti di luce, N la normale in questo punto, R la direzione di un raggio perfettamente riflesso (rappresentato con un vettore), e V la direzione verso chi guarda (ad esempio una camera virtuale). Il valore di shading per ogni punto della superficie Ip viene calcolato usando questa equazione, che poi sarebbe il Modello di riflessione di Phong:

Il termine diffusivo non utilizza la direzione V, dal momento che costante in tute le direzioni, inclusa la direzione della camera. Il termine speculare grande se il vettore R quasi allineato con V, valore ottenuto misurando con il coseno dell'angolo formato tra di essi, ovvero il prodotto scalare dei vettori normalizzati R e V. Quando grande, la superficie si presenta simile ad uno specchio, e la dimensione della riflessione sar minima grazie all'alto valore del coseno che tende rapidamente a zero se i due vettori non sono allineati. Quando i colori sono rappresentati con valori RGB, questa equazione viene calcolata separatamente per ogni valore della terna. Quello di Phong un modello di riflessione empirico, non basato sulla descrizione fisica dell'interazione di luce, ma piuttosto sull'osservazione informale. Phong osserv che le superfici altamente riflettenti creavano un riflesso piccolo, mentre l'intensit di quelle opache diminuiva in maniera pi graduata. Questa equazione pu essere rappresentata in modo grafico:

In questa immagine, i colori "ambiente" e "diffuso" sono gli stessi; notare che l'intensit della componente diffusiva varia al variare della direzione della superficie, mentre la luce ambiente costante. Il colore speculare bianco, e riflette quasi tutta la luce entrante, ma solo in un limitato fascio di direzioni.

Gouraud shading Il Gouraud shading, che prende il nome da Henri Gouraud, un metodo usato in computer grafica per simulare i diversi effetti di luce e colore su un oggetto. In pratica, serve per ottenere un graduato cambio di colore su superfici a basso numero di poligoni (low-polygon) senza dover ricorrere alla pesantezza computazionale del calcolo pixel per pixel. Gouraud pubblic questa ricerca per la prima volta nel 1971. Principi [modifica] Il principio su cui si basa la tecnica di Gouraud il seguente: viene fatta una stima della normale in ogni vertice di un modello 3D calcolando la media delle normali dei poligoni vi convergono. Partendo da queste stime si pu utilizzare il modello di riflessione di Phong per calcolare l'intensit del colore nei vertici. Il colore dei vari pixel pu essere trovato interpolando bilinearmente i valori calcolati nei vertici. Pregi e difetti [modifica] I punti di forza e di debolezza del Gouraud shading risiedono entrambi nell'uso che

esso fa dell'interpolazione. Interpolare i colori di vari pixel (conoscendone con precisione solo pochi) alleggerisce la computazione rispetto a modelli pi sofisticati (come il Phong shading, da non confondere con l'omonimo modello di riflessione). Purtroppo, per, gli effetti di luce localizzati (come punti di riflettenza, tipo la riflessione di una sorgente di luce su di una mela) non verranno renderizzati correttamente: se l'effetto posizionato al centro del poligono, senza raggiungere i vertici, non apparir come risultato del rendering di Gouraud; se lo stesso effetto posizionato su di un vertice, verr mostrato correttamente, ma verr replicato in modo innaturale sui poligoni adiacenti. Il problema facilmente riconoscibile se si renderizza una scena in cui la sorgente di luce si muove, spostando la riflessione presente sull'oggetto in questione. Con il Gouraud shading si vedrebbe la riflessione allargarsi e stringersi continuamente, raggiungendo i picchi d'intensit nei vertici, e sparendo al centro dei poligoni. Nonostante i problemi descritti, lo shading ideato da Gouraud decisamente migliore del flat shading che richiede molta meno computazione, ma ottiene un risultato sfaccettato.

Phong shading Il Phong shading un metodo di interpolazione di computer grafica 3D, che utilizza l'interpolazione delle normali nella rasterizzazione dei poligoni, per ottenere migliori risultati delle riflessioni speculari tipo quelle generate dal Modello di riflessione di Phong. Dal momento che le pubblicazioni dell'inventore del metodo combin le tecniche d'interpolazione con il proprio modello di riflessione, il termine Phong shading diventato d'uso comune per indicare anche il modello di riflessione o la combinazione di modello di riflessione e modello d'interpolazione. Questi algoritmi vennero sviluppati da Bui Tuong Phong, che li pubblic nella sua dissertazione all'Universit dello Utah nel 1973. Modello di illuminazione o riflessione di Phong [modifica] La riflessione di Phong un modello di illuminazione locale che pu conferire un certo grado di realismo agli oggetti tridimensionali attraverso la combinazione di tre elementi: diffusione, riflessione e luce ambiente per ogni punto della superficie. Il modello di riflessione non contiene elementi specifici per poligoni o pixel, a differenza del modello d'interpolazione. Interpolazione di Phong [modifica]

Esempio di interpolazione ottenuta con il metodo di Phong Come metodo di rendering, il Phong Shading pu essere visto come un miglioramento del Gouraud shading che fornisce una miglior approssimazione all'applicazione puntopunto di un modello di riflessione sottostante, assumendo una variazione gradiente della normale alla superficie. Il metodo d'interpolazione di Phong ha un funzionamento migliore di quello di Gouraud se applicato al modello di riflessione di Phong o a qualsiasi altro modello di riflessioni che generi riflessioni con un angolo limitato (ovvero superfici molto riflettenti).

Il problema principale del Gouraud Shading si ha quando la riflessione vicina al centro di un grande triangolo. In pratica la riflessione non verr mostrata, a causa dell'interpolazione di colori tra i vertici. Questo problema stato corretto dal Phong shading. Siano dati tre vertici in due dimensioni, v1, v2 e v3, e le normali alle superfici per ogni vertice n1, n2 e n3; supponiamo che siano tutte di lunghezza unitaria. A differenza del Gouraud shading, che interpola il colore lungo il triangolo, nel metodo di Phong interpoliamo linearmente la normale N lungo la superficie del triangolo, partendo dalle tre normali date. Questo calcolo viene effettuato per ogni pixel del triangolo, ed in ogni pixel normalizziamo N e la usiamo all'interno del modello d'illuminazione di Phong per ottenere il colore da assegnare al pixel. In alcuni sistemi hardware, le varianti di questo algoritmo vengono chiamate pixel/fragment shading. Solitamente sta a significare che il calcolo di luce pu essere fatto pixel per pixel, e che le variabili luminose (incluse le normali alla superficie o un qualche vettore approssimativo) vengono interpolate lungo il poligono.

Flat shading Il Flat shading la tecnica usata in computer grafica 3D. Colora ognuno dei poligoni che compongono l'oggetto a seconda dell'angolo esistente tra la normale del poligono e la direzione della sorgente, i loro rispettivi colori e l'intensit della luce emessa. Viene solitamente usato per il rendering ad alta velocit, dato che uno shading pi avanzato richiede algoritmi computazionalmente costosi. Lo svantaggio del flat shading sta nell'aspetto "sfaccettato" degli oggetti, se riprodotti in modo low-polygon (ovvero usando poche facce per costruire l'oggetto). Solo raramente questo look pu essere vantaggioso, ad esempio quando si disegnano oggetti poligonali, con spigoli ben definiti. A volte gli artisti usano il flat shading per guardare i poligoni del modello solido che stanno creando, e poterlo migliorare. I metodi pi avanzati per l'illuminazione comprendono Phong shading ed il Gouraud shading. texture mapping Il texture mapping in computer grafica un metodo per aggiungere dettaglio, una immagine di superficie o un colore ad immagini generate al computer o ad un modello 3D. La texture, se applicata ad un modello poligonale creato con un programma di grafica 3D rende il modello pi realistico, inoltre la sovrapposizione di pi texture, utilizzata ad esempio per dare degli effetti speciali ai modelli tridimensionali come luce e nebbia. I pixel da visualizzare sullo schermo calcolati a partire dai textel (i pixel della texture), vengono governati dal filtro della texture. Il metodo pi veloce quello del usare l'interpolazione lineare, ma l'interpolazione bilineare o l'interpolazione trilineare tra MIP map sono quelle pi comunemente utilizzate per ridurre l'aliasing, e quindi per aumentare la qualit complessiva dell'immagine. L'applicazione della texture sul modello tridimensionale compito della scheda video.

Bump Mapping Il Bump Mapping una tecnica di rendering dei materiali che aumenta la complessit degli oggetti realizzati senza effettivamente aumentare il numero di poligoni che compongono l'oggetto di partenza. Alla texture che ricopre l'oggetto viene "sovrapposta" una seconda texture (spesso in bianco e nero) che il motore di rendering utilizza per simulare asperit, solchi, sporgenze e cos via. Tali dettagli non fanno parte della geometria dell'oggetto ma

vengono aggiunti solo in fase di rendering, spesso basandosi sui valori di luminanza della texture in bianco e nero usata per generare l'effetto. A valori pi alti (pi "bianchi") corrisponde una sporgenza maggiore, cos come le zone scure provocheranno una depressione. La differenza massima dal piano (che viene indicato da una gradazione al 50% di grigio) viene fissata con un parametro, e comunque non pu essere molta rispetto alle dimensioni dell'oggetto per non causare distorsioni. A causa della sua capacit di aumentare il dettaglio degli oggetti, senza aumentare il numero di poligoni da renderizzare, il bump mapping viene ampiamente utilizzato nelle applicazioni dove necessario renderizzare in tempo reale scene complesse e dettagliate (quindi soprattutto i videogiochi). Il semplice Bump Mapping, utilizzato fino ad oggi, stato ulteriormente migliorato grazie alla potenza sempre maggiore degli acceleratori grafici moderni, un esempio il Normal Mapping, che per generare l'effetto utilizza le normali (una normale ad un piano la retta perpendicolare ad esso) alla superficie su cui l'effetto deve essere applicato. una tecnica molto pi precisa e realistica e i nuovi processori grafici la supportano appieno displacement mapping Il displacement mapping una tecnica utilizzata nella computer grafica 3d per modellazione degli oggetti. Essa non utilizza gli strumenti standard di modifica, ma si basa sull'elaborazione di immagini in scala di grigio. Il displacement mapping utilizza stesso principio dell'"Images mapping" (mappatura di immagini), ad esempio il "Bump mapping" (rugosit), con la differenza che il displacement interviene direttamente sulla geometria del modello, modificandola. Agendo nella direzione "normale" della superficie, la mappa di displacement provoca uno spostamento in senso positivo dei punti del modello corrispondenti alle zone chiare dell'immagine, e in senso negativo di quelli corrispondenti alle zone scure. Pu essere considerato per questo motivo come uno strumento di deformazione della mesh[1]attraverso immagini e viene utilizzato sia su modelli organici che geometrici. Ray tracing Il Ray tracing una tecnica generale di geometria ottica che si basa sul calcolo del percorso fatto dalla luce, seguendone i raggi attraverso l'interazione con le superfici. usato nella modellazione di sistemi ottici, come lenti per fotocamere, microscopi, telescopi e binocoli. Il termine viene utilizzato anche per un preciso algoritmo di Rendering nel campo della Computer grafica 3D, in cui le visualizzazioni modellate matematicamente delle scene vengono prodotte usando una tecnica che segue i raggi partendo dal punto di vista della telecamera piuttosto che dalle sorgenti di luce. Produce risultati simili al ray casting ed allo scanline rendering, ma semplifica alcuni effetti ottici avanzati, ad esempio un'accurata simulazione della riflessione e della rifrazione, restando abbastanza efficiente da permetterne l'uso in caso si voglia ottenere un risultato di alta qualit. Il ray tracing descrive un metodo per la produzione di immagini costruite in sistemi di computer grafica 3D, con maggior realismo di quello che si potrebbe ottenere con l'uso di ray casting o scanline rendering. Lavora tracciando, all'inverso, il percorso che potrebbe aver seguito un raggio di luce prima di colpire un'immaginaria lente. Mentre la scena viene attraversata seguendo il percorso di numerosi raggi, le informazioni sull'aspetto della scena vengono accumulate. La riflessione del raggio, la sua rifrazione o l'assorbimento sono calcolate nel momento in cui colpisce un qualsiasi oggetto. Le scene, nel ray tracing, vengono descritte matematicamente, solitamente da un programmatore, o da un grafico, utilizzando particolari programmi. Le scene possono anche includere immagini e modelli creati attraverso varie tecnologie, per esempio usando la fotografia digitale. Seguendo i raggi in senso inverso, l'algoritmo viene

alleggerito di molti gradi di magnitudine (matematica), il che rende possibile una precisa simulazione di tutte le possibili interazioni presenti nella scena. Questo dovuto al fatto che la maggior parte dei raggi che parte da una sorgente non fornisce dati significativi all'occhio di un osservatore. Potrebbero invece rimbalzare finch si riducono al nulla, andare verso l'infinito o raggiungere qualche altra camera. Una simulazione che parta seguendo tutti i raggi emessi da tutte le sorgenti di luce non fisicamente praticabile. La scorciatoia utilizzata nel raytracing, quindi, presuppone che un dato raggio termini sulla camera, e ne cerca la sorgente. Dopo aver calcolato un numero fisso di interazioni (gi deciso in precedenza), l'intensit della luce nel punto di ultima intersezione viene calcolata con un insieme di algoritmi, inclusi il classico algoritmo di rendering ed altre tecniche (come la radiosity). Algoritmo di Ray casting [modifica] Il primo algoritmo di ray casting (in opposizione a quello di ray tracing) venne presentato da Arthur Appel nel 1968. L'idea di fondo del ray casting consiste nel far partire i raggi dall'occhio, uno per pixel, e trovare il pi vicino oggetto che ne blocca il percorso (occorre pensare ad un'immagine come ad una grata, in cui ogni quadrato corrisponde ad un pixel). L'oggetto colpito quello che l'occhio vede attraverso quel pixel. Usando le propriet del materiale e gli effetti della luce nella scena, questo algoritmo in grado di determinare il colore dell'oggetto. Questa supposizione fatta pensando che una superficie visibile se il raggio la raggiunge senza essere bloccato o in ombra. Il colore della superficie viene calcolato usando i tradizionali shading model presenti in Computer grafica. Un importante vantaggio offerto dal ray casting rispetto al pi vecchio algoritmo di scanline, la sua capacit di gestire con semplicit superfici solide o non-piane, come ad esempio coni e sfere. Se una superficie matematica pu essere colpita da un raggio, il ray casting in grado di disegnarla. Oggetti complicati possono essere creati utilizzando tecniche di modellazione solida, e facilmente renderizzati. Il ray casting per la produzione di computer grafica venne usato per la prima volta da alcuni scienziati del Mathematical Applications Group, Inc., (MAGI) di Elmsford, New York. Nel 1966, il gruppo venne creato per effettuare calcoli di esposizione alle radiazioni da parte del Dipartimento della Difesa degli Stati Uniti. Il software creato dal MAGI calcolava non solo i rimbalzi dei raggi gamma sulle superfici (il ray casting per le radiazioni era utilizzato dagli anni '40), ma anche il modo in cui penetravano negli oggetti e ne venivano rifratti. Questi studi aiutarono il Governo a scegliere alcune applicazioni militari, costruendo veicoli che avrebbero protetto le truppe dalle radiazioni e veicoli di rientro per le esplorazioni spaziali. Sotto la direzione del dr. Philip Mittelman, gli scienziati svilupparono un metodo per la generazione di immagini utilizzando lo stesso software. Nel 1972 MAGI divenne un'azienda commerciale di animazione, che utilizz il ray casting per creare animazioni 3D per la televisione, documentari, e film (crearono buona parte del film Tron utilizzando esclusivamente il ray casting). La MAGI venne chiusa nel 1985. Algoritmo di Ray tracing [modifica] La successiva scoperta rivoluzionaria venne fatta da Turner Whitted nel 1979. I precedenti algoritmi lanciavano il raggio dall'occhio verso la scena, ma i raggi non venivano pi seguiti. Whitted continu il processo. Quando un raggio colpisce una superficie, pu generare fino a tre nuovi tipi di raggio: riflessione, rifrazione ed ombra. Un raggio riflesso continua nella direzione della riflessione a specchio su di una superficie lucida. A questo punto interagisce con altri oggetti della scena; il primo oggetto che colpisce sar quello visto nel riflesso presente sull'oggetto originario. Il raggio rifratto viaggia attraverso il materiale trasparente in modo simile, con l'aggiunta che pu entrare o uscire da un materiale. Per evitare di tracciare tutti i raggi presenti in una scena, un raggio ombra viene usato per testare se la superficie sia visibile ad una luce. Un raggio colpisce una superficie in un qualche punto. Se questo punto

"vede" la luce, un raggio (dal punto di vista del computer un segmento) viene seguito fino alla sorgente, Se durante il tragitto si incontra un oggetto opaco, la superficie in ombra, e quella sorgente non contribuisce al calcolo del colore. Questo nuovo livello di calcolo aggiunge pi realismo alle immagini create attraverso il ray tracing. Vantaggi del ray tracing [modifica] La popolarit conquistata dal ray tracing pone le basi nella simulazione realistica della luce rispetto ad altri modelli di rendering (tipo scanline rendering o ray casting). Effetti come riflessione ed ombra, difficilmente simulabili con altri metodi, sono il risultato naturale dell'algoritmo. Un'implementazione relativamente semplice conduce a risultati impressionanti, il ray tracing spesso rappresenta il punto di accesso allo studio della programmazione grafica. Svantaggi del ray tracing [modifica] Un grave svantaggio dato dalle performance. Algoritmi come lo scanline utilizzano la coerenza dei dati per gestire la computazione tra i pixel, mentre il raytracing ricomincia tutto il procedimento ad ogni nuovo pixel, trattando ogni raggio in modo separato. Questa separazione offre vantaggi, tipo la possibilit di spedire pi raggi del necessario per ottenere l'antialiasing e migliorare la qualit dell'immagine. Nonostante gestisca interriflessioni e rifrazioni accuratamente, il Ray Tracing tradizionale non necessariamente fotorealistico. Il vero fotorealismo si ottiene quando l'equazione di rendering ben approssimata o completamente implementata. Il suo calcolo d il vero fotorealismo, dal momento che descrive ogni effetto fisico del flusso di luce. Il calcolo completo normalmente impossibile date le risorse di computazione richieste. Il realismo di tutti i metodi di rendering, quindi, deve essere valutato in rapporto all'approssimazione dell'equazione e, nel caso del ray tracing, non necessariamente il pi realistico. Altri metodi, tra cui il photon mapping, sono basati sul ray tracing in alcune parti dell'algoritmo, e danno migliori risultati. Attraversamento inverso della scena [modifica] Il processo di lanciare i raggi dall'occhio verso la sorgente di luce, per disegnare un'immagine, viene chiamato a volte backwards ray tracing (o "ray tracing inverso"), dal momento che i fotoni viaggiano in senso opposto a quello usuale. Questa terminologia crea confusione. All'inizio il ray tracing era fatto partendo dall'occhio, ed i primi ricercatori (tipo James Arvo), usarono il termine backwards ray tracing per riferirsi al percorso sorgente-occhio. Per questo motivo, pi semplice distinguere i due casi in eye-based (basato sull'occhio) e light-based (basato sulla sorgente). La ricerca, negli scorsi decenni, ha esplorato combinazioni di computazioni effettuate in entrambi i sensi, cos come schemi in grado di generare pi o meno raggi in direzioni differenti, partendo da una superficie colpita. Ad esempio, gli algoritmi di radiosity lavorano solitamente computando il modo in cui i fotoni, emessi da una sorgente, modificano le superfici, registrandone i risultati. Questi dati possono essere usati da un ray tracer ricorsivo standard per creare un'immagine pi corretta. Nel contesto degli algoritmi di illuminazione globale, come il photon mapping ed il Metropolis light transport, il ray tracing solo uno dei tool usati per calcolare il trasferimento di luce tra le superfici. radiosity La radiosity un algoritmo di illuminazione globale usato durante il rendering in computer grafica 3D. un'applicazione del metodo degli elementi finiti per risolvere l'equazione di rendering di scene composte di superfici perfettamente diffusive. A differenza dei Metodi Monte Carlo (come il path tracing) che gestiscono tutti i tipi di percorsi luminosi, la radiosit tiene conto solo di quelli che seguono la forma LD*E, ad esempio, percorsi che partono da una sorgente e vengono riflessi diffusivamente un certo numero di volte (anche zero) prima di colpire l'occhio. Illuminazione globale Gli algoritmi di Illuminazione globale vengono comunemente usati in computer

grafica 3D per aggiungere un'illuminazione realistica alle scene. Alcuni di questi algoritmi tengono conto non solo della luce ricevuta direttamente da una sorgente di luce (illuminazione diretta), ma anche di quella riflessa, diffusa, o rifratta da altre superfici (illuminazione indiretta). Le immagini renderizzate con l'uso di algoritmi di illuminazione globale, spesso appaiono pi fotorealistiche rispetto a quelle che utilizzano solo l'illuminazione diretta. La loro computazione, per, molto pi lenta e computazionalmente pi costosa. Un approccio comune consiste nel computare l'illuminazione globale di una scena e memorizzare questa informazione in senso geometrico, ad esempio con la radiosity. I dati cos salvati, possono essere usati per creare immagini da differenti punti di vista, generando cos dei percorsi animati (walkthroughs) senza dover ricalcolare continuamente l'illuminazione. Radiosity, ray tracing, beam tracing, cone tracing, path tracing, metropolis light transport, ambient occlusion, e photon mapping sono esempi di algoritmi usati nel campo dell'illuminazione globale; alcuni possono essere combinati tra loro per ottenere risultati pi rapidi, ma comunque accurati. Questi algoritmi modellano l'inter-riflessione diffusa, una parte molto importante dell'illuminazione globale. Buona parte di questi (esclusa la radiosity) modellano anche la riflessione speculare, il che li rende pi precisi nella risoluzione dell' equazione di luce e fornisce un effetto pi realistico alla scena. Gli algoritmi utilizzati per calcolare la distribuzione dell'energia luminosa tra superfici di una scena, sono strettamente correlati con le simulazioni di trasferimento di calore, risolte in ingegneria con l'uso del metodo degli elementi finiti. Nella grafica 3D in real-time, il componente di inter-riflessione diffusa dell'illuminazione globale viene a volte approssimato da un termine "ambientale" nell'equazione di luce, chiamato luce d'ambiente nei software di sviluppo grafico. Nonostante questo metodo di approssimazione (noto anche come cheat, imbroglio, perch non un vero metodo di illuminazione globale) sia computazionalmente semplice, quando viene usato da solo non riproduce un effetto sufficientemente realistico. La luce d'ambiente tende ad "appiattire" le ombre nelle scene 3D, rendendo tenue il contrasto. Se usata propriamente, la luce d'ambiente pu essere un modo efficiente di risparmiare potenza di calcolo. [1]

SPLINE In analisi matematica, una spline una funzione, costituita da un insieme di polinomi raccordati tra loro, il cui scopo interpolare in un intervallo un insieme di punti (detti nodi della spline), in modo da essere continua (almeno fino ad un dato ordine di derivate) in ogni punto dell'intervallo. NURBS un acronimo che sta per Non Uniform Rational B-Splines, traducibile in "B-Splines razionali non uniformi", una classe di curve geometriche utilizzate in computer grafica per rappresentare curve e superfici. Una NURBS quindi la rappresentazione matematica che un programma software, ad esempio un sistemaCAD 3D, crea di un oggetto, per definirne accuratamente la forma. Le curve NURBS sono una generalizzazione delle curve B-Spline e delle curve di Bzier. --Nel campo matematico della analisi numerica una curva di Bzier un'importante curva parametrica usata nella computer grafica. Un metodo numericamente stabile per calcolare le curve di Bzier l'algoritmo di de Casteljau. Una generalizzazione delle curve di Bzier in tre dimensioni chiamata superficie di Bzier di cui il triangolo di Bzier uno specifico caso.

--Nel campo dell'analisi numerica della matematica, l'algoritmo di de Casteljau, che prende il nome dal suo autore Paul de Casteljau, un metodo ricorsivo per valutare polinomi nellaforma di Bernstein o curve di Bzier. Sebbene l'algoritmo sia pi lento per la maggior parte delle architetture se comparato all'approccio diretto, numericamente pi stabile.

Potrebbero piacerti anche