next up previous contents
Next: wehende Flagge Up: zurueck zur Flagge Previous: zurueck zur Flagge   Contents


GLSL Flag Shader mit per Pixel lighting

Das Erstellen des Vertex Shaders fuer dieses Vorhaben besteht eigentlich nur darin dass wir den Flag Shader aus 5.5 um die noetigen Komponenten aus dem letzten Kapitel (5.6), namentlich dem Halbvektor und die interpolierten Farbanteile, erweitern.


\begin{lstlisting}[name=flaglighting.avs]
varying vec4 diffuse, ambient;
varying...
...ient);
\par
gl_Position = gl_ModelViewProjectionMatrix * v;
}
\end{lstlisting}

An dieser Stelle sollte nichts unbekanntes mehr hinzugekommen sein, wir berechnen weiterhin die Lichtrichtung, druecken dann den teapot flach und verformen ihn nach einer Sinusfunktion. Danach berechnen wir wieder unsere (falschen) Normalen, geben den Halbvektor fuer die Berechnung des spekulaeren Lichtanteiles nach Blinn sowie die diffusen und ambienten Farbanteile an den Fragment Shader weiter und transformieren die Vertexposition in die Projektionsebene - alles wie gehabt.

Am Fragment Shader selbst aendert sich logischerweise im Vergleich zum vorherigen Kapitel gar nichts. Das Ergebnis (./gltut shader/flag/flaglighting.avs shader/lighting/perpixel.afs) sieht zwar aufgrund unserer falschen Normalen nicht wirklich realistisch aus, aber dennoch koennen wir die Verformung der Ebene in Abb 5.6 nun deutlich erkennen.

Figure 5.6: Die Flagge mit per Pixel Lighting
Image flaglighting


next up previous contents
Next: wehende Flagge Up: zurueck zur Flagge Previous: zurueck zur Flagge   Contents
2005-10-25 Michael Bayer - nightspawn.com