Opengl地形和曲面细分着色器

时间:2015-01-06 21:27:32

标签: opengl shader terrain heightmap tessellation

两个问题:

  1. 现代游戏如何设置地形顶点?他们是否将高度贴图图像附加到纹理然后用它来设置每个顶点位置,或者他们只是使用3D软件(如Blender)来创建包含这些顶点的文件然后将其读取到VBO?如果我的掌握不正确,请纠正我。

  2. 曲面细分着色器对此过程有多重要?他们只是保存了性能,还是改变了观众的场景?

2 个答案:

答案 0 :(得分:0)

我见过的两个最常见的是高度图,其中RGB值用于表面法线,alpha值用于高度,使用Perlin Noise等方法生成程序性地形,使用随机函数和对周围的顶点进行采样以使其均匀。

Tesselation着色器主要用于通过简化远程网格来减少工作量,在这些网格中您不会注意到额外的细节。他们确实改变了观众的场景,但是却试图不被人注意。

答案 1 :(得分:0)

通常,高度是在顶点着色器中以程序方式生成的。 通过程序性地在计算机图形学中,它通过一些数学算法来表示。 Perlin噪声是这种程序生成的方法之一。有几种策略保持小尺寸的高度图并使用程序方法产生不同的高度这是通过高度图是纹理并使用带宽来完成的。

曲面细分着色器用于自适应曲面细分。您可以将其视为某种程度的细节机制。地形的平滑度取决于使用多少个三角形来表示地形上的补丁。根据相机与像素的距离,开发人员可以动态决定什么应该是曲面细分级别,并为靠近用户的补丁生成更多三角形。这是改善地形细节的方法。这里的一切都发生在GPU上,因此非常有效。

在曲面细分着色器之前,有一些像ROAR这样的算法用于在CPU上进行自适应曲面细分。

请关注http://vterrain.org/此项目。您将看到此处实现的所有地形技术状态。

相关问题