曲面细分和位移/凹凸贴图之间有什么区别?

曲面细分和位移/凹凸贴图之间有什么区别?

您可以在此处阅读关联在某些情况下,位移贴图是凹凸贴图的“更好替代品”,而曲面细分则基于位移贴图。那么这三者之间的主要区别是什么?曲面细分是否需要更少的 GPU 核心或内存使用量,是否具有更好更平滑的模型?它们中的哪一个实际上影响了对象几何形状?

答案1

一般来说,镶嵌就是将给定的几何体细分为多个块(通常是三角形)

您所提到的是 Direct X11 和 OpenGL 4 中引入的曲面细分着色阶段。

曲面细分着色单元以任意网格(如四边形、三角形、线等)作为输入,并可对其进行细分动态地分解成多个图元。例如,根据网格四边形距离相机的距离以及观察者是否能够看到它,可以说完全丢弃该四边形,只将其作为 2 个三角形甚至 8192 个三角形处理。

在凹凸贴图中,您可以渲染一个四边形,并为其指定一个包含更多信息的纹理,您仍会将其渲染为单个四边形,但使其看起来更加详细。例如,通过从附加纹理计算“真实”对象的光照并将其应用于四边形。您引用的文章中的图形很好地说明了这一点:

http://www.nvidia.com/docs/IO/91797/model_comparision.jpg

您会看到,凹凸贴图对象仍然是一个球体,尽管由于应用了正确的阴影,它看起来好像有凹凸。

另一方面,位移贴图实际上会根据纹理变换网格顶点,而不仅仅是像变换那样进行操作,并利用这些信息进行照明等进一步计算。这会导致渲染更多图元(顶点)的成本高昂。继续前面的说法,要以全分辨率查看网格,您必须渲染 8192 个三角形,而不仅仅是网格中所有四边形的四边形,因此您需要以最高分辨率渲染所有内容,并使渲染速度慢 4000 倍。

此时,细分着色阶段开始。您可以动态指定网格的哪些部分需要进一步细分,例如基于当前视点,然后使用位移图使对象看起来更逼真。因此,由于位移图,网格的某些部分将具有高分辨率并具有大量细节,而其他部分将以非常低的分辨率渲染,因此速度非常快。这就是故事的全部内容。

相关内容