         info.clearcoatNormal = getNormal(true); // get geometry normal
     #endif
 
+    info.clearcoatRoughness = clamp(info.clearcoatRoughness, 0.0, 1.0);
+
     return info;
 }
 

}

// https://github.com/google/filament/blob/master/shaders/src/brdf.fs#L136
float NeubeltVisibility(float NdotL, float NdotV)
{
    return clamp(1.0 / (4.0 * (NdotL + NdotV - NdotL * NdotV)),0.0,1.0);
}

vec3 sheenLayer(vec3 sheenColor, float sheenIntensity, float sheenRoughness, float NdotL, float NdotV, float NdotH, vec3 diffuse_term)
{
    float sheenDistribution = CharlieDistribution(sheenRoughness, NdotH);
    float sheenVisibility = NeubeltVisibility(NdotL, NdotV);
    return sheenColor * sheenIntensity * sheenDistribution * sheenVisibility + (1.0 - sheenIntensity * sheenDistribution * sheenVisibility) * diffuse_term;
}



    return diffuseLight * diffuseColor;
}

// struct LightingOutput
// {
//     vec3 f_specular;
//     vec3 f_diffuse;
//     vec3 f_clearCoat;
//     AngularInfo incidence;
//     // vec3 normal
// };

vec3 getPointShade(vec3 pointToLight, MaterialInfo materialInfo, vec3 view)
{
