Better shadow calculation