https://www.cs.drexel.edu/~david/Classes/CS430/HWs/Assignment5.html
Implementing z-buffering with near and far plane clipping