The bug is in the light_dir vector. For some reason the objects behind it are just wrong.