#version 440 in vec3 f_color; out vec4 FragColors; uniform vec3 Kd; uniform vec3 Ka; uniform vec3 Ks; uniform float Shininess; struct LightInfo { vec4 Position; vec3 Intensity; float SpotCutoff; float SpotInnerCutoff; float SpotExponent; vec3 SpotDirection; }; uniform LightInfo Light[64]; uniform int LightCount; in vec3 fNormal; in vec3 pos; in vec2 texCoord; uniform sampler2D tex1; void main() { vec3 finalColor; vec3 diffuse_sum; vec3 specular_sum; vec3 ambient; float D; float attenuation; D = distance(Light[0].Position.xyz, pos); attenuation = 1 / (1 + 0.01 * D + 0.001 * D * D); ambient = Ka * Light[0].Intensity * attenuation; for (int i=0; i