#version 330 core const int numLights=1; in vec3 fragPos; in vec3 norm; in vec2 texCoords; out vec4 FragColor; //0-POINT,1-DIRECTIONAL,2-SPOT struct Light{ int type; vec3 pos,color,direction; float innerAngle,outerAngle; float a,b,c; }; uniform Light light[numLights]; uniform sampler2D tex; uniform bool lightingEnabled; uniform vec3 camPos; void main(){ vec4 finalColor=texture(tex,texCoords); if(lightingEnabled){ vec3 diffuseColor=vec3(0),specularColor; for(int i=0;ilight[i].outerAngle){ coef=0; } } float specularStrength=.5; reflectVec=reflect(lightDir,norm); float spec=pow(max(dot(viewDir,reflectVec),0),32); specularColor+=vec3(1)*spec*specularStrength; factor=max(dot(lightDir,norm),0.); diffuseColor+=light[i].color*factor*attenuation*coef; } finalColor*=vec4(diffuseColor+specularColor,1); } FragColor=finalColor; }