Computergrafik

GLSL Parameter

GLSL Operationen | | GLSL Built-Ins

Es gibt 3 unterschiedliche Arten von Shader Parametern

  • Attribute
  • Uniform
  • Varying

Attribut Parameter sind Eingänge in den Vertex Shader, deren Werte über glVertex, glColor, glNormal, glTexCoord, glVertexAttrib etc. geschrieben werden. Deren Werte sind für einen Durchlauf eines Vertex Programms konstant.

Uniforme Parameter verhalten sich wie Konstanten, die von ausserhalb des Shaders definiert werden. Deren Werte sind für ein Grafik-Primitiv konstant (Schlüsselwort uniform)

uniform vec4 ambient_color;

Varying Parameter werden innerhalb eines Dreiecks baryzentrisch interpoliert. Wird im Vertex Shader ein Varying Attribut geschrieben, so können im Fragment Shader die interpolierten Werte gelesen werden. (Schlüsselwort varying).

varying vec3 normal;

Uniforme Parameter werden dem Shader mit den folgenden OpenGL Befehlen übergeben:

  • void glUniform{1|2|3|4}{f|i}ARB(GLint location, TYPE val)
  • void glUniform{1|2|3|4}{f|i}vARB(GLint location, GLuint count, const TYPE *vals)
  • void glUniformMatrix{2|3|4|}fvARB(GLint location, GLuint count, GLboolean transpose, const GLfloat *vals)
location ist die “Adresse” der Uniform-Variable im kompilierten Shader Objekt.

Die Adresse einer Uniform-Variable erhält man via

GLint glGetUniformLocationARB(GLhandleARB program, const GLcharARB *name)
program ist das Shader Programm Objekt, welches den kompilierten Quellcode enthält.
name ist der Name des Uniform-Parameters, dessen Adresse bestimmt werden soll.


GLSL Operationen | | GLSL Built-Ins

Options: