glproj = `
float yy = y / halfPi;
phi = yy * 90.;
float i = min(18., abs(phi / 5.)), di;
vec2 k;
int i0;
for (int ii = 19; ii >= 0; ii--) {
if (ii > int(max(0., floor(i)))) continue;
i0 = ii;
K(i0, k);
float ay = k[1];
K(i0 + 1, k);
float by = k[1];
K(i0 + 2, k);
float cy = k[1],
u = cy - ay,
v = cy - 2. * by + ay,
t = 2. * (abs(yy) - by) / u,
c = v / u;
di = t * (1. - c * t * (1. - 2. * c * t));
if (0. < di || i0 == 1) {
phi = (y > 0. ? 5. : -5.) * (di + i);
for (int j = 50; j > 0; j--) {
i = min(18., abs(phi) / 5.);
i0 = int(i);
di = i - float(i0);
K(i0, k);
ay = k[1];
K(i0 + 1, k);
by = k[1];
K(i0 + 2, k);
cy = k[1];
phi -= (sign(y) * halfPi * (by + di * (cy - ay) / 2. + di * di * (cy - 2. * by + ay) / 2.) - y) * 180. / pi;
}
}
}
K(i0, k);
float ax = k[0];
K(i0 + 1, k);
float bx = k[0];
K(i0 + 2, k);
float cx = k[0];
lambda = x / (bx + di * (cx - ax) / 2. + di * di * (cx - 2. * bx + ax) / 2.);
phi *= pi / 180.;
if (abs(lambda) > pi) transparent = true;
`