// Common vertex shader for fullscreen post-processing effects. // Draws a single triangle that covers the entire screen, with uv // coordinates in [0..1] struct VertexOutput { @builtin(position) position: vec4, @location(0) uv: vec2, }; @vertex fn vs_main(@builtin(vertex_index) i: u32) -> VertexOutput { let pos = array(vec4f(-1, -1, 0, 1.), vec4f(3, -1, 2., 1.), vec4f(-1, 3, 0, -1)); var out: VertexOutput; out.position = vec4f(pos[i].xy, 0.0, 1.0); out.uv = pos[i].zw; return out; }