Vertex Shader

Generieren von Oberfächenobjekten aus einem Mesh

In Matlab werden Oberflächen-Objekte aus einem Meshgrid erstellt. Am Beispiel eines Torus (und zwar kein symmetrischer Kreistorus) sieht dies folgendermassen aus:

Die Idee dieses Vertex-Shaders ist es, ein Grid, bestehend aus einer vordefinierten Anzahl von Quads durch einen Vertex-Shader laufen zu lassen, um ein Oberflächenobjekt zu erzeugen.
Das Grid wird dabei in einem glBegin()…glEnd() Block definiert. Für bestmögliche Performance kann man das Grid auch als Vertex-Buffer-Objekt definieren.

Vertex Shader Source Code

uniform float time;
uniform float k;
varying vec4 color;
void main(void)
{
vec4 V;
float u = gl_Vertex.x;
float v = gl_Vertex.y;
V.x = -(3.0 + 1.0 * cos(u) * (2.0+sin(v+time))) * sin(v);
V.y = (3.0 + 1.0 * cos(u) * (2.0+sin(v+time))) * cos(v);
V.z = 1.0 * sin(u) * (2.0+sin(v+time));
V.w = 1.0;
color = vec4(0.0,0.0,0.0,1.0);
gl_Position = gl_ModelViewProjectionMatrix * V;
}
×