struct buf0 {
  one : f32;
};

var<private> x_GLF_color : vec4<f32>;

[[group(0), binding(0)]] var<uniform> x_6 : buf0;

fn main_1() {
  var f : f32;
  x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
  let x_23 : f32 = x_6.one;
  f = clamp(x_23, 1.0, 1.0);
  let x_25 : f32 = f;
  let x_27 : f32 = x_6.one;
  if ((x_25 > x_27)) {
    x_GLF_color = vec4<f32>(0.0, 0.0, 0.0, 0.0);
  } else {
    let x_32 : f32 = f;
    x_GLF_color = vec4<f32>(x_32, 0.0, 0.0, 1.0);
  }
  return;
}

struct main_out {
  [[location(0)]]
  x_GLF_color_1 : vec4<f32>;
};

[[stage(fragment)]]
fn main() -> main_out {
  main_1();
  return main_out(x_GLF_color);
}
