Terrain Implementation questions

I've figurated out that making a Terrain with premade mini blocks made toguether would not result in anything but a couple of heightmaps that spend some extra memory (of course it would at least look better than a heightmap does…) so i tought of implementing something like this:



In my game you will be able to terra formate (blow mountains and make caves), so i will need a mutable Heightmap to work with, plus, since i can make caves, i can't simply use a single heightmap, and this will make couple of problems…



For instance: it's Winter, so there is snow, then i need a Snow heightmap with a snow texture, if you dig in the snow you might find grass, so i will need another layer, the grass layer, plus if you dig the grass you find dirt, then i will need 3 layers, a Snow layer, a Grass Layer and the Dirt Layer, in the end they are 3 heightmaps with diferent textures. Is this a better approach than make a mutable texture?



Q1: Since i will need to handle the height of the snow in X position, so i would need to dig more or less than X ammount of snow! (that will not disapear, it would be either carried by the character or dropped at his side, what will make a snow mound, simply adding more height to the snow heightmap there!



Q2: Won't making 3 heightmaps quite memory intensive? would be faster or slower than making a mutable texture? I intend to make that if you dig the grass, you won't find more grass below it, you find dirt, and the dirt you deposit nearby won't become more grass, it become dirt, so would be better to have two Heightmaps one below the other? (when you dig the grass, the Grass heightmap gets lower at that point making a little hole, and the dirt Heightmap increases wherever you deposit the dirt, making a dirt mound. This would fix the texture change problem, but what if you don't intend to make many holes? you would waste memory as nothing would dig the grass and then the second heightmap would never apear!)



Another approach i tought would be to have some "DirtMound" objects that are a very small heightmap, but how to do a hole?



Q3: a TerrainBlock with a 1024*1024 heightmap will use 4Mbytes? then the 3 layers would use 12Mb? (in the runtime while it is rendering)



Q4: A TerrainPage needs 4 TerrainBlocks or 4 TerrainPages right? so it would make a Tree with TerrainBlocks as leafs? can i add trees and such to a TerrainPage for Pathfind and Rendering?



Q5: Two TerrainBlocks could make a good cave? If the ends meet of course.



for instance:


0 0 0 0 0 0 0 0
0 0-1-2-2-1 0 0 Ground
0 0-1-2-2-1 0 0
0 0 0-1-1 0 0 0
      ^ ^entrance
and

0 0 0 0 0 0 0 0
0 0 1 2 2 1 0 0 "Roof"
0 0 1 2 2 1 0 0
0 0 0 1 1 0 0 0
      ^ ^entrance