There are a couple of ways to do that.
- you can use noise(from mask or generated or even one channel from ground texture) to blend between different ground textures.
- you can use noise(from mask or generated or even one channel from ground texture) that you overlay over the ground texture using less tiled UVs. This will create color variation in the distance.
- you can blend between one ground texture with different tiling depending on player location. Around the player ground will be tiled more to keep detail while further away less tiling will show more natural variation.
- you can use one unique ground texture for the whole level combined with detail map. 2048 map for 2km will give you 1pixel per meter of unique color variation.
- you can use bigger ground texture and tile it less.
- it also helps if your ground is not perfectly flat but has at least some height variation.
Unfortunately I don’t have time to make examples
You should do whatever matches our task and is not over complicating your landscape material.
For realistic foliage I would go with high poly modeling of foliage. Then bake that into textures with alpha. Then the most important is to get the subsurface effect on greenery right. But it all depends of what kind of foliage you’re talking about. The question is too general.