analytical-ish solution for grid visibility on the left, pathtracing at 32 samples per pixel on the right

I don't know basic linear algebra so the analytical solution is bugged and I've never been able to write an unbiased pathtracer so there are differences in the outputs, an unbugged version should be mostly identical.

The analytical solution should be equivalent to firing infinite rays while having much better scaling. It's O(N^2 * sqrt(2N^2)) where N is the side length of your grid instead of O(M * N^2 * sqrt(2N^2)) Where M is the number of rays per pixel

raytraced occlusion checks:            2002938325
analytical occlusion checks:           11812361

raytraced high resolution clock time:  5.911035111 seconds
analytical high resolution clock time: 0.027131559 seconds (~220x faster)