nally, I would like to talk about procedural textures since they are
also a way to deal with the problem of texture magnification. Because
they provide a functional representation to the texture, they can be
magnified arbitrarily and they will theoretically show infinite detail.
However, it is often difficult to specify arbitrary textures in terms of functions and it certainly isn't intuitive for the artists to work in this manner.
One great example of a procedural texture used in this way is the final "ATI" splash screen at the end of the ATI "DoubleCross" demo featuring Ruby. The developers wanted the final ATI texture which you zoom into to be sharp all the way and did not want to waste a lot of memory doing so. So they used a fragment program and worked out the equations necessary to figure out if the pixel is in the red or white regions and shaded them appropriately. This yielded a texture that was sharp even under extreme magnification.