#version 460 core layout(location = 0) in vec3 inFragPos; layout(location = 1) in vec3 inNormal; layout(location = 0) out vec4 outColor; struct Light { vec4 position; vec3 color; }; layout(binding = 0) uniform Lights { Light lights[32]; }; void main() { vec3 diffuse = vec3(0); for(int i = 0; i < 32; i++) { const vec3 norm = normalize(inNormal); const vec3 lightDir = normalize(lights[i].position.xyz - inFragPos); const float diff = max(dot(norm, lightDir), 0.0); diffuse += vec3(diff) * lights[i].color; } outColor = vec4(vec3(0.1) + diffuse, 1.0); }