1

我需要在 CPU 上复制 GPU 镶嵌(即在 CPU 端获得相同的 uvw 坐标,因为我将从镶嵌器在 GPU 上获得)。这样做的原因相当复杂,但简单地说,我有一个算法可以存储每个细分点的数据,并且首先要计算它,我需要 CPU 上的 uvw 坐标。

我已经在谷歌上搜索了很多关于镶嵌图案的确切细节,但我只发现非常模糊的文字一般性地谈论它,最好的是这个:http: //fgiesen.wordpress.com/2011/09/ 06/a-trip-through-the-graphics-pipeline-2011-part-12/

缺少这方面的文本的原因是它依赖于供应商,还是我根本没有找到未找到正确的页面?

我对 OpenGL 和 DX11 实现的文本感兴趣,如果它们不同的话。

4

1 回答 1

2

我也对tessellation非常感兴趣,特别是不久前的细分曲面。这是一个非常复杂的话题。它是从 70 年代初开始研究的,目前仍在研究中。

目前尚不清楚您是要重新实现整个着色器曲面细分管道(我认为单个程序员需要数年时间)还是只是一个细分算法(甚至不是细分的算法)。

无论如何,有一些关于细分的链接:

理论

通常,我们使用Catmull–Clark 细分曲面算法在曲面细分着色器中实现细分曲面。您可以在 Google 中找到原作者的一些论文。主要有一个:

在任意拓扑网格上递归生成的 B 样条曲面”(1978 年,PDF)

更接近代码

查看来自 Microsoft Research 的那些很酷的家伙的论文:

更接近代码。

你可以在网上找到一些图书馆。前一阵子搜索的时候,有十几个库,在 CPU 上实现了细分。我没怎么看它们,因为我对 GPU 的实现很感兴趣。搜索的关键字是“细分库”=)

最有趣的是皮克斯的 OpenSubdiv。看看他们的代码。

另请查看“NVIDIA Instanced Tessellation”示例(DirectXOpenGL)。他们在顶点和几何着色器中实现了曲面细分管道。

希望能帮助到你!

于 2013-10-15T11:31:57.937 回答