Skip to content

Instantly share code, notes, and snippets.

@rgngl
Created May 12, 2013 22:12
Show Gist options
  • Save rgngl/5565108 to your computer and use it in GitHub Desktop.
Save rgngl/5565108 to your computer and use it in GitHub Desktop.
#ifdef GL_ES
precision mediump float;
#endif
uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;
float noise(vec2 p, float s)
{
return fract(956.9*cos(429.9*dot(vec3(p,s),vec3(9.7,7.5,11.3))));
}
float mix2(float a2, float b2, float t2)
{ return mix(a2,b2,t2*t2*(3.-2.*t2)); }
float fracnoise(vec2 p, float s, float c)
{
float sum = .0;
for(float i=0. ;i<6.; i+=1.)
{
vec2 pi = vec2(pow(2.,i+c)), fp = fract(p*pi), ip = floor(p*pi);
sum += 2.0*pow(.5,i+c)*mix2(mix2(noise(ip, s),noise(ip+vec2(1.,.0), s), fp.x), mix2(noise(ip+vec2(.0,1.), s),noise(ip+vec2(1.,1.), s), fp.x), fp.y);
}
return sum*(2.2-c);
}
vec3 fractnoise(vec2 p, float s)
{
vec3 sum = vec3(.0);
for(float i = .0; i<4.; i+=1.)
{
sum += fract(vec3(99.9)*vec3(cos(12.9+s*29.8+i*19.9),cos(14.0+s*17.9+i*23.7),cos(12.1+s*22.1+i*24.5)))*vec3(fracnoise(p, s+i, (i+1.0)));
}
return sum;
}
void main( void ) {
vec2 p=gl_FragCoord.xy/resolution.xy+vec2(-60.0+time/100.0,0);
gl_FragColor=vec4(fractnoise(p,865.9527),1.0)/(0.000035*max(1.0,(distance(gl_FragCoord.xy+vec2(180.0*cos((time+20.0*3.14)/20.0),30.0*sin((time+25.0*3.14)/25.0)),resolution.xy/2.0)*distance(gl_FragCoord.xy+vec2(180.0*cos(time/20.0),30.0*sin(time/25.0)),resolution.xy/2.0))));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment