#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 color_out_1;
};
struct tint_symbol_3 {
  float4 color_out_1 [[color(0)]];
};

void main_1(thread float4* const tint_symbol_6, texture2d<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
  float4 const x_19 = *(tint_symbol_6);
  float4 const x_22 = tint_symbol_7.read(uint2(int2(float2(x_19.x, x_19.y))));
  *(tint_symbol_8) = x_22;
  return;
}

fragment tint_symbol_3 tint_symbol_1(texture2d<float, access::read> tint_symbol_10 [[texture(0)]], float4 gl_FragCoord_param [[position]]) {
  thread float4 tint_symbol_9 = 0.0f;
  thread float4 tint_symbol_11 = 0.0f;
  tint_symbol_9 = gl_FragCoord_param;
  main_1(&(tint_symbol_9), tint_symbol_10, &(tint_symbol_11));
  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_11};
  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
  return tint_symbol_5;
}

