gpu-life/src/present.wgsl
2025-01-11 01:31:33 +03:00

21 lines
504 B
WebGPU Shading Language

struct Varying {
@location(0) uv: vec2f,
@builtin(position) screen: vec4f,
}
@vertex
fn on_vertex(@builtin(vertex_index) vi: u32) -> Varying {
let uv = vec2f(vec2(vi, vi >> 1u) & vec2(1u));
let screen = vec4(uv * 2. - 1., 0., 1.);
return Varying(vec2(uv.x, 1. - uv.y), screen);
}
@group(0) @binding(0) var field: texture_2d<u32>;
@fragment
fn on_fragment(in: Varying) -> @location(0) vec4f {
let pos = vec2u(in.screen.xy);
let state = textureLoad(field, pos, 0).x;
return vec4f(f32(state));
}