In this chapter, we covered a lot of concepts, including fast texture mapping, diffuse lighting, and lighting using a shade map. Along the way, we also talked about heavy optimization techniques, efficient storage of shaded textures, and caching surfaces using soft references. We also glanced over some additional ideas on how to make the renderers created even better by adding things such as advanced lighting, MIP mapping, and bilinear interpolation. In the next chapter we focus on animating 3D game objects, and we finally extend the renderer to be able to work with objects other than convex polyhedrons by using a z-buffer.