1+ // grid code originally appears: https://github.com/diroru/domemod
12#define PI 3.1415926535897932384626433832795
2-
3- precision highp float ;
4- precision highp int ;
3+ #define AA 0.1
54
65uniform samplerCube cubemap;
76uniform float aperture;
7+ uniform float renderGrid;
88
99varying vec2 vertTexCoord;
1010
@@ -29,9 +29,50 @@ vec3 domeXYToXYZ(vec2 xy, float aperture) {
2929 return latLonToXYZ(domeXYToLatLon(xy, aperture));
3030}
3131
32+ float rad2Deg(float r) {
33+ return r * 180.0 / PI;
34+ }
35+
36+ vec3 getLatitudeGrid(vec2 longLat, float gratOffset, float gratWidth, vec3 gratColour) {
37+ float gr = mod (rad2Deg(longLat.y) + gratWidth * 0.5 , gratOffset) - gratWidth * 0.5 ;
38+ // return mix(gratColour, vec3(0.0), smoothstep(gratWidth*0.5 - AA, gratWidth*0.5 + AA, abs(gr)));
39+ return mix (gratColour, vec3 (0.0 ), step (gratWidth, abs (gr)));
40+ }
41+
42+ vec3 getLongtitudeGrid(vec2 longLat, float gratOffset, float gratWidth, vec3 gratColour) {
43+ float longDeg = rad2Deg(longLat.x);
44+ float latDeg = rad2Deg(longLat.y);
45+ float go = gratWidth / sin (longLat.y);
46+ float gr = mod (longDeg + go , gratOffset) - go;
47+ // return mix(gratColour, vec3(0.0), smoothstep(go*0.5 - AA, go*0.5 + AA, abs(gr)));
48+ return mix (gratColour, vec3 (0.0 ), step (go, abs (gr)));
49+ }
50+
51+ vec3 getGrid(vec2 longLat, vec3 colour, float gratOffset0, float gratWidth0, float gratOffset1, float gratWidth1) {
52+ vec3 longGrid_0 = getLongtitudeGrid(longLat, gratOffset0, gratWidth0, colour);
53+ vec3 longGrid_1 = getLongtitudeGrid(longLat, gratOffset1, gratWidth1, colour);
54+ vec3 latGrid_0 = getLatitudeGrid(longLat, gratOffset0, gratWidth0, colour);
55+ vec3 latGrid_1 = getLatitudeGrid(longLat, gratOffset1, gratWidth1, colour);
56+ vec3 grid_rgb = longGrid_0 + longGrid_1 + latGrid_0 + latGrid_1;
57+ // grid_rgb = longGrid_0;
58+ // TODO eg. vec3(0.0) as const
59+ return clamp (grid_rgb, vec3 (0.0 ), vec3 (1.0 ));
60+ // return grid_rgb;
61+ }
62+
63+
64+
3265void main() {
33- vec3 ray = domeXYToXYZ(vertTexCoord, aperture* PI);
34- // vec3 rgb = ray * 0.5 + vec3(0.5); //DEBUG
66+ // vec3 color = vec3(textureCube(cubemap, vec3(vertTexCoord,1.0)));
67+ vec2 latLon = domeXYToLatLon(vertTexCoord, aperture* PI);
68+ vec3 ray = latLonToXYZ(latLon);
69+ // vec3 color = ray * 0.5 + vec3(0.5);
3570 vec3 color = vec3 (textureCube (cubemap, ray));
36- gl_FragColor = vec4 (color, 1.0 );
71+
72+ vec3 gridColor = getGrid(latLon.yx, vec3 (1.0 , 1.0 , 0.0 ), 45.0 , 0.6 , 15.0 , 0.2 );
73+ // float gridX = 1.0 - smoothstep(gridWeight*0.5-AA, gridWeight*0.5+AA, mod(latLon.x - gridWeight*0.5, gridSize.x));
74+ // float gridY = 1.0 - smoothstep(gridWeight*0.5-AA, gridWeight*0.5+AA, mod(latLon.y - gridWeight*0.5, gridSize.y));
75+
76+ gl_FragColor = vec4 (mix (color, gridColor, min (length (gridColor)* 0.5 , renderGrid)), 1.0 );
77+ // gl_FragColor = vec4(rgb + gridColor, 1.0);
3778}
0 commit comments