镶嵌细分模式的良好资源

时间:2013-10-15 10:35:06

标签: opengl 3d directx tessellation

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

我已经搜索了很多关于曲面细分模式的确切细节的信息,但我只是发现一般性质的非常含糊的文本,最好的一个就是这个:http://fgiesen.wordpress.com/2011/09/06/a-trip-through-the-graphics-pipeline-2011-part-12/

缺乏关于此的文本的原因是它依赖于供应商,还是我没找到找不到合适的页面?

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

1 个答案:

答案 0 :(得分:2)

前一段时间我对tessellation非常感兴趣,特别是subdivision surfaces。这是一个非常复杂的话题。它是从70年代初开始研究的,现在还处于研究阶段。

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

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

<强>理论

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

Recursively generated B-spline surfaces on arbitrary topological meshes”(1978年,PDF)

更接近代码

检查微软研究院那些很酷的人的论文:

更接近代码。

您可以在网上找到一些图书馆。当我不久前搜索时,有十几个libs在CPU上实现了细分。我看起来并不多,因为我对GPU实现很感兴趣。搜索的关键字是“subdivision lib”=)

最有趣的是Pixar's OpenSubdiv。看看他们的代码。

另请参阅“NVIDIA Instanced Tessellation”示例(DirectXOpenGL)。他们在Vertex和Geometry着色器中实现了细分管道。

希望它有所帮助!