This is generally abstract from the game renderer, and can be useful elsewhere. It's also really big!