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