     return clamp((-b + sqrt(D)) / (2.0 * a), 0.0, 1.0);
 }
 
-AngularInfo getAngularInfo(vec3 lightDirection, vec3 n, vec3 v)
-{
-    vec3 l = normalize(lightDirection);             // Vector from surface point to light
-    vec3 h = normalize(l+v);                          // Half vector between both l and v
+AngularInfo getAngularInfo(vec3 pointToLight, vec3 normal, vec3 pointToView)
+{
+    // Standard one-letter names
+    vec3 n = normalize(normal);           // Outward direction of surface point
+    vec3 v = normalize(pointToView);      // Direction from surface point to view
+    vec3 l = normalize(pointToLight);     // Direction from surface point to light
+    vec3 h = normalize(l + v);            // Direction of the vector between l and v
 
     float NdotL = clamp(dot(n, l), 0.001, 1.0);
     float NdotV = clamp(abs(dot(n, v)), 0.001, 1.0);

    );
}

vec3 applyGeneralLight(float intensity, vec3 color, vec3 direction, MaterialInfo materialInfo, vec3 n, vec3 v)
{
    AngularInfo angularInfo = getAngularInfo(direction, n, v);

    // Calculate the shading terms for the microfacet specular shading model
    vec3 F = specularReflection(materialInfo, angularInfo);

    // LIGHTING

    vec3 color = vec3(0.0, 0.0, 0.0);
    vec3 normal = getNormal();
    vec3 pointToView = normalize(u_Camera - v_Position);

    for (int i = 0; i < LIGHT_COUNT; ++i)
    {
        Light light = u_Lights[i];
        if (light.type == LightType_Directional)
        {
            color += applyDirectionalLight(light, materialInfo, normal, pointToView);
        }
        else if (light.type == LightType_Point)
        {
            color += applyPointLight(light, materialInfo, normal, pointToView);
        }
        else if (light.type == LightType_Spot)
        {
            color += applySpotLight(light, materialInfo, normal, pointToView);
        }
    }

    // Calculate lighting contribution from image based lighting source (IBL)
#ifdef USE_IBL
    vec3 pointToLight = -normal;
    AngularInfo angularInfo = getAngularInfo(pointToLight, normal, pointToView);
    color += getIBLContribution(materialInfo, angularInfo, normal, pointToView);
#endif

    // Apply optional PBR terms for additional (optional) shading
