001-webaudio - visualizer

这是学习Three.js 官方案例系列

001-webaudio - visualizer

在这里插入图片描述

体验地址

片元 shader:

// tAudioData: 0~64数组,只在 tAudioData[0].a 有数值,该数值表示该通道上的音值大小。
uniform sampler2D tAudioData;
uniform float style;
varying vec2 vUv;

void main() {
   vec3 backgroundColor = vec3( 0.8, 0.8, 0.8 );
   vec3 color = vec3( 0.0, 0.65, 0.97 );

   float f = texture2D( tAudioData, vec2( vUv.x, 1.0 ) ).a;
   float i2 = step( vUv.y, f ) * step( f - 0.0125, vUv.y );
   float i1 = step(vUv.y, f);

   float i;
   if(style == 1.0) {
      i = i1;
   } else {
      i = i2;
   }
   vec3 tt = mix(backgroundColor, color, i );
   gl_FragColor = vec4(tt,1.0);
}

Visualizer.js

class Visualizer {
  ...
   async initObj() {
    // 音乐频谱信息
    let analyser = this.analyser
    analyser.getFrequencyData()

    this.uniforms = {
      style: { type: "f", value: 0.0 },
      tAudioData: {
        type: "t", value: new THREE.DataTexture(
          this.analyser.getFrequencyData(),
          this.analyser.getFrequencyData().length, 1, THREE.AlphaFormat)
      }
    };

    const v = await get({
      url: "./shader/vertex.glsl"
    });
    const f = await get({
      url: "./shader/fragment.glsl"
    });
    var material = new THREE.ShaderMaterial({
      uniforms: this.uniforms,
      vertexShader: v,
      fragmentShader: f
    });
    material.side = THREE.DoubleSide
    var geometry = new THREE.PlaneBufferGeometry(1, 1);
    var mesh = new THREE.Mesh(geometry, material);
    mesh.name = "plan"
    this.stage.scene.add(mesh);
  }

  changeStyle(styleId) {
    this.uniforms.style.value = styleId
  }
  ...
}

<全文结束>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rollup-plugin-visualizer是一个Rollup插件,用于可视化分析打包后的代码。当我们使用Rollup打包我们的项目时,通常会生成一个压缩且优化过的bundle.js文件,其中包含了我们所有的JavaScript代码和依赖。然而,这个bundle.js文件往往很难阅读和理解,特别是当我们的项目较大时。 这就是rollup-plugin-visualizer发挥作用的地方。它可以生成一个可视化报告,帮助我们更好地了解我们的代码结构。这个报告以可视化图表的形式展示我们代码的各个模块的大小,包括它们所占用的字节数、依赖关系和相对路径等。 使用rollup-plugin-visualizer非常简单。我们只需要在Rollup的配置文件中引入这个插件,并将其作为一个插件使用。一旦我们重新运行Rollup打包,它就会在输出目录中生成一个名为stats.html的报告文件。我们可以通过在浏览器中打开这个文件来查看报告。 通过查看这个报告,我们可以快速发现我们的代码中存在的问题。比如,我们可能会发现一些模块太大而导致加载时间过长。或者我们可能会发现一些模块没有被使用,从而给我们找出并移除不必要的代码提供了帮助。 总的来说,rollup-plugin-visualizer是一个非常有用的工具,可以帮助我们优化和改进我们的项目。通过可视化分析我们的代码,我们可以更好地了解它的结构和性能,并针对性地进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值