
struct vertexUniformBuffer1 {
  transform1 : mat2x2<f32>;
};
struct vertexUniformBuffer2 {
  transform2 : mat2x2<f32>;
};

@group(0) @binding(0) var<uniform> x_20 : vertexUniformBuffer1;
@group(1) @binding(0) var<uniform> x_26 : vertexUniformBuffer2;


@stage(vertex)
fn main(@builtin(vertex_index) gl_VertexIndex : u32) -> @builtin(position) vec4<f32> {
  var indexable : array<vec2<f32>, 3>;
  let x_23 : mat2x2<f32> = x_20.transform1;
  let x_28 : mat2x2<f32> = x_26.transform2;
  let x_46 : u32 = gl_VertexIndex;
  indexable = array<vec2<f32>, 3>(vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, 1.0), vec2<f32>(-1.0, -1.0));
  let x_51 : vec2<f32> = indexable[x_46];
  let x_52 : vec2<f32> = (mat2x2<f32>((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])) * x_51);
  return vec4<f32>(x_52.x, x_52.y, 0.0, 1.0);
}
