我需要在CPU上复制GPU坐标(即在CPU端获得与从tessellator获得的GPU相同的uvw坐标)。原因相当复杂,但简单地说,我有一个算法,它存储每个镶嵌点的数据,并首先计算它,我需要CPU上的uvw坐标。
我在googled上搜索了很多关于镶嵌模式的细节,但是我发现只有非常模糊的文本在一般的性质上谈论它,最好的是这个:http://fgiesen.wordpress.com/2011/09/06/a-trip-through-the-graphics-pipeline-2011-part-12/。
是因为这上面缺少文本,是因为它依赖于供应商,还是我根本找不到正确的页面?
我对OpenGL和DX11实现的文本都感兴趣,如果它们不同的话。
发布于 2013-10-15 11:31:57
我还对镶嵌非常感兴趣,特别是不久前的细分曲面。这是一个非常复杂的话题。它是从70年代初开始研究的,目前还在研究中。
现在还不清楚你是否想要重新实现整个着色器镶嵌线(我认为对于一个程序员来说,这需要数年的时间),或者仅仅是一个细分算法(甚至不是细分的算法)。
无论如何,有一些关于细分的链接:
理论
通常,我们实现细分曲面在镶嵌着色器使用Catmull-Clark细分曲面算法。你可以在谷歌找到一些原始作者的论文。主要有:
"任意拓扑网格上递归生成B样条曲面“(1978年)
更接近于代码
微软研究部的那些帅哥的考卷:
更接近于代码.
你可以在网上找到一些图书馆。当我刚才搜索的时候,有十几个libs,它们在CPU上实现了细分。我看上去并不多,因为我对GPU实现很感兴趣。搜索的关键字是"subdivision“=)
最有趣的是皮克斯(氏) OpenSubdiv。看看他们的代码。
还可以看看"NVIDIA Instanced“样本(DirectX,OpenGL)。他们在顶点和几何图形着色器中实现了镶嵌流水线。
希望能帮上忙!
https://stackoverflow.com/questions/19379041
复制相似问题