
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 float size;

void main(void)
{

  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);
  vec4 theVert = sizes*vert+o2;
  theVert.w = 1.0;
  gl_Position = gl_ProjectionMatrix * (gl_ModelViewMatrix * (theVert));

  vec4 eyePos = gl_ModelViewMatrix * theVert;

  gl_ClipVertex = eyePos;

  gl_TexCoord[0] = vec4(gl_Vertex);

  E = eyePos;
  size = sizes;

}
