next up previous contents
Next: Flat Shader Up: Monocolor Shader Previous: ARB Program Monocolor Shader   Contents

GLSL Monocolor Shader

Nachdem wir den Shader jetzt mittels der ARB Programs umgesetzt haben wollen wir ihn auch in GLSL schreiben:


\begin{lstlisting}[name=monocolor.avs]
void main() {
vec4 v = vec4(gl_Vertex);
\par
gl_Position = gl_ModelViewProjectionMatrix * v;
}
\end{lstlisting}
Es ist leicht ersichtlich dass GLSL deutlich eingängiger als der Pseudo-Assembler der ARB Programs ist.

GLSL lehnt sich stark an C an, somit heißt der Einsprungspunkt auch hier main, ist allerdings als void definiert. Der Vertex auf dem der Shader ausgeführt wird heißt hier gl_Vertex, die Position des Ergebnisvertexes heißt gl_Position.

Nun wird hier eine Variable vom Typ vec4 definiert und mit der Position von gl_Vertex belegt. Die Ergebnisposition ergibt sich einfach aus der Multiplikation der MVP mit diesem Vektor.

Der Source des zugehörigen Fragment Shaders ist ähnlich einfach:


\begin{lstlisting}[name=monocolor.avs]
void main() {
vec4 color = vec4(0.0, 0.0, 1.0, 1.0);
\par
gl_FragColor = color;
}
\end{lstlisting}
Auch hier heißt der Einsprungspunkt main, die Ausgabefarbe des Fragmentes auf dem der Shader ausgeführt wird heißt gl_FragColor. Wieder wird eine Variable definiert, allerdings wird sie hier einfach mit konstanten Werten für blau belegt. Die Ergebnisfarbe ergibt sich einfach aus diesen Werten.

Figure 5.1: Der monocolor Shader in seiner gesamten Pracht
Image monocolor


next up previous contents
Next: Flat Shader Up: Monocolor Shader Previous: ARB Program Monocolor Shader   Contents
2005-10-25 Michael Bayer - nightspawn.com