I happened to catch up with the goings on at WWDC07 just yesterday (yeah, I know, I’m probably way late) and was pretty interested by what I saw. I originally headed over there just because I wanted to watch the presentation by John Carmack, just to see what he’s up to. Once again he was talking about Megatextures, which is Carmack’s word for what everyone else used to call Clipmaps, as presented by Tanner et al of SGI in 1998. It’s basically about cropping the upper levels of a mipmap stack to a fixed window and performing manual mipmapping yourself, paging in new sections of the upper mips as needed using a sliding window, thus allowing you to use far larger textures than you could ever fit in GPU memory. It pretty much lends itself perfectly to terrain rendering, provided you have the pixel shader instructions to spare to pull in a handful of separate textures and perform upper mip calculations manually. He seemed to imply that it was being used for everything rather than just the terrain, but I wasn’t entirely convinced of that - for a start managing the sliding window progressive update in a packed texture atlas seems pretty gnarly. Kudos to him if he has solved that but I’m not sure it’s solvable in an arbitrarily complex world.
Whilst it’s a cool technique, I can’t help thinking it doesn’t seem to justify itself. Ok, in theory an artist can now paint every single inch of the terrain covered by the megatexture by hand, doing precisely anything they want. But most of the time, will they really want to do that? Or have anywhere near the time to do that? I mean, given the size of environments these days, surely no artist is going to want to hand-paint every inch. It took Michaelangelo four years just to do one poxy little chapel for goodness sakes. 😉 In practice, aren’t they mostly going to use repeating brushes / fills an awful lot of the time, with detailing just where they want it? Which will just be baked into the megatexture explicitly - it may be 20 gig of texture, but how much of it is actually unique? The term ‘using a sledgehammer to crack a nut’ springs to mind.
I dunno, I can see the theory of the idea, and getting it to work well in practice is a great tecnical achievement, and I guess it does make artist interface very simple, but in practical terms I wonder whether it’s really worth all the tech it needs to make it work given that a large proportion of what’s stored is going to be repetition.