#include <metal_stdlib>

using namespace metal;
void textureSample_bc7477(texturecube_array<float, access::sample> tint_symbol, sampler tint_symbol_1, device float4* const tint_symbol_2) {
  float3 arg_2 = float3(1.0f);
  uint arg_3 = 1u;
  float4 res = tint_symbol.sample(tint_symbol_1, arg_2, arg_3);
  *(tint_symbol_2) = res;
}

fragment void fragment_main(texturecube_array<float, access::sample> tint_symbol_3 [[texture(0)]], sampler tint_symbol_4 [[sampler(0)]], device float4* tint_symbol_5 [[buffer(0)]]) {
  textureSample_bc7477(tint_symbol_3, tint_symbol_4, tint_symbol_5);
  return;
}

