webgl炫酷声音驱动可交互动画效果代码
代码语言:html
所属分类:动画
代码描述:webgl炫酷声音驱动可交互动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @charset "UTF-8"; html, body { padding: 0; margin: 0; overflow: hidden; height: 100dvh; width: 100dvw; background: black; } body { display: flex; justify-content: center; align-items: center; color: #7C808F; } canvas { height: 100dvh; width: 100dvw; } #gui-node { position: absolute; top: 0; right: 0; } #audioFileInput { display: none; } #audio-container { position: absolute; top: 0; left: 50%; transform: translate(-50%, -100%); width: 100%; height: unset; background: #1D1E22; padding: 10px; box-sizing: border-box; opacity: 0.5; transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out; } #audio-container #audio { height: 20px; border: 0; broder-radius: 0; width: 100%; } #audio-container:hover { opacity: 1; transform: translate(-50%, 0); } #audio-container:after { font-size: 10px; text-align: center; content: "▼"; position: absolute; display: block; left: 50%; bottom: 0; transform: translate(-50%, 100%); width: 10%; background: #1D1E22; } </style> <script> window.console = window.console || function(t) {}; </script> </head> <body translate="no"> <canvas id="webgl"></canvas> <div id="gui-node"></div> <script id="vxShader" type="x-shader/x-vertex"> attribute vec2 aPosition; void main() { gl_Position = vec4(aPosition, 0.0, 1.0); } </script> <script id="fragShaderFade" type="x-shader/x-fragment"> #ifdef GL_ES precision mediump float; #endif uniform float uFade; void main() { gl_FragColor = vec4(vec3(0.), uFade); } </script> <script id="fragShader" type="x-shader/x-fragment"> #ifdef GL_ES precision mediump float; #endif #define PI 3.14159265359 #define PI2 2. * PI // HSL to RGB // take from https://github.com/Experience-Monks/glsl-hsl2rgb/blob/master/index.glsl float hue2rgb(float f1, float f2, float hue) { if (hue < 0.0) hue += 1.0; else if (hue > 1.0) hue -= 1.0; float res; if ((6.0 * hue) < 1.0) res = f1 + (f2 - f1) * 6.0 * hue; else if ((2.0 * hue) < 1.0) res = f2; else if ((3.0 * hue) < 2.0) res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; else res = f1; return res; } vec3 hsl2rgb(vec3 hsl) { vec3 rgb; if (hsl.y == 0.0) { rgb = vec3(hsl.z); // Luminance } else { float f2; if (hsl.z < 0.5) f2 = hsl.z * (1.0 + hsl.y); else f2 = h.........完整代码请登录后点击上方下载按钮下载查看
网友评论0