A TypeScript library for rendering WGSL shaders with WebGPU
npm install wgsl-canvasA TypeScript library for rendering WGSL shaders with WebGPU, inspired by glsl-canvas.
🎨 Live Demo
https://github.com/user-attachments/assets/17d938d8-6d3d-419a-b30a-ceeb9f1f38db
- Easy-to-use API for WebGPU shader rendering
- Built-in uniforms (time, resolution, mouse)
- TypeScript support
- Animation loop management
- Responsive canvas sizing
``bash`
npm install wgsl-canvas
`typescript
import { WGSLCanvas } from 'wgsl-canvas';
// Create a new WGSL canvas
const canvas = document.getElementById('myCanvas') as HTMLCanvasElement;
const wgslCanvas = new WGSLCanvas(canvas);
// Load a fragment shader
const shader =
@fragment
fn main(@location(0) uv: vec2
return vec4
};
await wgslCanvas.load(shader);
// Start animation
wgslCanvas.play();
`
The following uniforms are automatically available in your shaders:
`wgsl`
struct Uniforms {
time: f32, // Time in seconds since start
resolution: vec2
mouse: vec2
};
`typescript`
new WGSLCanvas(canvas?: HTMLCanvasElement | WGSLCanvasOptions, options?: WGSLCanvasOptions)
- async init(): Initialize WebGPU contextasync load(fragment: string, vertex?: string)
- : Load shadersplay()
- : Start animation looppause()
- : Pause animationtoggle()
- : Toggle play/pauseresize(width?: number, height?: number)
- : Resize canvasdestroy()
- : Clean up resources
`bashInstall dependencies
npm install
This library requires WebGPU support. Currently supported in:
- Chrome 113+
- Edge 113+
- Chrome Canary with WebGPU flag enabled
MIT