Lil wrapper to toy with WebGPU
See examples.
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)
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())
await g.getImage() // Uint8Array