Title: [OpenGL Shading] lighting1.fsh Author: dajfarrell Pastebin link: http://pastebin.com/T8EFiX52 First Edit: Saturday 9th of June 2012 07:14:56 AM CDT Last Edit: Saturday 9th of June 2012 07:14:56 AM CDT #version 330   const int MAX_POINT_LIGHTS = 8;   struct PointLight {     vec4 vLightPosition;         vec3 vDiffuse;     vec3 vAmbient;     vec3 vSpecular;         float fConstantAttenuation;     float fLinearAttenuation;     float fQuadraticAttenuation;     float fCubicAttenuation;     float fQuarticAttenuation; };   uniform vec3 u_vGlobalAmbient; uniform PointLight u_PointLights[MAX_POINT_LIGHTS];   in vec3 v_vNormal; in vec4 v_vEyeCameraPosition;   out vec4 o_vFragColor;   void main() {     vec3 vNormal = vec3(0.0, 0.0, 1.0);     vec3 vColor = u_vGlobalAmbient;         for(int i=0; i<2; ++i) {         vec3 vAux = vec3(u_PointLights[i].vLightPosition - v_vEyeCameraPosition);                 vec3 vLightDir = normalize(vAux);         float fDistance = length(vAux);                 vec3 vHalfVector = normalize(vLightDir - normalize(vec3(v_vEyeCameraPosition)));                 vec3 vInterpNormal = normalize(vNormal);                 float fNDotL = dot(vInterpNormal, vLightDir);                 if(fNDotL > 0.0) {             float fAttenuation = 1.0 / (                                         u_PointLights[i].fConstantAttenuation +                                         u_PointLights[i].fLinearAttenuation * fDistance +                                         u_PointLights[i].fQuadraticAttenuation * pow(fDistance, 2.0) +                                         u_PointLights[i].fCubicAttenuation * pow(fDistance, 3.0) +                                         u_PointLights[i].fQuarticAttenuation * pow(fDistance, 4.0));                         vColor += fAttenuation * (u_PointLights[i].vDiffuse * fNDotL + u_PointLights[i].vAmbient);                         float fNDotHV = max(0.0, dot(vInterpNormal, vHalfVector));                         vColor += fAttenuation * u_PointLights[i].vSpecular * pow(fNDotHV, 128.0);         }     }         o_vFragColor = vec4(vColor, 1.0); }