struct VertexUniform { matrix: mat4x4, } @binding(0) @group(0) var ubos : array; struct VertexOut { @builtin(position) position_clip : vec4, @location(0) frag_uv : vec2, @interpolate(flat) @location(1) instance_index: u32, } @stage(vertex) fn main( @builtin(instance_index) instanceIdx : u32, @location(0) position: vec4, @location(1) uv: vec2, ) -> VertexOut { var output : VertexOut; output.position_clip = ubos[instanceIdx].matrix * position; output.frag_uv = uv; output.instance_index = instanceIdx; return output; }