 
     vec3 L = normalize(light.position - fragment.position);
     vec3 H = normalize(V + L);
-
-
 
     // Cook-Torrance BRDF
     float NDF = distribution_GGX(N, H, material.roughness);


    vec3 Lo = (kD * material.albedo / PI + specular) * radiance * NdotL;

    diffuse.rgb = Lo;

    vec4 diffuse_static = static_light * diffuse_color;
    vec3 environment = diffuse_environment.rgb;

    diffuse.rgb *= spotEffect;

    vec3 shadow_map_uv = fragment.proj_shadow.xyz / fragment.proj_shadow.w;
    float current_depth = shadow_map_uv.z;
    float shadow = sample_variance_shadow_map(light.shadow_map, shadow_map_uv.xy, current_depth);

    diffuse.rgb *= shadow;

    color = vec4(diffuse.rgb + diffuse_static.rgb + environment.rgb, material.opacity);
    color.a = material.opacity + tex_color.a;

    //Fog

    float attenuation = 1.0 / (light_fragment_distance * light_fragment_distance);
    vec3 radiance = light.color * attenuation;

    vec3 corrected_normal = parallax_correct(environment.extent, environment.position,normal);

    vec2 t_size = textureSize(environment.texture, 0);
