Graphics Programming Principles and Algorithms