xxxxxxxxxx
128
precision mediump float;
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
uniform float u_zoom;
// https://iquilezles.org/articles/distfunctions2d/
float sdCircle( vec2 p, float r )
{
return length(p) - r;
}
/* stripey fun
float random(vec2 st) {
// vec2 v2_u_time = vec2(1./tan(0.0001*u_time), cos(u_time)*tan(0.0001*u_time));
vec2 v2_u_time = vec2(log(u_time), 1./log(u_time * u_zoom));
return fract(sin(dot(st.xy, v2_u_time)) *
1.0);
// return fract(sin(dot(st.xy, vec2(u_mouse.x, u_mouse.y))) *
// 1.0);
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution.xy;
float rnd = random(st);
vec3 _col = step(0.25, vec3(rnd*rnd,fract(1./rnd),2./rnd));
gl_FragColor = vec4(_col, 1.0);
// gl_FragColor = vec4(vec3(rnd*rnd,fract(1./rnd),2./rnd), 1.0);
}
*/
float random (in vec2 st) {
return fract(sin(dot(st.xy,
vec2(12.9898,78.233)))*
43758.5453123);
}
// Based on Morgan McGuire @morgan3d
// https://www.shadertoy.com/view/4dS3Wd
float noise (in vec2 st) {
vec2 i = floor(st);
vec2 f = fract(st);
// Four corners in 2D of a tile
float a = random(i);
float b = random(i + vec2(1.0, 0.0));
float c = random(i + vec2(0.0, 1.0));
float d = random(i + vec2(1.0, 1.0));
vec2 u = f * f * (3.0 - 2.0 * f);
return mix(a, b, u.x) +
(c - a)* u.y * (1.0 - u.x) +
(d - b) * u.x * u.y;
}
float fbm (in vec2 st) {
// Initial values
float value = 0.0;
float amplitude = .5;
float frequency = 0.;
//
// Loop of octaves
for (int i = 0; i < OCTAVES; i++) {
value += amplitude * noise(st);
st *= 2.; // lacunarity
amplitude *= .55;
}
return value;
}
void main() {
vec2 st = gl_FragCoord.xy/u_resolution.xy;
st.x *= u_resolution.x/u_resolution.y;
vec3 color = vec3(0.0);
// color += fbm(st*3.0);//*cos(u_time*0.001));
// fbm( p + fbm( p + fbm( p ) ) )
vec2 p = vec2(cos(u_time*st));//st * 3.0;
color += step(0.5,fbm(p*0.01*u_time + fbm(p*u_time + fbm(p*u_time))));
// color += step(0.55,fbm(p + fbm(p*u_time)));
vec3 pct;
pct.r = smoothstep(0.0,1.0, pow(st.x,0.25));
pct.g = 1.;//pow(st.x*PI,2.);
pct.b = smoothstep(1.0,0.0, st.x);//pow(st.x,0.5);
color = mix(color, vec3(0,0,0), pct);
vec2 p2 = (2.0*gl_FragCoord.xy-u_resolution.xy)/u_resolution.y;
float d = sdCircle(p2, 0.55);
color = mix( color, pct, 1.0-smoothstep(0.0,0.41,abs(log(12.*cos(u_time*0.01)*d))) );
// vec2 p3 = (gl_FragCoord.xy - u_resolution.xy) / u_resolution.y;
// float d2 = sdCircle(p3, 0.55);
// color = mix( color, pct, 1.0-smoothstep(0.0,0.21,abs(-10.*cos(u_time*0.01)*d2)) );
// vec2 p4 = (0.25*gl_FragCoord.xy - u_resolution.xy) / u_resolution.y;
// float d3 = sdCircle(p4, 0.65);
// color = mix( color, pct, 1.0-smoothstep(0.0,0.81,abs(cos(u_time*0.01)*d3)) );
// if (sdCircle(p2, 0.5) > 0.45) color = vec3(0.);
// else
// else color.r = color.r;
// bottom-left
// vec2 bl = step(vec3(0.1),color);
// // pct = bl.x * bl.y;
// top-right
// vec2 tr = step(vec2(0.1),1.0-st);
// pct *= tr.x * tr.y;
// color = vec3(pct);
gl_FragColor = vec4(color,0.025);
}