mirror of
https://github.com/CookieCollective/Live-Coding-Sources.git
synced 2025-07-22 08:40:12 +02:00
69 lines
1.2 KiB
GLSL
69 lines
1.2 KiB
GLSL
|
|
precision mediump float;
|
|
|
|
uniform float time;
|
|
uniform vec2 resolution;
|
|
|
|
|
|
float noise (vec3 p ){
|
|
vec4 a = dot( floor( p ), vec3( 1.,57.,21.) ) + vec4( 0.,57.,21., 78. );
|
|
vec3 f = -.5 * cos( fract( p ) * acos( -1. ) ) + .5;
|
|
a = mix( sin( cos( a ) * a ), sin( cos( 1. + a ) * (1. + a )) , f.x);
|
|
a.xy = mix( a.xz, a.yw, f.y );
|
|
return mix( a.x, a.y, f.z );
|
|
|
|
}
|
|
float fbm( vec3 p ){
|
|
float v = 0.;
|
|
float a = .5;
|
|
for( int i =0; i < 4; i++ ){
|
|
v += a * noise( p );
|
|
p *= 2.;
|
|
a *= .5;
|
|
|
|
}
|
|
return v;
|
|
}
|
|
|
|
|
|
float blend( float a, float b, float k ){
|
|
|
|
float h = clamp( ( b-a )/k, 0.,1. );
|
|
return mix( b, a, h)-k*h*(1.-h);
|
|
|
|
}
|
|
|
|
float map( vec3 p ){
|
|
|
|
float st = abs( sin( time ) );
|
|
vec3 off = vec3(0.,st *5., 0.) ;
|
|
float s = length( p + off ) - 3.;
|
|
float n = fbm( p + time );
|
|
float pl = dot( p, vec3(0.,1.,0.)) + 1.;
|
|
return n + blend( s , pl, st );
|
|
}
|
|
|
|
void main () {
|
|
vec2 uv = gl_FragCoord.xy / resolution.xy * 2. - 1.;
|
|
uv.x *= resolution.x / resolution.y;
|
|
|
|
float t =0.;
|
|
|
|
vec3 o = vec3( 0., 0., -5.);
|
|
vec3 d = vec3( uv, 1.);
|
|
vec3 p;
|
|
float v;
|
|
for ( int i =0; i < 16; i++ ){
|
|
p = o + d* t;
|
|
v = map(p);
|
|
if( v < 0.01 )break;
|
|
t += v;
|
|
}
|
|
|
|
vec3 col = vec3(1. - t/16. );
|
|
|
|
|
|
|
|
gl_FragColor = vec4(col, 1);
|
|
}
|