webgl炫酷声音驱动可交互动画效果代码

代码语言:html

所属分类:动画

代码描述:webgl炫酷声音驱动可交互动画效果代码

代码标签: 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