【问题标题】:Opengl terrain and tessellation shadersOpengl 地形和曲面细分着色器
【发布时间】:2015-01-06 21:27:32
【问题描述】:

两个问题:

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

  2. 曲面细分着色器对这个过程有多重要?它们只是节省了性能还是改变了观看者的场景?

【问题讨论】:

  • 大多数开放世界游戏使用高度图作为基础地形。 (例如战场)
  • 所以他们使用 3D 软件导出高度图图像,然后在应用程序中读取它并将其绑定到 2D 纹理,然后在顶点着色器中使用 texture() 来确定每个顶点位置。我说的对吗?
  • 我不知道他们如何渲染高度图,但是在顶点着色器中访问它是一种简单的实现方式。
  • 你怎么知道战地使用高度图?还有推荐的渲染高度图的方法是什么?
  • 镶嵌着色器将允许更轻松、动态的细节层次。

标签: opengl shader terrain heightmap tessellation


【解决方案1】:

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

曲面细分着色器主要用于通过简化您不会注意到额外细节的远处网格来减少工作量。它们确实改变了观众的场景,但以一种试图不引起注意的方式。

【讨论】:

    【解决方案2】:

    通常高度是在着色器中为顶点生成的。 在计算机图形学中,程序上的意思是某种数学算法。 Perlin 噪声是这种程序生成的方法之一。有几种策略可以保持小尺寸的高度图并使用程序方法生成不同的高度,这是因为高度图是纹理并且使用带宽。

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

    在使用曲面细分着色器之前,可以使用诸如 ROAR 之类的算法来在 CPU 上进行自适应曲面细分。

    请关注http://vterrain.org/这个项目。您将在这里看到地形技术的所有状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多