#include <metal_stdlib>

using namespace metal;
struct tint_symbol {
  float4 value [[position]];
};

void ignore_509355(depthcube<float, access::sample> tint_symbol_2) {
  (void) tint_symbol_2;
}

vertex tint_symbol vertex_main(depthcube<float, access::sample> tint_symbol_3 [[texture(0)]]) {
  ignore_509355(tint_symbol_3);
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main(depthcube<float, access::sample> tint_symbol_4 [[texture(0)]]) {
  ignore_509355(tint_symbol_4);
  return;
}

kernel void compute_main(depthcube<float, access::sample> tint_symbol_5 [[texture(0)]]) {
  ignore_509355(tint_symbol_5);
  return;
}

