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