File download
- File size:
- 827 bytes (827B)
- File date:
- 2021-12-12 11:40:28
- Download count:
- all-time: 22
file_id.diz
/**
* RipplesĀ²
* @author Jan <LJ> Scheurer
* @license CC-BY-SA 4.0
*/
precision highp float;
uniform float time;
uniform vec2 resolution;
float rand(vec2 p){return fract(sin(dot(p,vec2(12.412,38.5123)))*42164.5123);}
const vec2 O=vec2(0,1);
float bnoisea(vec2 b){b=floor(b);return (rand(b)+rand(b+O)+rand(b+O.yx)+rand(b+O.yy))*.25;}
float bnoise(vec2 b){float time=time*.4;return mix(bnoisea(b+floor(time)),bnoisea(b+floor(time+1.)),fract(time));}
mat2 r2d(float a){float sa=sin(a),ca=cos(a);return mat2(ca,sa,-sa,ca);}
float pat(vec2 p) {
for(int i=0;i<7;i++) p=max(abs(abs(p-4.)*r2d(.785)-5.5),vec2(0.,bnoise(vec2(i))-1.));
return bnoise(p.xx*40.+time);
}
void main() {
vec2 p = ( gl_FragCoord.xy / resolution.xy )*2.-1.;
p.x*=resolution.x/resolution.y;
float T=time*.1+4.;
vec3
ro=vec3(sin(T)*3.,2.5+sin(T+1.),cos(T)*3.),
rd=normalize(vec3(p*r2d(.7+T),-2.)),
mp=ro
;
rd.yz*=r2d(1.5-cos(T+.3)*.5);
rd.xz*=r2d(T);
for(int i=0;i<50;i++)mp+=rd*(mp.y+pat(mp.xz*3.)*.4)*.15;
gl_FragColor = vec4( vec3(pow(pow(.7/abs(mp.y)*.35,.5)*1.4*vec3(.4,.45,.5),vec3(5.))*2.)*max(1.-length(p)*.45,0.), 1.0 );
}