3d Game Engine Design a Practical Approach To Real-Time Computer Graphics by David H Eberly