3D Game Engine Design. A Practical Approach to Real-Time Computer Graphics