#include <metal_stdlib>

using namespace metal;
struct FragmentInput {
  float2 vUv;
};
struct FragmentOutput {
  float4 color;
};
struct tint_symbol_2 {
  float2 vUv [[user(locn2)]];
};
struct tint_symbol_3 {
  float4 color [[color(0)]];
};

fragment tint_symbol_3 tint_symbol(depth2d<float, access::sample> tint_symbol_5 [[texture(5)]], sampler tint_symbol_6 [[sampler(3)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  FragmentInput const fIn = {.vUv=tint_symbol_1.vUv};
  float const sample = tint_symbol_5.sample(tint_symbol_6, fIn.vUv);
  float3 const color = float3(sample, sample, sample);
  FragmentOutput fOut = {};
  fOut.color = float4(color, 1.0f);
  tint_symbol_3 const tint_symbol_4 = {.color=fOut.color};
  return tint_symbol_4;
}

