next up previous contents
Next: GLSL Monocolor Shader Up: Monocolor Shader Previous: Monocolor Shader   Contents

ARB Program Monocolor Shader

Zunächst soll die Umsetzung dieses Vorhabens mittels der ARB Programs Extensions gezeigt werden:


\begin{lstlisting}[name=monocolor.avp]
!!ARBvp1.0
PARAM mvp[4] = { state.matrix....
...tion;
DP4 result.position.w, mvp[3], vertex.position;
\par
END
\end{lstlisting}
ARB Vertex Programs werden immer mit !!ARBvp gefolgt von einer Versionsnummer eingeleitet. Danach wird hier eine Variable namens mvp bekannt gemacht welche vom Typ PARAM ist und somit eine Variable die von OpenGL vorbelegt wird. Variablen sind immer Vierkomponenten-Vektoren bestehend aus Floats. In diesem Fall handelt es sich um ein Array von vier dieser Vektoren die mit den Komponenten der ModelviewProjection-Matrix - dem Ergebnis der Multiplikation der Modelview- mit der Projektions-Matrix - vorbelegt werden.

Mit dem Befehl DP4 wird ein Punktprodukt von zwei Vierkomponenten-Vektoren erzeugt und im ersten Operanden gespeichert.

Die Variable vertex enthält den Vertex auf dem der Shader gerade ausgeführt wird, die Variable result ist der Ergebnisvertex.

In diesem Shader wird die Position des Vertex einfach mit der ModelviewProjection-Matrix (ab jetzt kurz MVP genannt) multipliziert und in result gespeichert.

Das zugehörige Fragment Program gestaltet sich folgendermaßen:


\begin{lstlisting}[name=monocolor.afp]
!!ARBfp1.0
PARAM c[1] = { { 0, 1 } };
MOV result.color, c[0].xxyy;
END
\end{lstlisting}

ARB Fragment Programs werden immer mit !!ARBfp eingeleitet, auch hier gefolgt von einer Versionsnummer. Nachdem eine Variable namens c mit konstanten Werten vorbelegt wurde wird die Farbe des Ergebnisfragmentes result auf 0.0, 0.0, 1.0, 1.0 - also blau - gesetzt.


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