   hardware geo-clipmapping, height testing?
  If the main benefit of the famous geo-clipmapping method of terrain rendering is moving most of the calculation onto the GPU, then how do you do height testing efficiently on the CPU?If I want to render grass, I need to sample the terrain at various points in order to know where to place my geometry.  If I want to do physics, I need to sample the terrain.Do I just do this with glReadPixels on the applicable clipmap?  Is there a slicker way, some kind of render-to-buffer trick or something? (possibly geometry shader?)   
  You can keep a separate full-resolution hight-map in system RAM for use by the CPU (completely separated from the GPU clip maps).Reading data back from video-ram is usually a bad idea if you can avoid it - better to duplicate the data in system ram if possible.   ;  Given that buildings / props need to be modeled to account for the fact that they can be placed on slopes (done by having polygons that extend under the ground) you don't really need a pixel-accurate collision solution for terrain.Any CPU side solution for collision will do, which is best kept separate from GPU. If you are concerned about memory for storing high-detail heighmaps, look up wavelet compression. Also, consider how big all of your terrain is and do you really need accurate collision for objects kilometres in the distance that you can barely see.   ;  The way we handled this was through our out-of-core caching system, which always kept an indexed list of all recently used and about to be used blocks of data, keyed by detail level and region.We just looked for the block of data with the highest detail of the region in question so we would never need to hit the disk (though this would request to insert the requested detail in the cache).  This worked sufficient for 300+ agents and a few cameras flying around in some tests we did on a Athlon 4000+ with 2GB RAM.   