4

Can you render NURBS on the GPU with DirectX 11? I've been reading up on current trends to rendering surfaces like these, but I don't see anything on NURBS.

I found some related references, but nothing solid... like "Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches" by Charles Loop and Scott Schaefer.

    -
4

2 回答 2

2

DirectX SDK中有2个demo;SubD10、SubD11 分别用于 DirectX 10/11 实现本文中描述的技术。

于 2011-10-19T22:56:46.507 回答
2

快速回答是否定的。NURBS 非常复杂,很难编写一个可以在 GPU 上渲染它们的高效着色器。我认为这是可能的,但通常不会这样做,因为有更好的方法。

更好的方法是直接在 GPU 上渲染 Bézier 补丁,因为任何 NURBS 都可以转换为一组连接的 Bézier 补丁。要生成补丁,您在每个结处执行结插入,直到它达到与度数相同的多重性;例如,在立方 NURBS 上,您将在每个结处执行结插入,直到每个结都是三重结。然后可以将 NURBS 的控制点视为连接的 Bézier 网格。

这存在一个特定于着色器的问题:当您对 Bézier 面片进行三角剖分时,共享边界的面片也必须共享完全相同的细分设置,否则您的 NURBS 曲面会由于细分不匹配而出现裂缝。如果您使用固定的细分设置,这不是问题,但如果您使用依赖于视图的细分,那么您需要确保每个面片边界都有独立计算的“视图相关”细分,以便相邻面片匹配。

于 2017-08-11T16:12:24.767 回答