As raster data consumes a lot of memory it is not always optimal to store the data that only represents randomly generated textures. Instead these textures could be generated on demand which exposes the concept of procedural generation.
Generation of such textures is rather slow but turns out that it could be optimized by the means of distributed computing.
Get the full PDF here. Please note that the SVN address indicated in the PDF is wrong (see the correct address below).
Grab the C++ source code from SVN: svn://ats.cs.ut.ee/u/amc/fun/Perlin