[[block]]
struct block0 {
  in_color : vec4<f32>;
};

var<private> position : vec4<f32>;

var<private> frag_color : vec4<f32>;

[[group(0), binding(1)]] var<uniform> x_8 : block0;

var<private> gl_Position : vec4<f32>;

fn main_1() {
  let x_24 : vec4<f32> = position;
  gl_Position = x_24;
  let x_27 : vec4<f32> = x_8.in_color;
  frag_color = x_27;
  return;
}

struct main_out {
  [[builtin(position)]]
  gl_Position : vec4<f32>;
  [[location(0)]]
  frag_color_1 : vec4<f32>;
};

[[stage(vertex)]]
fn main([[location(0)]] position_param : vec4<f32>) -> main_out {
  position = position_param;
  main_1();
  return main_out(gl_Position, frag_color);
}
