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);
}
#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);
}
#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.);
}
#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.);
}
#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.);
}
#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.);
}
#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.);
}