#version 330 core #extension GL_ARB_shading_language_420pack : enable uniform mat4 projection_matrix; uniform mat4 view_matrix; uniform mat4 model_matrix; const uint lights = 2u; const vec3 lightPos[lights] = {vec3(2.0, -2.0, 10.0), vec3(2.0, 2.0, 10.0)}; const vec3 lightColor[lights] = {vec3(1.0, 0.9, 0.8), vec3(0.0, 1.0, 0.0)}; const float lightIntensity[lights] = {75.0, 25.0}; layout(location = 0) in vec3 vertex; layout(location = 1) in vec2 vertexTC; layout(location = 2) in vec3 vertexNorm; out vec2 fragTC; out vec3 lightColors[lights]; out vec3 lightVecs[lights]; void main(void) { vec4 vertex_Pos = model_matrix * vec4(vertex, 1.0); gl_Position = projection_matrix * view_matrix * vertex_Pos; fragTC = vertexTC; vec3 vertexNorm_trans = (model_matrix*vec4(vertexNorm, 0.0)).xyz; for (uint i = 0u;i < lights;++i) { vec3 lightVec = lightPos[i]-vertex_Pos.xyz; lightVecs[i] = -lightVec; vec3 lightNorm = normalize(lightVec); float lightDist = length(lightVec); lightColors[i] = lightColor[i]*clamp(dot(vertexNorm_trans, lightNorm), 0.0, 1.0)* clamp(lightIntensity[i]/(lightDist*lightDist), 0.0, 1.0); } }