webgl实现canvas万花筒屏保动画效果代码
代码语言:html
所属分类:动画
代码描述:webgl实现canvas万花筒屏保动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> </head> <body translate="no"> <script type="x-shader/x-fragment">#version 300 es /********* * made by Matthias Hurrle (@atzedent) */ precision highp float; out vec4 O; uniform float time; uniform vec2 resolution; #define FC gl_FragCoord.xy #define R resolution #define T (time+2.5) #define S smoothstep #define hue(a) (.6+.6*cos(6.3*(a)+vec3(0,83,21))) void pR(inout vec2 p, float a) { p=cos(a)*p+sin(a)*vec2(-p.y,p.x);} float poly(vec2 p, float n) { float a=atan(p.x,p.y), b=6.28318/n; return cos(floor(.5+a/b)*b-a)*length(p); } vec3 pattern0(vec2 uv) { vec2 p=uv*3.; vec3 col=vec3(0); for (float i=.0; i++<4.;) { pR(p,.785398); p=fract(p)-.5; float d=length(p*p); d=sin(12.*d+i*T*.5)*.62; d=abs(d); col+=pow(.05/d,1.2)*hue(dot(p,uv)*i+T*.2); } return col; } vec3 pattern1(vec2 uv) { vec2 p=uv*2.; vec3 col=vec3(0); for (float i=.0; i++<4.;) { pR(p,.785398); p=fract(p)-.5; float d=length(p); d=sin(14.*d+T)*.8; d=abs(d); col+=(.05/d)*hue(dot(uv,uv)+i*.125+T*.2); p*=1.618; } return col; } vec3 pattern2(vec2 uv) { vec2 p=uv*1.5; vec3 col = vec3(0); const float n = 3.5; for (float i = .0; i < 6.; i++) { p.........完整代码请登录后点击上方下载按钮下载查看
网友评论0