three+dat.gui实现水波纹可调节参数效果代码

代码语言:html

所属分类:动画

代码描述:three+dat.gui实现水波纹可调节参数效果代码

代码标签: three dat.gui 水波纹 调节 参数

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  


  
  
  
    <style>
      body { margin: 0; overflow: hidden; user-select: none; background: #000000; }
      canvas { display: block; }
    </style>
  
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.139.js"></script>
</head>

  <body>
    <script type="module">
    
      import { GUI } from '//repo.bfw.wiki/bfwrepo/js/module/dat.gui.js';

      const vertexShader = `
        varying vec2 vUv;
        void main() {
          vUv = uv;
          gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
        }
      `;

      const fragmentShader = `
        uniform float time;
        uniform float speed;
        uniform float intensity;
        uniform float xIntensity;
        uniform float yIntensity;
        uniform vec3 color;
        uniform vec2 iResolution;
        uniform float iTime;
        uniform float noiseScale;
        uniform vec3 color_01;
        uniform vec3 color_02;
        uniform vec3 color_03;
        uniform vec3 color_04;
        uniform float m00;
        uniform float m01;
        uniform float m10;
        uniform float m11;
        varying vec2 vUv;

        float hash( float n ) {
          return fract(sin(n)*75728.5453123); 
        }

        float noise( in vec2 x ) {
          vec2 p = floor(x);
          vec2 f = fract(x);
          f = f*f*(3.0-2.0*f);
          float n = p.x + p.y*57.0;
          return mix(mix( hash(n + 0.0), hash(n + 1.0), f.x), mix(hash(n + 57.0), hash(n + 58.0), f.x), f.y);
        }

        float fbm(vec2 p){
          mat2 m = mat2(m00, m01, m10, m11);
          float f = 0.0;
          f += 0.5000 * noise(p); p *= m * 2.02;
          f += 0.2500 * noise(p); p *= m * 2.03;
          f += 0.1250 * noise(p); p *= m * 2.01;
          f += 0.0625 * noise(p); p *= m * 2.04;
          f /= 0.9375;
          return f;
        }

        void mainImage(out vec4 fragColor, in vec2 fragCoord){
          vec2 uv = fragCoord.xy / iResolution.xy ;  
          vec2 p = - 1. + 2. * uv;
          p.x *= iResolution.x / iResolution.y;

          float r = sqrt(dot(p,p)); 
          float a = cos(p.y * p.x);  

          float f = fbm(noiseScale * p);
          a += fbm(vec2(1.9 - p.x, speed * iTime + p.y));
          a += fbm(0.4 * p);
          r += fbm(2.9 * p);

          vec3 col = color_01;

          float ff = 1.0 - smoothstep(-0.4, 1.1, noise(vec2(0.5 * a, 3.3 * a)) );        
         .........完整代码请登录后点击上方下载按钮下载查看

网友评论0