var positions: array, 6> = array, 6>( vec2(-1.0, 1.0), vec2(-1.0, -1.0), vec2(1.0, -1.0), vec2(-1.0, 1.0), vec2(1.0, 1.0), vec2(1.0, -1.0) ); var uvs: array, 6> = array, 6>( vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(0.0, 0.0), vec2(1.0, 0.0), vec2(1.0, 1.0) ); [[group(0), binding(0)]] var u_sampler: sampler; [[group(1), binding(0)]] var u_texture: texture_2d; struct VertexInput { [[builtin(vertex_index)]] vertex_index: u32; }; struct VertexOutput { [[builtin(position)]] position: vec4; [[location(0)]] uv: vec2; }; [[stage(vertex)]] fn vs_main(input: VertexInput) -> VertexOutput { var out: VertexOutput; out.uv = uvs[input.vertex_index]; out.position = vec4(positions[input.vertex_index], 0.0, 1.0); return out; } [[stage(fragment)]] fn fs_main(input: VertexOutput) -> [[location(0)]] vec4 { return textureSample(u_texture, u_sampler, input.uv); }