uniform float scaling;
varying vec4 E;
varying float size;

void main(void) {

  gl_FragColor = gl_Color;

  float x = gl_TexCoord[0].x;
  float y = gl_TexCoord[0].y;
  float zz = 1.0 - x*x - y*y;
  float z = sqrt(zz);

  vec4 pos = E;
  pos.z += z*size*.45;
  mat4 projMat = gl_ProjectionMatrix;
  pos = projMat * pos;

  gl_FragDepth = (pos.z / pos.w + 1.0) / 2.0;

  if(zz <= 0.0)
    gl_FragDepth = 1.0;
}
