It's also the speed of switching images in and out of memory. The more efficiently you manage your images and rendering loops, the more efficient your program. As soon as you get to 3d you hit a new dimension (2^2 versus 2^3, remember; a potentially huge difference) and with soft shadows and shaders things really get stressed.