/*
Aurora Effect Vert Shader
by Eddie Lee (twitter: @eddietree)
http://illogictree.com
Jan 30, 2012
*/
#version 110
varying vec2 uv;
uniform vec4 v0;
uniform vec4 v1;
uniform vec4 tan0;
uniform vec4 tan1;
vec3 hermite( vec3 p0, vec3 t0, vec3 p1, vec3 t1, float alpha )
{
float t = alpha;
float t_sqr = alpha*alpha;
float t_cubed = alpha*alpha*alpha;
float h1 = 2.0*t_cubed - 3.0*t_sqr + 1.0; // calculate basis function 1
float h2 = -2.0*t_cubed + 3.0*t_sqr; // calculate basis function 2
float h3 = t_cubed - 2.0*t_sqr + t; // calculate basis function 3
float h4 = t_cubed - t_sqr; // calculate basis function 4
return h1*p0 + h2*p1 + h3*t0 + h4*t1;
}
void main()
{
// interpolate on x (assume verts are normalized in x,y )
float splineAlpha = gl_Vertex.x;
vec3 pos = hermite( v0.xyz, tan0.xyz, v1.xyz, tan1.xyz, splineAlpha);
pos.y += gl_Vertex.y * 600.0;
gl_Position = gl_ModelViewProjectionMatrix * vec4(pos.xy,0.0,1.0);
uv = gl_Vertex.xy;
}