#version 330 core in vec3 fragmentColor; in vec3 fragNormal; in vec3 fragVertex; uniform mat4 model; uniform mat3 normal_matrix; struct point_light { uint light_ID; vec3 position; vec3 color; float intensity; }; #define MAX_LIGHTS 10 uniform point_light lights[MAX_LIGHTS]; uniform int num_lights = 0; out vec3 color; void main() { // https://www.tomdalling.com/blog/modern-opengl/06-diffuse-point-lighting vec3 normal = normalize(normal_matrix * fragNormal); vec3 fragPosition = vec3(model * vec4(fragVertex, 1)); ///// //vec3 surfaceToLight = light_position - fragPosition; vec3 surfaceToLight = lights[0].position - fragPosition; ///// float brightness = dot(normal, surfaceToLight) / (length(surfaceToLight) * length(normal)); brightness = clamp(brightness, 0, 1); color = brightness * fragmentColor; }