even though shadow algorithms have been around for almost as long as computer graphics itself, robust and efficient hard-shadow generation is still not a solved problem. while geometry-based algorithms produce pixel-perfect results, they suffer from robustness problems with different viewer-light