This is a first concept I came up with. Depending on the fact if you need square tiles or not this approach would get the mesh closer to the camera (which has exact squares again, smoothed and then flattened (only the top one) for buildings etc.)
The one in the back is a smoothed version without any post-steps.
Both can be freely textured on a per tile basis (with the one in the back being slightly uneven). I used only every second tile as you get some nasty walls if you set a different height on two tiles next to each other (IF you want this you either have to have lots of degenerated triangles (which are probably not removed as they are only 0 in size but they don't share the same vertex) OR you must come up with another clever step in your mesh generation code)
I have started to make a small demo using my approch (Only use every second tile (I'll possibly reduce size of the steps between so a grid could be used if necessary - fine for buildings etc. and still visually appealing), catmull-clark to smooth and subdivide it, flatten out necessary fields).
I already made transition maps for some materials so they can be mixed on the fly. I have also seen a clever approach in a qualcomm paper recently which said that most modern chips (possibly their own
but I'd just like to try it on the SGX) can use 3D textures / texture-stack instead of atlases. I'll load up to 4 different materials (64x64 pixel textures) at once into memory, then a single (possibly 2) texture with 4 channels for the transitionmaps.
A second shader will be used in a second step which would render transparent water (not sure about refraction yet, but possibly reflection to some degree).
Due to the nature of catmull-clark and the shape of the grid any tile can be changed on its own so a small change in the terrain doesn't affect other tiles (unless you remove the tile between the changeable tiles).
Thats it by me for now, if you have any questions you can feel free to keep asking in this thread.
(Don't expect my demo too soon as its going to be in my Pandora SDK which has been delayed numerous times before
)