#include <metal_stdlib>

using namespace metal;
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]];
};

void tint_symbol_inner(float none, float flat, float perspective_center, float perspective_centroid, float perspective_sample, float linear_center, float linear_centroid, float linear_sample) {
}

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

