你能用DirectX 11在GPU上渲染NURBS吗?我已经阅读了当前的趋势,渲染像这样的表面,但我没有看到任何关于NURBS。
我找到了一些相关的推荐信,但没有什么可靠的.比如查尔斯·洛普和斯科特·谢弗的“用双三次曲面逼近Catmull细分曲面”。
-
发布于 2011-10-19 22:56:46
在DirectX SDK中有两个演示: SubD10,SubD11用于DirectX 10/11,分别实现本文中描述的技术。
发布于 2017-08-11 16:12:24
答案是否定的。NURBS是相当复杂的,它将很难写一个有效的着色器,可以渲染他们的GPU。我认为这是可能的,但通常不会这样做,因为有更好的方法。
更好的方法是直接在GPU上呈现Bézier补丁,因为任何NURBS都可以转换成一组连接的Bézier补丁。要生成补丁,您在每个节点上执行节点插入,直到它达到与度相同的多重性;例如,在三次NURBS上,您将在每个节点上执行节点插入,直到每个节点是一个三重节点。NURBS的控制点可以看作是一个连通的Bézier网格。
这有一个问题,特定于着色器:当你三角化你的Bézier补丁时,关键是共享一个边界的补丁也共享完全相同的镶嵌设置,否则你的NURBS曲面会因为镶嵌不匹配而出现裂缝。如果您使用固定的镶嵌设置,这不是一个问题,但如果您使用视图依赖的镶嵌,那么您需要确保每个补丁边界有独立计算的“视图依赖”镶嵌,以便相邻的补丁将匹配。
https://stackoverflow.com/questions/3857057
复制相似问题