Skip to content

Latest commit

 

History

History
63 lines (54 loc) · 1.42 KB

README.md

File metadata and controls

63 lines (54 loc) · 1.42 KB

lilgpu

Lil wrapper to toy with WebGPU

Usage

See examples.

Browser

import { initCanvas, d } from "https://esm.sh/gh/gnlow/lilgpu/browser.ts"

const g = await initCanvas({
    vertShader: `
        @vertex
        fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> @builtin(position) vec4<f32> {
            let x = f32(i32(in_vertex_index) - 1);
            let y = f32(i32(in_vertex_index & 1u) * 2 - 1);
            return vec4<f32>(x, y, 0.0, 1.0);
        }
    `,
    fragShader: `
        @fragment
        fn fs_main() -> @location(0) vec4<f32> {
            return vec4<f32>(1.0, 0.0, 0.0, 1.0);
        }
    `,
    canvas: document.querySelector("canvas"),
})

g.draw(3)

Deno

import { initDeno } from "https://esm.sh/gh/gnlow/lilgpu/deno.ts"

const g = await initDeno({
    vertShader: `
        @vertex
        fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> @builtin(position) vec4<f32> {
            let x = f32(i32(in_vertex_index) - 1);
            let y = f32(i32(in_vertex_index & 1u) * 2 - 1);
            return vec4<f32>(x, y, 0.0, 1.0);
        }
    `,
    fragShader: `
        @fragment
        fn fs_main() -> @location(0) vec4<f32> {
            return vec4<f32>(1.0, 0.0, 0.0, 1.0);
        }
    `,
    width: 200,
    height: 200,
})

g.draw(3)

await Deno.writeFile("./triangle.png", await g.getImage())

Jupyter

await g.getImage() // Uint8Array