#include <metal_stdlib>

using namespace metal;
struct In {
  float none;
  float flat;
  float perspective_center;
  float perspective_centroid;
  float perspective_sample;
  float linear_center;
  float linear_centroid;
  float linear_sample;
};
struct tint_symbol_2 {
  float none [[user(locn0)]];
  float flat [[user(locn1)]] [[flat]];
  float perspective_center [[user(locn2)]] [[center_perspective]];
  float perspective_centroid [[user(locn3)]] [[centroid_perspective]];
  float perspective_sample [[user(locn4)]] [[sample_perspective]];
  float linear_center [[user(locn5)]] [[center_no_perspective]];
  float linear_centroid [[user(locn6)]] [[centroid_no_perspective]];
  float linear_sample [[user(locn7)]] [[sample_no_perspective]];
};

fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
  In const in = {.none=tint_symbol_1.none, .flat=tint_symbol_1.flat, .perspective_center=tint_symbol_1.perspective_center, .perspective_centroid=tint_symbol_1.perspective_centroid, .perspective_sample=tint_symbol_1.perspective_sample, .linear_center=tint_symbol_1.linear_center, .linear_centroid=tint_symbol_1.linear_centroid, .linear_sample=tint_symbol_1.linear_sample};
  return;
}

