mapillary-js
Version:
A WebGL interactive street imagery library
44 lines (34 loc) • 928 B
text/typescript
export const sphericalCurtainFrag = `
precision highp float;
precision mediump float;
uniform sampler2D projectorTex;
uniform float curtain;
uniform float opacity;
varying vec4 vRstq;
void main()
{
vec3 b = normalize(vRstq.xyz);
float lat = -asin(b.y);
float lng = atan(b.x, b.z);
float x = lng / tau + 0.5;
float y = lat / tau * 2.0 + 0.5;
bool inverted = curtain < 0.5;
float curtainMin = inverted ? curtain + 0.5 : curtain - 0.5;
float curtainMax = curtain;
bool insideCurtain = inverted ?
x > curtainMin || x < curtainMax :
x > curtainMin && x < curtainMax;
vec4 baseColor;
if (insideCurtain) {
baseColor = texture2D(projectorTex, vec2(x, y));
baseColor.a = opacity;
} else {
baseColor = vec4(0.0, 0.0, 0.0, 0.0);
}
gl_FragColor = baseColor;
}
`