next up previous contents
Next: Toon Shader Up: Flag Shader Previous: Flag Shader   Contents

GLSL Flag Shader

Die Umsetzung dieses Vorhabens ist mit der GLSL kein Problem, da sie für alle wichtigen geometrischen Funktionen eigene Methoden vordefiniert:


\begin{lstlisting}[name=flag.avs]
void main() {
vec4 v = vec4(gl_Vertex);
\par...
...x)*0.2;
\par
gl_Position = gl_ModelViewProjectionMatrix * v;
}
\end{lstlisting}

Die Änderungen am Shader des letzten Kapitels nehmen sich wieder sehr gering aus, die zu verändernde Komponente des Vektors wird einfach mittels der Funktion sin() in Abhängigkeit vom Wert der ersten Komponente gesetzt. Die beiden eingeführten Faktoren (5.0 und 0.2) dienen lediglich dazu die Veränderung deutlicher zu machen.

Das resultierende Bild lässt den gewünschten Effekt zwar erkennen, aber leider nur undeutlich. Dies liegt daran, dass in der Szene trotz der von uns gesetzten direktionalen Lichtquelle die Beleuchtung komplett fehlt, da wir die fixed Function Pipeline mit unseren Shadern umgangen haben, folglich müssen wir uns jetzt selbst um die Beleuchtung kümmern.

Figure 5.3: Der flag Shader setzt eine Komponente nach einer Sinusfunktion
Image flag



2005-10-25 Michael Bayer - nightspawn.com