エフェクト
noise-split

Noise-split


デモ

ソースコード

import { Vector3 } from "three";
import { Ob } from "negl";
import vertexShader from "./vertex.glsl";
import fragmentShader from "./fragment.glsl";
import gsap from "gsap";

export default class extends Ob {
  setupUniforms() {
    const uniforms = super.setupUniforms();
    uniforms.uParams = { value: new Vector3(10, 5.7, 0.3) };
    return uniforms;
  }
  setupVertex() {
    return vertexShader;
  }
  setupFragment() {
    return fragmentShader;
  }
  debug(folder) {
    // folder.open();
    
    folder
      .add(this.uniforms.uParams.value, "x", -10, 10, 0.1)
      .name("noise.x")
      .listen();

    folder
      .add(this.uniforms.uParams.value, "y", -10, 10, 0.1)
      .name("noise.y")
      .listen();
    folder
      .add(this.uniforms.uParams.value, "z", -10, 10, 0.1)
      .name("noise.z")
      .listen();
    folder
      .add(this.uniforms.uProgress, "value", 0, 1, 0.1)
      .name("progess")
      .listen();

    const datData = { next: !!this.uniforms.uProgress.value };
    folder.add(datData, "next").onChange(() => {
      gsap.to(this.uniforms.uProgress, {
        value: +datData.next,
        duration: 2,
        ease: "power2.inOut",
      });
    });
  }
}

利用方法

⚠️

ダウンロードしたコードをプロジェクトに配置し、以下のコードを記述してください。

index.html

<img class="screen" data-webgl="noise-split" data-tex-1="/sample1.jpg" data-tex-2="/sample2.jpg"/>

使用画像・動画

  • こちらを参考にダウンロードした各ファイルを配置してください。