anchor.diff:      return vec4(vec3(intensity.y, intensity.y, intensity.y) + uniform_color.rgb * intensity.x, 1.0);
   }
   
  +float fragment_depth(vec3 eye_pos)
  +{
  +    // see: https://stackoverflow.com/questions/10264949/glsl-gl-fragcoord-z-calculation-and-setting-gl-fragdepth
  +    vec4 clip_pos = gl_ProjectionMatrix * vec4(eye_pos, 1.0);
  +    float ndc_depth = clip_pos.z / clip_pos.w;
  +
  +    return (((gl_DepthRange.far - gl_DepthRange.near) * ndc_depth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;
  +}
  +
   void main()
   {
       vec2 pos = gl_PointCoord - vec2(0.5, 0.5);
  
positive.code: 
  // x = width, y = height
  uniform ivec2 viewport_sizes;
  uniform vec2 z_range;
  uniform mat4 inv_proj_matrix;
  
  varying vec3 eye_center;
  
negative.code:      
      vec3 eye_on_sphere_position = eye_position_on_sphere(eye_position_from_fragment());
  
      gl_FragDepth = fragment_depth(eye_on_sphere_position);
  //    gl_FragDepth = eye_on_sphere_position.z;
  //    gl_FragDepth = (eye_on_sphere_position.z - z_range.x) / (z_range.y - z_range.x);
      gl_FragColor = on_sphere_color(eye_on_sphere_position);
  