improved shadow volume calculation