canvas+webgl实现三维彩色点围成圆形扩散动画效果代码
代码语言:html
所属分类:三维
代码描述:canvas+webgl实现三维彩色点围成圆形扩散动画效果代码
代码标签: canvas webgl 三维 彩色 点 围成 圆形 扩散 动画 效果 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
</head>
<body>
<script >
const canvas = document.createElement("canvas");
const gl = canvas.getContext("webgl2");
document.title = "🤖";
document.body.innerHTML = "";
document.body.appendChild(canvas);
document.body.style = "margin:0;touch-action:none;overflow:hidden;";
canvas.style.width = "100%";
canvas.style.height = "auto";
canvas.style.userSelect = "none";
const dpr = Math.max(1, .5 * window.devicePixelRatio);
function resize() {
const {
innerWidth: width,
innerHeight: height } =
window;
canvas.width = width * dpr;
canvas.height = height * dpr;
gl.viewport(0, 0, width * dpr, height * dpr);
}
window.onresize = resize;
const vertexSource = `#version 300 es
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
in vec4 position;
void main(void) {
gl_Position = position;
}
`;
const fragmentSource = `#version 300 es
/*********
* made by Matthias Hurrle (@atzedent)
*
* Adaptation of "Quasar" by @kishimisu
* Source: https://www.shadertoy.com/view/msGyzc
*/
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
out vec4 fragColor;
uniform vec2 resolution;
uniform float time;
uniform vec2 touch;
uniform int pointerCount;
#define mouse (touch/resolution)
#define P pointerCount
#define T (10.+time*.5)
#define S smoothstep
#define hue(a) (.6+.6*cos(6.3*(a)+vec3(0,23,21)))
mat2 rot(float a) {
float c = cos(a), s = sin(a);
r.........完整代码请登录后点击上方下载按钮下载查看
网友评论0