#include <metal_stdlib>

using namespace metal;
kernel void tint_symbol(texture3d<float, access::write> tint_symbol_1 [[texture(0)]], texture3d<float, access::write> tint_symbol_2 [[texture(1)]], texture3d<uint, access::write> tint_symbol_3 [[texture(2)]], texture3d<int, access::write> tint_symbol_4 [[texture(3)]], texture3d<uint, access::write> tint_symbol_5 [[texture(4)]], texture3d<int, access::write> tint_symbol_6 [[texture(5)]], texture3d<float, access::write> tint_symbol_7 [[texture(6)]], texture3d<uint, access::write> tint_symbol_8 [[texture(7)]], texture3d<int, access::write> tint_symbol_9 [[texture(8)]], texture3d<float, access::write> tint_symbol_10 [[texture(9)]], texture3d<uint, access::write> tint_symbol_11 [[texture(10)]], texture3d<int, access::write> tint_symbol_12 [[texture(11)]], texture3d<float, access::write> tint_symbol_13 [[texture(12)]], texture3d<uint, access::write> tint_symbol_14 [[texture(13)]], texture3d<int, access::write> tint_symbol_15 [[texture(14)]], texture3d<float, access::write> tint_symbol_16 [[texture(15)]]) {
  uint3 dim1 = uint3(tint_symbol_1.get_width(), tint_symbol_1.get_height(), tint_symbol_1.get_depth());
  uint3 dim2 = uint3(tint_symbol_2.get_width(), tint_symbol_2.get_height(), tint_symbol_2.get_depth());
  uint3 dim3 = uint3(tint_symbol_3.get_width(), tint_symbol_3.get_height(), tint_symbol_3.get_depth());
  uint3 dim4 = uint3(tint_symbol_4.get_width(), tint_symbol_4.get_height(), tint_symbol_4.get_depth());
  uint3 dim5 = uint3(tint_symbol_5.get_width(), tint_symbol_5.get_height(), tint_symbol_5.get_depth());
  uint3 dim6 = uint3(tint_symbol_6.get_width(), tint_symbol_6.get_height(), tint_symbol_6.get_depth());
  uint3 dim7 = uint3(tint_symbol_7.get_width(), tint_symbol_7.get_height(), tint_symbol_7.get_depth());
  uint3 dim8 = uint3(tint_symbol_8.get_width(), tint_symbol_8.get_height(), tint_symbol_8.get_depth());
  uint3 dim9 = uint3(tint_symbol_9.get_width(), tint_symbol_9.get_height(), tint_symbol_9.get_depth());
  uint3 dim10 = uint3(tint_symbol_10.get_width(), tint_symbol_10.get_height(), tint_symbol_10.get_depth());
  uint3 dim11 = uint3(tint_symbol_11.get_width(), tint_symbol_11.get_height(), tint_symbol_11.get_depth());
  uint3 dim12 = uint3(tint_symbol_12.get_width(), tint_symbol_12.get_height(), tint_symbol_12.get_depth());
  uint3 dim13 = uint3(tint_symbol_13.get_width(), tint_symbol_13.get_height(), tint_symbol_13.get_depth());
  uint3 dim14 = uint3(tint_symbol_14.get_width(), tint_symbol_14.get_height(), tint_symbol_14.get_depth());
  uint3 dim15 = uint3(tint_symbol_15.get_width(), tint_symbol_15.get_height(), tint_symbol_15.get_depth());
  uint3 dim16 = uint3(tint_symbol_16.get_width(), tint_symbol_16.get_height(), tint_symbol_16.get_depth());
  return;
}

