31.10.2013 Aufrufe

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

Download - Benjamin Granzow Portfolio

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4.3. BELEUCHTUNG 35<br />

vec3 blinnPhong ( vec3 n , vec3 v , vec3 l )<br />

{<br />

// M a t e r i a l i e n<br />

vec3 kAmbient = vec3 ( 0 . 1 ) ; // Ambient<br />

vec3 k D i f f u s e = vec3 ( 0 . 6 ) ; // Defuse<br />

vec3 kSpecular = vec3 ( 0 . 2 ) ; // Spekular<br />

f l o a t s h i n i n e s s = 1 0 0 . 0 ; // R e f l e x i o n s f a k t o r<br />

// Licht<br />

vec3 ambientLight = vec3 ( 0 . 3 ) ;<br />

vec3 l i g h t C o l o r = vec3 ( 1 . 0 ) ;<br />

// Ambienter T e i l<br />

vec3 ambient = kAmbient* ambientLight ;<br />

// Halfway−Vektor zwischen Licht− und Betrachtungsrichtung<br />

vec3 h = normalize ( l+v ) ;<br />

// Defuser T e i l<br />

f l o a t d i f f u s e L i g h t = max( dot ( l , n ) , 0 ) ;<br />

vec3 d i f f u s e = k D i f f u s e * l i g h t C o l o r * d i f f u s e L i g h t ;<br />

// S p e k u l a r e r T e i l<br />

f l o a t s p e c u l a r L i g h t = pow(max( dot (h , n ) , 0 ) , s h i n i n e s s ) ;<br />

vec3 s p e c u l a r = kSpecular * l i g h t C o l o r * vec3 ( s p e c u l a r L i g h t ) ;<br />

// Aufsummieren der E i n z e l t e i l e<br />

r e t u r n ambient+d i f f u s e+s p e c u l a r ;<br />

}<br />

Listing 4.7: Blinn-Phong Methode im Fragmentshader<br />

4.3.2 Gradient Berechnung<br />

Bei der Beleuchtung von Volumengrafiken kommt ein großes Problem auf.<br />

Anders als bei oberflächenbasierten Objekten ist es bei Volumendaten nicht<br />

einfach möglich eine Normale anzugeben. Da keine Flächen oder Abhängigkeiten<br />

zu den benachbarten Daten vorhanden sind, kann ausgehend vom<br />

betrachteten Punkt keine eindeutige Orientierung angegeben werden. Für<br />

die Beleuchtungsberechnung ist eine Oberflächenorientierung aber unerlässlich,<br />

da an dieser der zusätzliche Lichtanteil der Lichtquelle bemessen wird.<br />

Um so etwas wie eine Orientierung zu erhalten, kann die Steigung (Gradient)<br />

der Dichtewerte an der betroffenen Position auswerten werden. Damit<br />

der Gradient dem Wert an der gesuchten Position entspricht, ist es nötig,<br />

diesen aus den umliegenden Daten zu bilden. Dafür wird in jeder Dimension<br />

einfach die Differenz zwischen den umliegenden Daten gebildet. Wenn der<br />

Wert an der Position x i + 1 mit dem Wert bei x i − 1 subtrahiert wird, ergibt<br />

sich daraufhin eine diskrete Approximation für den gesuchten Gradienten

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!