我非常感谢您对计算生成的地形、LOD 等的想法以及“正确的方法”是什么。
这是我目前的计划:
我在程序上生成一个大的有限世界,在任何时候大部分或全部地图都是可见的。纹理/着色在 vert/frag 着色器中完成。
我大约 50% 通过实现:使用噪声函数在 CPU 上生成最近的块(例如玩家周围的 5x5 高度图)。在中距离,使用计算着色器的实例来生成高度图块的顶点并将缓冲区传递给 vert/frag 着色器。在远处,生成 1 个巨大的组合块,其顶点密度要小得多,并传递给 vert/frag。
我的问题是:这是(或 A)处理 LOD/Chunks/Distant 地形的正确方法吗?
我是否应该在 GPU 上生成所有内容并将网格传回 CPU 进行碰撞,而不是使用 CPU 处理近块?
我应该使用什么函数来生成和绘制地图?我目前在 OnRenderObject() 中使用 DrawProceduralNow。我刚刚开始尝试在 Update() 中使用 MaterialPropertyBlocks 和 DrawProcedural。
一个想法是让半自治的块根据玩家的位置改变它们的设置。或基于玩家周围空间的相对块,因此中间距离块将始终是中间 LOD(顶点之间的距离),但高度图会随着玩家走向它而更新。
我试图避免花太多时间进入错误的兔子洞。如果我能先建立正确的概念,那将节省我很多时间。
编辑:我也在考虑预先生成高度贴图纹理以节省程序计算时间。但这是一个有争议的问题,我的问题是在我已经有了顶点之后该怎么做。