   Color = VertexColor * Material.color * PassColor;
   UV = VertexUV;
 
+  if (enableNormalMap && useVertexTangents) {
+    Tangent = NormalMatrix * VertexTangent;
+  }
+
   PointSize = 1.f;
   Position = lovrmain();
 

#define PI_2 (.5f * PI)

// Helpers
#ifndef GL_COMPUTE_SHADER

// Helper for sampling textures using the default sampler set using Pass:setSampler
vec4 getPixel(texture2D t, vec2 uv) { return texture(sampler2D(t, Sampler), uv); }
vec4 getPixel(texture3D t, vec3 uvw) { return texture(sampler3D(t, Sampler), uvw); }
vec4 getPixel(textureCube t, vec3 dir) { return texture(samplerCube(t, Sampler), dir); }
vec4 getPixel(texture2DArray t, vec3 uvw) { return texture(sampler2DArray(t, Sampler), uvw); }

// Surface contains all light-independent data needed for shading.  It can be calculated once per
// pixel and reused for multiple lights.  It stores information from the vertex shader and material
// inputs.  The Surface can be initialized using initSurface, and is passed into the other lighting

layout(location = 11) in vec3 Normal;
layout(location = 12) in vec4 Color;
layout(location = 13) in vec2 UV;
layout(location = 14) in vec3 Tangent;
#endif

// Macros
