程序化生成地图一般都是不用uv的,而是直接在着色器里取当前点的世界坐标来对纹理进行采样。
3d地图里经常用3向采样的方式,也就是从y轴 x轴、z轴三个方向看过去,用xz yz xy三个坐标进行纹理采样,然后根据当前点的法线三个分量进行混合。
例如极端情况下,一个完全水平的平面,法线y分量为1,其余两分量为0,采样获得的值完全等同于俯视角的图案。

https://cloud.tencent.com/developer/article/1659752
可以看下这个文章,不过它这篇大体是机翻,原文是catlikecoding系列里的一篇:
https://catlikecoding.com/unity/tutorials/advanced-rendering/triplanar-mapping/
另一种方式是不用纹理贴图,给地形定义一个或者几个单色。一般可以用高度来做过渡。然后用一个噪声图来做法线计算。
如果你要考虑不受高度影响的地图过渡,比如一块平地上,一部分是草地,一部分是荒漠,一般可以用一个噪声图来做处理,自己定义一个分界阈值,给一个过渡区间。

