两个问题:
现代游戏如何设置地形顶点?他们是否将高度图图像附加到纹理,然后使用它来设置每个顶点位置,或者他们只是使用 3D 软件(如 Blender)创建包含这些顶点的文件,然后将其读取到 VBO?如果我的掌握不正确,请纠正我。
曲面细分着色器对这个过程有多重要?它们只是节省了性能,还是也改变了观众的场景?
两个问题:
现代游戏如何设置地形顶点?他们是否将高度图图像附加到纹理,然后使用它来设置每个顶点位置,或者他们只是使用 3D 软件(如 Blender)创建包含这些顶点的文件,然后将其读取到 VBO?如果我的掌握不正确,请纠正我。
曲面细分着色器对这个过程有多重要?它们只是节省了性能,还是也改变了观众的场景?
我见过的最常见的两个是高度图,其中 RGB 值用于表面法线,alpha 值用于高度,以及使用诸如 Perlin Noise 之类的方法生成程序地形,它使用随机函数并对其周围环境进行采样顶点使高度均匀。
镶嵌着色器主要用于通过简化您不会注意到额外细节的远处网格来减少工作量。他们确实改变了观众的场景,但以一种试图不被注意的方式。
通常高度是在着色器中为顶点程序生成的。在计算机图形学中,程序上的意思是某种数学算法。Perlin 噪声是这种程序生成的方法之一。有几种策略可以保持小尺寸的高度图并使用程序方法产生不同的高度,这是因为高度图是纹理并且使用带宽。
镶嵌着色器用于自适应镶嵌。您可以将其视为某种详细程度的机制。地形的平滑度取决于使用多少三角形来表示地形上的补丁。根据像素与相机的距离,开发人员可以动态决定细分级别,并为靠近用户的补丁生成更多三角形。这是改善地形细节的方法。这里的一切都发生在 GPU 上,因此非常高效。
在曲面细分着色器可访问之前,有类似 ROAR 的算法用于在 CPU 上进行自适应曲面细分。
请关注http://vterrain.org/这个项目。您将看到此处实施的所有地形技术状态。