DirectX 11上的NURBS?

4

您能使用DirectX 11在GPU上渲染NURBS吗?我一直在了解当前渲染这些表面的趋势,但我没有看到关于NURBS的任何内容。

我找到了一些相关的参考资料,但没有实质性的东西...例如Charles Loop和Scott Schaefer的“用Bicubic Patches近似Catmull-Clark细分曲面”。

    -
2个回答

2

DirectX SDK中有两个演示程序:SubD10和SubD11,分别用于实现本文所描述的DirectX 10/11技术。


2
简短的回答是否定的。NURBS相当复杂,编写一个能够在GPU上呈现它们的高效着色器将是困难的。我认为这是可能的,但通常不这样做,因为有更好的方法。
更好的方法是直接在GPU上呈现Bézier贴片,因为任何NURBS都可以转换成连接的一组Bézier贴片。要生成这些贴片,您需要在每个节点处执行结节插入,直到它达到与度数相同的重复度;例如,在三次NURBS上,您将在每个节点处执行结节插入,直到每个节点都是三重节点。然后,可以将NURBS的控制点视为连接的Bézier网格。
这里存在一个问题,特别是对于着色器:当您三角化Bézier贴片时,至关重要的是共享边界的贴片也共享完全相同的细分设置,否则由于细分不匹配,您的NURBS表面将出现裂缝。如果使用固定的细分设置,则不会出现此问题,但如果使用视图相关的细分,则需要确保每个贴片边界都独立计算其“视图相关”的细分,以便相邻的贴片将匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接