@m0ksem/vue-glsl
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

VueGLSL

Usage

  1. Import component
import Shader2d from './components/shader-2d.vue'
<Shader2d :fragment="fragment" @ready="onCanvasReady" />
  1. Create fragment shader
const fragment = 
`precision highp float;
uniform float time;

void main() {
  gl_FragColor = vec4(sin(time), cos(time), sin(time), 1.0);
}
`
  1. Create event listener:
let time = 0;

const onCanvasReady = ({ draw, getUniform, gl }: VueGLSLReadyEvent) => {
    const timeHandle = getUniform('time');

    let lastFrame = Date.now();
    let thisFrame: number;

    // Will be executed each frame
    draw(() => {
      thisFrame = Date.now();
      time += (thisFrame - lastFrame) / (100 * 60);	
      lastFrame = thisFrame;

      gl.uniform1f(timeHandle, time);
  
      gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
    })
}

Readme

Keywords

none

Package Sidebar

Install

npm i @m0ksem/vue-glsl

Weekly Downloads

1

Version

0.0.5

License

none

Unpacked Size

15.8 kB

Total Files

12

Last publish

Collaborators

  • m0ksem