曲面细分和置换/凹凸贴图有什么区别?

Nig*_*Kn8 2 opengl gpu directx

正如可以在此处阅读的那样,LINK置换贴图在某些情况下是凹凸贴图的“更好替代品”,曲面细分基于置换贴图。那么这三个之间的主要区别是什么?曲面细分是否以某种方式需要更少的 GPU 核心或内存使用量,是否有更好更流畅的模型?其中哪些实际上会影响对象几何?

The*_*heo 8

一般而言,细分只是将给定的几何图形细分为多个块(通常是三角形)

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

镶嵌着色单元将任意网格(如四边形、三角形、线等)作为输入,并可以将其动态细分为多个图元。例如,基于网格的四边形离相机有多远,如果观察者可以看到它,它可以说完全丢弃四边形,只需将其处理为 2 个三角形,甚至在 8192三角形。

在凹凸贴图中,您将渲染一个四边形并提供具有更多信息的纹理,您仍然会将其渲染为单个四边形,但使其看起来更详细。例如,通过从附加纹理计算“真实”对象的照明并将其应用于四边形。您参考文章中的图形很好地证明了这一点:

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

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

另一方面,置换贴图真正根据纹理变换网格顶点,而不仅仅是像变换后那样工作,并使用此信息进行进一步的计算,例如照明。这涉及到渲染更多基元(顶点)的方式的高成本。拿起前面的陈述,要以全分辨率查看您的网格,您必须渲染 8192 个三角形,而不仅仅是网格中所有四边形的四边形,因此您需要以最高分辨率渲染所有内容并进行渲染慢 4000 倍。

此时,镶嵌着色阶段进入游戏。您可以动态地说明网格的哪些部分应进一步细分,例如基于当前视点,然后使用置换贴图使对象看起来更逼真。因此,由于置换贴图,网格的部分将被高度解析并具有很多细节,而其他部分将以非常低的分辨率渲染,因此速度非常快。所以这就是故事。