 
     float theta = scrpos.y * PI;
     float phi = PI + ln + scrpos.x * TWOPI;
-    while (phi > TWOPI)
-        phi -= TWOPI;
 
     vec3 xcart;
     xcart.x = sin(theta) * cos(phi);

        discard;
    texcoord = vec2(rect.w * (xcartrot.y - rect.x), rect.w * (xcartrot.z - rect.y));
    clamp_texcoord(texcoord);

//    float f = xcartrot.z * xcartrot.z + xcartrot.y * xcartrot.y;
//    radius = f * f;
    radius = 1.;
}

void main(void) {

void get_lati_texcoord(float ln, float lt, float cr, const in vec4 rect, out vec2 texcoord) {
    vec2 normalizedScreenpos = (gl_FragCoord.xy - viewportOffset) / viewport - .5;
    normalizedScreenpos *= 2. * vec2(viewport.y / viewport.x, 1.);
    vec4 scrpos = cameraTransformationInverse * vec4(normalizedScreenpos.x, normalizedScreenpos.y, -1., 1.) + .5;
