2010-10-04 85 views
3

你能用DirectX 11在GPU上渲染NURBS嗎?我一直在閱讀當前趨勢來渲染這些表面,但我在NURBS上看不到任何內容。DirectX 11上的NURBS?

我找到了一些相關的參考資料,但沒有什麼可靠的......比如Charles Loop和Scott Schaefer編着的「用雙三次補丁逼近Catmull-Clark細分曲面」。

    -

回答

2

有2個演示在DirectX SDK; SubD10,SubD11分別用於本文中描述的技術的DirectX 10/11實現。

0

快速回答是否定的。 NURBS非常複雜,編寫高效的着色器很難在GPU上渲染它們。我認爲這是可能的,但通常不會這樣做,因爲有更好的方法。

更好的方法是直接在GPU上渲染Bézier補丁,因爲任何NURBS都可以轉換爲一組相連的Bézier補丁。要生成貼片,您需要在每個結上執行結插入,直到達到與度數相同的多重性;例如在立方NURBS上,你會在每個結上執行結插入,直到每個結都是三結。然後可以將NURBS的控制點視爲連接的Bézier網格。

這是一個特定於着色器的問題:當您對Bézier貼片進行三角測量時,共享邊界的貼片也共享完全相同的曲面細分設置,否則由於曲面細分會在NURBS曲面出現裂縫不匹配。如果使用固定鑲嵌設置,這不是問題,但如果使用視圖相關鑲嵌,則需要確保每個鑲邊邊界具有獨立計算的「視圖相關」鑲嵌細分,以便相鄰的鑲邊匹配。