varying vec3 N; varying vec3 v; uniform float upX; uniform float upY; uniform float upZ; uniform float rightX; uniform float rightY; uniform float rightZ; attribute vec3 origin; attribute float sizes; varying vec4 E; varying vec4 theVert; varying float size; void main(void) { v = vec3(gl_ModelViewMatrix * gl_Vertex); N = normalize(gl_NormalMatrix * gl_Normal); gl_FrontColor = gl_Color; gl_BackColor = gl_Color; vec4 o2 = vec4(origin.x,origin.y,origin.z,1.0); vec4 vert = vec4(gl_Vertex.x*rightX,gl_Vertex.x*rightY,gl_Vertex.x*rightZ,1.0) + vec4(gl_Vertex.y*upX,gl_Vertex.y*upY,gl_Vertex.y*upZ,1.0); theVert = sizes*vert+o2; theVert.w = 1.0; gl_Position = gl_ProjectionMatrix * (gl_ModelViewMatrix * (theVert)); v = vec3(gl_ModelViewMatrix * (theVert)); vec4 eyePos = gl_ModelViewMatrix * theVert; gl_FogFragCoord = abs(eyePos.z/eyePos.w); gl_ClipVertex = eyePos; gl_TexCoord[0] = vec4(gl_Vertex); E = eyePos; size = sizes; }