http://editor.thebookofshaders.com/

#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;

void main() {
    vec2 uv = gl_FragCoord.xy/u_resolution.xy;
    vec3 color = vec3(0.5);
    gl_FragColor = vec4(color,1.0);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/30c22412-e2d1-4e86-9145-ce97317cc6af/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

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

void main() {
    vec2 uv = gl_FragCoord.xy/u_resolution.xy;
    uv.x+=.1*sin(uv.y*30.+u_time*10.);
    gl_FragColor = texture2D(bg,uv);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7c5616dc-c50f-44f3-8f09-ad539bd77a3c/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

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

float dist(vec3 p){
    float pln = p.y;
    p.y-=.5;
    float sph = length(p)-.5;
    return min(pln, sph);
}

void main() {
    vec2 uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e;
    vec3 p,rd=normalize(vec3(uv,1.));
    for(int i=0;i<99;i++){
        p=rd*d+vec3(0.,1.,-2.);
        d+=e=dist(p);
        if(e<.01)break;
    }
    vec3 col = vec3(1./d);
    gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/14ac5e54-bdad-4528-96d2-211f69e7c68c/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

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

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

float dist(vec3 p){
    float pln = p.y;
    p.y-=.5;
    float sph = length(p)-.5;
    return min(pln, sph);
}

void main() {
    vec2 uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e;
    vec3 p,rd=normalize(vec3(uv,1.));
    //rd.yz*=rot(3.1415/2.);
    for(int i=0;i<99;i++){
        p=rd*d+vec3(0.,1.,-2.);
        d+=e=dist(p);
        if(e<.01)break;
    }
    vec3 col = texture2D(bg,(p.xz/10.+.5+sin(u_time)*.1)).rgb;
    gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/db865566-d028-4bd4-a862-c4c8e74fbc53/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

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

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.

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

vec2 dist(vec3 p){
    vec2 pln = vec2(p.y, MATERIAL_PLN);
    p.y-=.5*sin(u_time*10.);
    vec2 sph = vec2(length(p)-.5, MATERIAL_SHP);
    return sph.x<pln.x?sph:pln;
}

void main() {
    vec2 dd, uv = (gl_FragCoord.xy*2.-u_resolution.xy)/min(u_resolution.x,u_resolution.y);
    float d=0.,e;
    vec3 col,p,rd=normalize(vec3(uv,1.));
    //rd.yz*=rot(3.1415/2.);
    for(int i=0;i<99;i++){
        p=rd*d+vec3(0.,1.,-2.);
        dd = dist(p);
        d+=e=dd.x;
        if(e<.01)break;
    }
    if(dd.y==MATERIAL_SHP){
        col = vec3(1./d);
    }    
    else{
        col = texture2D(bg,(p.xz/10.+.5+sin(u_time)*.1)).rgb;
    }
        gl_FragColor = vec4(col, 1.);
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/30e36bb3-bba0-44d4-ad72-b30fe76e11ab/Untitled.png

#ifdef GL_ES
precision mediump float;
#endif

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

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.

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

vec2 dist(vec3 p){
    vec3 p_pln = p;
    p_pln.y = abs(p_pln.y);
    p_pln.y -= 1.;
    vec2 pln = vec2(-p_pln.y, MATERIAL_PLN);
    // p.y-=1.;
    p.x += .1*sin(p.z*10.+u_time);
    p.xz = mod(p.xz, 1.);
    p.xz-=.5;
    vec2 sph = vec2(length(p)-.2, MATERIAL_SHP)*.3;
    return sph.x<pln.x?sph:pln;
}

vec3 norm(vec3 p){
    vec2 e=vec2(.001,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;
    vec3 col,p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-1.),n;
    //rd.yz*=rot(3.1415/2.);
	for(int r=0;r<6;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<.01)break;
        }
        // if(dd.y==MATERIAL_SHP){
        // }    
        if(dd.y==MATERIAL_PLN){
            col = texture2D(bg,(p.xz/10.+.5+sin(u_time)*.1)).rgb;
            col += smoothstep(0.,200.,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/4243bd90-dd5e-4e63-ba8b-87a05d6be3dc/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 bg1; // <https://i.imgur.com/X0wa8av.jpg>
uniform sampler2D bg2; // <https://i.imgur.com/yMgK19t.jpg>

#define MATERIAL_SHP 1.
#define MATERIAL_PLN 2.

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

vec2 dist(vec3 p){
    vec3 p_pln = p;
    p_pln.y = abs(p_pln.y);
    p_pln.y -= 1.;
    vec2 pln = vec2(-p_pln.y, MATERIAL_PLN);
    // p.y-=1.;
    p.x += .1*sin(p.z*10.+u_time);
    p.xz = mod(p.xz, 1.);
    p.xz-=.5;
    vec2 sph = vec2(length(p)-.2, MATERIAL_SHP)*.3;
    return sph.x<pln.x?sph:pln;
}

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;
    vec3 col,p,rd=normalize(vec3(uv,1.)),ro=vec3(0.,0.,-1.),n;
    //rd.yz*=rot(3.1415/2.);
	for(int r=0;r<6;r++){
        for(int i=0;i<=99;i++){
            p=rd*d+ro;
            dd = dist(p);
            d+=e=dd.x;
            if(e<E)break;
        }
        // if(dd.y==MATERIAL_SHP){
        // }    
        if(dd.y==MATERIAL_PLN){
            	col = mix(texture2D(bg1,(p.xz/10.+.5+sin(u_time)*.1)).rgb, texture2D(bg2,(p.xz/10.+.5+sin(u_time)*.1)).rgb, sin(u_time*2.)*.5+.5);
            //col -= smoothstep(0.,6.,d);
            break;
        }
        rd=reflect(rd, norm(p));
        ro=p+rd*.02;  
        d=0.;
    }
	gl_FragColor = vec4(col, 1.);
}