uniform float direction; varying vec2 p1; varying vec2 p2; varying float factor; void main() { vec4 position = gl_Vertex; vec4 texCoord = gl_MultiTexCoord0; if(((direction == 0) && (position.b != 1.0) && (position.b < 0.0) && ((texCoord.b > 0.0) || (texCoord.b == 1))) || ((direction == 1) && (position.b != 1.0) && (position.b > 0.0) && ((texCoord.b < 0.0) || (texCoord.b == 1)))) { p1 = vec2(position.r, position.g); p2 = vec2(texCoord.r, texCoord.g); gl_Position = vec4((p1 * 2.0) - vec2(1.0,1.0), 0.0,1.0); if (texCoord.b == 1) factor = 1; else factor = abs(texCoord.a - position.a); } else { gl_Position = vec4( 0.0,0.0, 2.0, 1.0 ); p1 = p2 = vec2(1.0,1.0); factor = 0.5; } }