     vec3 irradiance = textureLod(environment.texture, cn, 20.0).rgb;
     vec3 diffuse_environment = irradiance * albedo.rgb;
 
-    vec3 ambient = (kD_env * diffuse_environment + specular_environment);
-
-    color = vec4(Lo.rgb + diffuse_static.rgb, material.opacity);
+    vec3 ambient = (kD_env * diffuse_environment + specular_environment) * ambient_occlusion;
+
+    color = vec4(Lo.rgb + diffuse_static.rgb + ambient, material.opacity);
     color.a = material.opacity + tex_color.a;
 
     //Fog

    vec3 radiance = light.color * attenuation;

    vec3 F0 = vec3(0.04);
    F0 = mix(F0, material.albedo, material.metallic);

    vec3 N = normalize(normal);
    vec3 V = normalize(camera.position - fragment.position);


    vec3 kS = F;
    vec3 kD = vec3(1.0) - kS;
    kD *= 1.0 - metallic;

    float NdotL = max(dot(N, L), 0.0);

