https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d76742c3-ea34-4ac2-afe1-e765f5d2e1d7/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

#define E .001

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
uniform sampler2D globe;  // <https://i.imgur.com/ziNRARt.jpg>

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.
#define MATERIAL_GLOBE 3.

mat2 rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}

vec2 dist(vec3 p){
    //p.z-=5.;
    vec2 sph = vec2(length(p)-1., MATERIAL_GLOBE);
    return sph;
}

vec3 norm(vec3 p){
    vec2 e=vec2(E,0.);
    float dp=dist(p).x;
    return normalize(vec3(
        dp-dist(p-e.xyy).x,
        dp-dist(p-e.yxy).x,
        dp-dist(p-e.yyx).x
    ));
}

void main() {
    vec2 dd, uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e,glow=0.;
    vec3 col=vec3(0.),p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-2.),n;
    rd.zx*=rot(u_mouse.x/10.);
	ro.zx*=rot(u_mouse.x/10.);
;
	//for(int r=0;r<1;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<E)break;
        }
    	if(d<999.){
            if(dd.y==MATERIAL_GLOBE){                
                col = texture2D(globe,p.xy).rgb;
                //col -= smoothstep(0.,6.,d);
                //break;
        	}
        }
        //rd=reflect(rd, norm(p));
        //ro=p+rd*.02;  
        //d=0.;
    //}
	gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/262882d2-95cb-488d-abf7-2a4519535834/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

#define E .001

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
uniform sampler2D globe;  // <https://i.imgur.com/ziNRARt.jpg>

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.
#define MATERIAL_GLOBE 3.

#define PI 3.14159265

mat2 rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}

vec2 dist(vec3 p){
    //p.z-=5.;
    vec2 sph = vec2(length(p)-1., MATERIAL_GLOBE);
    return sph;
}

vec3 norm(vec3 p){
    vec2 e=vec2(E,0.);
    float dp=dist(p).x;
    return normalize(vec3(
        dp-dist(p-e.xyy).x,
        dp-dist(p-e.yxy).x,
        dp-dist(p-e.yyx).x
    ));
}

void main() {
    vec2 dd, uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e,glow=0.;
    vec3 col=vec3(0.),p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-2.),n;
    rd.zy*=rot(u_mouse.x/100.);    
	ro.zy*=rot(u_mouse.x/100.);    
;
	//for(int r=0;r<1;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<E)break;
        }
    	if(d<999.){
            if(dd.y==MATERIAL_GLOBE){              
                float lat = p.y; // [-1,1]
            	lat*=.5; // [-.5,.5]
                lat+=.5; // [0,1]
                float lon = (atan(p.z,p.x)+PI)/(2.*PI);
                col = texture2D(globe,vec2(lon, lat)).rgb;
                //col -= smoothstep(0.,6.,d);
                //break;
        	}
        }
        //rd=reflect(rd, norm(p));
        //ro=p+rd*.02;  
        //d=0.;
    //}
	gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5c2d4909-71dc-47f7-88c4-30bb20ab1acb/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

#define E .001

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
uniform sampler2D globe;  // <https://i.imgur.com/ziNRARt.jpg>

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.
#define MATERIAL_GLOBE 3.

#define PI 3.14159265

mat2 rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}

vec2 dist(vec3 p){
    for(float i=0.;i<2.;i++){
        float lat = p.y; // [-1,1]
        lat*=.5; // [-.5,.5]
        lat+=.5; // [0,1]
        float lon = (atan(p.z,p.x)+i*10.*u_time/10.+PI)/(2.*PI);
        lon = fract(lon);
        p+=texture2D(globe,vec2(lon, lat)).r*.05;
    }
    vec2 sph = vec2((length(p)-1.)*.3, MATERIAL_GLOBE);
    return sph;
}

vec3 norm(vec3 p){
    vec2 e=vec2(E,0.);
    float dp=dist(p).x;
    return normalize(vec3(
        dp-dist(p-e.xyy).x,
        dp-dist(p-e.yxy).x,
        dp-dist(p-e.yyx).x
    ));
}

void main() {
    vec2 dd, uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e,glow=0.;
    vec3 col=vec3(0.),p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-2.*u_mouse.y/u_resolution.y),n;
    rd.zy*=rot(u_mouse.x/100.);    
	ro.zy*=rot(u_mouse.x/100.);    
;
	//for(int r=0;r<1;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<E)break;
        }
    	if(d<999.){
            if(dd.y==MATERIAL_GLOBE){              
                float lat = p.y; // [-1,1]
            	lat*=.5; // [-.5,.5]
                lat+=.5; // [0,1]
                float lon = (atan(p.z,p.x)+PI)/(2.*PI);
                col = texture2D(globe,vec2(lon, lat)).rgb;
                //col -= smoothstep(0.,6.,d);
                //break;
        	}
        }
        //rd=reflect(rd, norm(p));
        //ro=p+rd*.02;  
        //d=0.;
    //}
	gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2ce002f7-c5ea-4e2f-8b50-279adce425b8/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

#define E .001

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
uniform sampler2D globe;  // <https://i.imgur.com/ziNRARt.jpg>

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.
#define MATERIAL_GLOBE 3.

#define PI 3.14159265

mat2 rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);}

vec2 dist(vec3 p){
    for(float i=0.;i<2.;i++){
        float lat = p.y; // [-1,1]
        lat*=.5; // [-.5,.5]
        lat+=.5; // [0,1]
        float lon = (atan(p.z,p.x)+i*10.*u_time/100.+PI)/(2.*PI);
        lon = fract(lon);
        p+=texture2D(globe,vec2(lon, lat)).r*.01;
    }
    vec2 sph = vec2((length(p)-1.)*.3, MATERIAL_GLOBE);
    return sph;
}

vec3 norm(vec3 p){
    vec2 e=vec2(E,0.);
    float dp=dist(p).x;
    return normalize(vec3(
        dp-dist(p-e.xyy).x,
        dp-dist(p-e.yxy).x,
        dp-dist(p-e.yyx).x
    ));
}

void main() {
    vec2 dd, uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e,glow=0.;
    vec3 col=vec3(0.),p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-2.),n;
    rd.zy*=rot(u_mouse.x/100.);    
	ro.zy*=rot(u_mouse.x/100.);
    float d_min = 999.;
	//for(int r=0;r<1;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<d_min)d_min=e;
            if(e<E)break;
        }
    	if(d<2.){
            if(dd.y==MATERIAL_GLOBE){              
                //float lat = p.y; // [-1,1]
            	//lat*=.5; // [-.5,.5]
                //lat+=.5; // [0,1]
                //float lon = (atan(p.z,p.x)+PI)/(2.*PI);
                //col = texture2D(globe,vec2(lon, lat)).rgb;
                float t = sin(u_time)*.01;
                col = vec3(smoothstep(1.+t-.02, 1.+t+.04, length(p)));
				col *= vec3(sin(u_time),sin(u_time+PI*1./3.),sin(u_time*PI*2./3.))*.5+.5;
                //break;
        	}
        }
        else{
            float glow = .05/pow(d_min,.5);
            float t = u_time-length(uv*.5)*10.-PI*1.;
			col=vec3(sin(t),sin(t+PI*1./3.),sin(t*PI*2./3.))*.5+.5;
            col *= glow;
        }
        //rd=reflect(rd, norm(p));
        //ro=p+rd*.02;  
        //d=0.;
    //}
	gl_FragColor = vec4(col, 1.);
}