 
   for (uint lightIndex = 0u; lightIndex < uniLightCount; ++lightIndex) {
     vec3 fullLightDir;
+    float attenuation = 1.0;
 
     if (uniLights[lightIndex].position.w != 0.0) {
       fullLightDir = uniLights[lightIndex].position.xyz - fragMeshInfo.vertPosition;
+
+      float distance = length(fullLightDir);
+      attenuation /= (distance * distance);
     } else {
       fullLightDir = -uniLights[lightIndex].direction;
     }
-
-    float distance    = length(fullLightDir);
-    float attenuation = 1.0 / (distance * distance);
 
     vec3 lightDir = normalize(fullLightDir);
     vec3 halfDir  = normalize(viewDir + lightDir);

  float divider = (sqrHalfVecAngle * (frthRough - 1.0) + 1.0);
  divider       = PI * divider * divider;

  return sqrRough / divider;
}

// Fresnel: Shlick

  return baseReflectivity + (1.0 - baseReflectivity) * pow(1.0 - cosTheta, 5.0);
}

// Shlick-Beckmann for Geometry part
float computeShlickGGX(float viewAngle, float roughness) {
  float incrRough   = (roughness + 1.0);
  float roughFactor = (incrRough * incrRough) / 8.0;
