webgl悬浮点阵图效果代码
代码语言:html
所属分类:悬停
代码描述:webgl悬浮点阵图效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
margin: 0;
background: #000;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
particle-art {
display: block;
width: 90vmin;
height: 90vmin;
border: 2px solid #fff;
touch-action: none;
}
particle-art canvas {
display: block;
width: 100%;
height: 100%;
}
</style>
</head>
<body >
<particle-art>
<script type="buffer" name="position" data-size="2">
const W = (WIDTH / 40)|0;
const H = (HEIGHT / 40)|0;
Array.from({length: W*H}).map((_, i) => {
const x = i % W;
const y = (i / W)|0;
return [-1 + x * 2 / (W - 1), -1 + y * 2 / (H - 1)]
}).flat();
</script>
<script type="vert">
precision highp float;
attribute vec4 position;
varying vec4 vPos;
uniform vec2 resolution;
uniform float time;
uniform vec2 pointer;
void main() {
gl_Position = position;
vPos = position;
float maxSize = 6. * resolution.x / 20.;
gl_PointSize = max(.2, 1. - distance(position.xy, pointer)) * maxSize;
}
</script>
<script type="frag">
precision highp float;
varying vec4 vPos;
uniform float time;
void main() {
// Light point
float strength = distance(gl_PointCoord, vec2(0.5));
strength = 1.0 - strength;
strength = pow(strength, 10.0);
float sx = vPos.y * vPos.x * 2. + time;
vec3 color = vec3(.7 + .3 * sin(sx + 1.), .9 + .5 * sin(sx + 2.), 1.);
color = mix(vec3(0.0), color, strength);
gl_FragColor = vec4(color, strength);
}
</script>
</particle-art>
<script type="module">
import Stats f.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0