 #endif
 
 #ifdef MATERIAL_TRANSMISSION
-    vec3 diffuse = mix(f_diffuse, f_transmission, materialInfo.transmissionFactor);
+    vec3 diffuse = mix(f_diffuse, f_transmission, materialInfo.transmissionFactor * (1.0 - materialInfo.metallic));
 #else
     vec3 diffuse = f_diffuse;
 #endif


#ifdef MATERIAL_IRIDESCENCE
    vec3 iridescenceFresnel = materialInfo.f0;

    if (materialInfo.iridescenceThickness == 0.0) {
        materialInfo.iridescenceFactor = 0.0;

            // Calculation of analytical light
            // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#acknowledgments AppendixB
            vec3 intensity = getLighIntensity(light, pointToLight);
#ifdef MATERIAL_IRIDESCENCE
            f_diffuse += intensity * NdotL *  BRDF_lambertian(mix(materialInfo.f0, iridescenceFresnelMax, materialInfo.iridescenceFactor), materialInfo.f90, materialInfo.c_diff, materialInfo.specularWeight, VdotH);
            f_specular += intensity * NdotL * BRDF_specularGGXIridescence(materialInfo.f0, materialInfo.f90, iridescenceFresnel, materialInfo.alphaRoughness, materialInfo.iridescenceFactor, materialInfo.specularWeight, VdotH, NdotL, NdotV, NdotH);
#else
            f_diffuse += intensity * NdotL *  BRDF_lambertian(materialInfo.f0, materialInfo.f90, materialInfo.c_diff, materialInfo.specularWeight, VdotH);
            f_specular += intensity * NdotL * BRDF_specularGGX(materialInfo.f0, materialInfo.f90, materialInfo.alphaRoughness, materialInfo.specularWeight, VdotH, NdotL, NdotV, NdotH);
#endif

