hopefully some faster shadow calculations