#version 330 core

in vec2 TexCoords;
flat in int Index;
uniform sampler2DArray TextureAtlas;
uniform int TextureMap[32];
uniform vec3 TextColor;
out vec4 FragColor;

void main() {
  int TextureId = TextureMap[Index];
  vec3 TextureIndexCoords = vec3(TexCoords.xy, TextureId);
  vec4 sampled = vec4(1.0, 1.0, 1.0, texture(TextureAtlas, TextureIndexCoords).r);
  FragColor = sampled * vec4(TextColor, 1);
};