[[block]]
struct Uniforms {
  modelViewProjectionMatrix : mat4x4<f32>;
};

[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;

struct VertexInput {
  [[location(0)]]
  cur_position : vec4<f32>;
  [[location(1)]]
  color : vec4<f32>;
};

struct VertexOutput {
  [[location(0)]]
  vtxFragColor : vec4<f32>;
  [[builtin(position)]]
  Position : vec4<f32>;
};

[[stage(vertex)]]
fn vtx_main(input : VertexInput) -> VertexOutput {
  var output : VertexOutput;
  output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
  output.vtxFragColor = input.color;
  return output;
}

[[stage(fragment)]]
fn frag_main([[location(0)]] fragColor : vec4<f32>) -> [[location(0)]] vec4<f32> {
  return fragColor;
}
