#include <metal_stdlib>

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

void textureSampleLevel_c32df7(texturecube<float, access::sample> tint_symbol_2, sampler tint_symbol_3) {
  float4 res = tint_symbol_2.sample(tint_symbol_3, float3(), level(1.0f));
}

vertex tint_symbol vertex_main(texturecube<float, access::sample> tint_symbol_4 [[texture(0)]], sampler tint_symbol_5 [[sampler(1)]]) {
  textureSampleLevel_c32df7(tint_symbol_4, tint_symbol_5);
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main(texturecube<float, access::sample> tint_symbol_6 [[texture(0)]], sampler tint_symbol_7 [[sampler(1)]]) {
  textureSampleLevel_c32df7(tint_symbol_6, tint_symbol_7);
  return;
}

kernel void compute_main(texturecube<float, access::sample> tint_symbol_8 [[texture(0)]], sampler tint_symbol_9 [[sampler(1)]]) {
  textureSampleLevel_c32df7(tint_symbol_8, tint_symbol_9);
  return;
}

