Skip to content
import { glCanvas, loadVideoTexture, pixelate } from "@radiancejs/gl";
import { Pane } from "tweakpane";
import "./styles.css";

const pixelateEffect = pixelate({ size: 8 });

glCanvas({
  canvas: "#glCanvas",
  fragment: /* glsl */ `
    in vec2 vUv;
    uniform sampler2D uTexture;
    out vec4 fragColor;

    void main() {
      fragColor = texture(uTexture, vUv);
    }
  `,
  uniforms: {
    uTexture: loadVideoTexture(
      "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm",
    ),
  },
  postEffects: [pixelateEffect],
});

const pane = new Pane({ title: "Pixelate" });
pane.addBinding(pixelateEffect.uniforms, "uSize", { min: 1, max: 32, step: 1 });

Released under the MIT License.