 struct MaterialInfo
 {
     float perceptualRoughness;      // roughness value, as authored by the model creator (input to shader)
-    vec3 f0;                        // full reflectance color (normal incidence angle)
+    vec3 f0;                        // full reflectance color (n incidence angle)
 
     float alphaRoughness;           // roughness mapped to a more linear change in the roughness (proposed by [2])
     vec3 albedoColor;

    return;
#endif

    vec3 view = normalize(u_Camera - v_Position);
    NormalInfo normalInfo = getNormalInfo(view);
    vec3 normal = normalInfo.n;
    vec3 tangent = normalInfo.t;
    vec3 bitangent = normalInfo.b;
    mat3 TBN = normalInfo.TBN;

    float TdotV = dot(tangent, view);
    float BdotV = dot(bitangent, view);

    MaterialInfo materialInfo;
    materialInfo.baseColor = baseColor.rgb;


#ifdef MATERIAL_IOR
    float ior = u_IOR;
#else
    // The default index of refraction of 1.5 yields a dielectric normal incidence reflectance of 0.04.
    float ior = 1.5;
#endif


    // Anything less than 2% is physically impossible and is instead considered to be shadowing. Compare to "Real-Time-Rendering" 4th editon on page 325.
    materialInfo.f90 = vec3(clamp(reflectance * 50.0, 0.0, 1.0));

    materialInfo.n = n;

#ifdef MATERIAL_THIN_FILM
    materialInfo.f0 = getThinFilmF0(materialInfo.f0, materialInfo.f90, clampedDot(n, v),
        materialInfo.thinFilmFactor, materialInfo.thinFilmThickness);
#endif

