GLSL Datentypen
← GLSL Syntax | ● | GLSL Konstruktoren, Selektoren, Swizzles →
Datentypen von GLSL sind Skalare, Vektoren und Matrizen (Arrays von Vektoren).
Beispiele:
int i; // Integer-Typ (norm. nicht verwenden!)
float a; // Einfache Genauigkeit
double b; // Doppelte Genauigkeit (norm. nicht verwenden!)
//sampler*// Werden später vorgestellt
vec3 x; // 3D Vektor
vec4 y; // 4D Vektor
mat3x3 m; // 3x3 Matrix; auch: mat3 m;
mat4x4 m; // 4x4 Matrix; auch: mat4 m;
mat2x4 m; // 2x4 Matrix (norm. nicht verwenden!)
GLSL ist 100% typ-sicher. Es ist nicht erlaubt Variablen unterschiedlichen Datentyps einander zuzuweisen, d.h. implizite Konvertiertung ist nicht unterstützt. Zum Beispiel ist es nicht erlaubt einen Integer-Wert an eine float-Variable ohne Cast zuzuweisen. Das Casting erfolgt ausnahmslos mit einem entsprechenden Konstruktor.
Es existieren auch Arrays; es wird empfohlen sie nur in Ausnahmefällen zu nutzen.
GLSL Qualifier
Typen ohne Qualifier geben wie gewohnt lokale Variablen (für Zwischenergebnisse) an. Echte globale Variablen existieren nicht (da mehrere Pixel gleichzeitig berechnet werden). Die (teilweise legacy) Eingabe-Variablen gl_Vertex
, gl_Normal
, gl_FragCoord
und Ausgabe-Variablen gl_Position
, gl_FragColor
sind nur Pseudo-globale Variablen.
Mögliche Qualifier:
const
Konstantenuniform
Variablen, die sich nur zwischenDrawArray()
-Aufrufen ändern könnenattribute
Variablen, über die bei jedem Vertex ein neuer Parameter übergeben wirdvarying
Variablen, die ausschließlich dazu dienen, Daten vom Vertex-Shader zu interpolieren und dem Fragment-Shader zukommen zu lassen
Zusätzliche Qualifier in neueren GLSL-Versionen (nach 1.20):
- Interpolations-Qualifier:
flat
noperspective
smooth
- Location-Qualifier:
layout (location=1)
← GLSL Syntax | ● | GLSL Konstruktoren, Selektoren, Swizzles →