The checkerboard is pretty blurry in the distance since my filter method is different than what Cem's code uses for the procedural textures, I'm still playing with this a bit. For the image textures I've implemented mipmaps (only for power of 2 textures) and anisotropic filtering. The filtering uses information about the texture sampling rates computed by tracing ray differentials to determine how many texels need to be sampled along each axis in texture space.
Render times were measured using std::chrono::high_resolution_clock
and only include time to render,
ie. time to load the scene and write the images to disk is ignored. The images were rendered with one sample per
pixel.