頂點著色引擎的程式--- Programming The Vertex Shader,續


目錄 :

頂點著色引擎的程式--- Programming The Vertex Shader,續

頂點著色引擎的程式--- Programming The Vertex Shader,續

底下這表格,是一些常見運算所需要的週期數目。

向量外積 2
除法 2
開平方 2
乘法與加法一起 4
轉換到切割座標,用一個單方向燈照明,以及計算一個材質座標 7
高精度對數 9
高精度指數 9
低精度三角函數(sin/cos) 9
高精度三角函數(sin/cos) 13
轉換到切割座標,用一個聚光燈照明,以及計算一個材質座標 18
計算4 x 4反矩陣 38
17 道單點光源 126

微軟的Xbox有兩個可以同時運作的頂點著色引擎,GeForce 3僅有一個,而內建的座標轉換與照明運算功能不能與頂點著色引擎同時使用。 因此GeForce 3對頂點的運算僅能一個一個照著次序來。

NVIDIA提供了常用的頂點程式模組以及一些固定功能的頂點程式。 甚至還包括一個稱為NVLink的程式,可以幫助你撰寫頂點運算程式。 底下是「雙面照明」的例子。

Two Sided Lightning

底下的幾點是我們要注意的 一個頂點運算程式裡的指令不能超過128條。 這限制了光源的數目(尤其是聚光源)以及如模擬骨架運動時,可賦予的矩陣數目。 程式寫的越長,其執行時間就越長,整體效能也就越低落。 若非必要,使用內建的座標轉換與照明引擎就可以了。 在少數幾支程式之間切換很快,在許多支程式之間切換就比較慢,看來GeForce3有「快取」這些頂點運算程式。 一個進去,一個出來--頂點著色引擎無法增加新頂點,影響其他頂點,或者「看到」其他頂點的資料。 程式本身必須確保運算的結果已經完成座標轉換與照明。

總括而言,頂點著色引擎強大的功能讓人印象深刻,提供予程式設計師極大的揮灑空間。 但是,稍稍瞄一下Xbox的規格表,相比之下,你會發現GeForce 3的頂點著色引擎還僅能算是襁褓階段。

充滿可能性的新世界--頂點著色引擎能發揮的空間

我不得不承認,這一段的標題太大了。 因為根本沒辦法詳列出所有程式設計師可以用GeForce3作出來的特效。 但至少,我還能對這顆NVIDIA旗艦晶片能作出來的特效,提出幾個較有趣的來討論討論。

模擬骨架運動-矩陣調色盤變形 Skeletal Animation - Matrix Palette Skinning

我們已經知道,頂點著色引擎能夠進行大量的矩陣運算。 這意謂著NVIDIA以前那個沒用的2矩陣變形年代總算過去了。 遊戲畫面上人物的臉部表情變化、四肢移動,以及衣物飄動,現在都能很寫實的表現出來。 NVIDIA宣稱最多有32個矩陣(32根骨頭)可以參與每個頂點的運算。 但回頭看看那每一個頂點運算程式裡的指令不能超過128條的限制,絕大部分的情況應該是少於32個。 但是,縱使是20個矩陣的變形,就已經是令人印象深刻的成就了。

Matrix Palette Skinning

變臉特效(Morph)以及內插畫面(Key Frame Animation)

一個比較容易創造出擬真動畫的方法是,先定義好物體變形前後兩幅畫面各頂點的位置,然後讓頂點著色引擎去計算這前後兩幅畫面當中,各頂點在逐漸變形時的位置。 藉由這種方法,ATi的Radeon晶片展示的是將一張笑臉逐步變成生氣的表情。 NVIDIA展示的則是一隻正在游泳的海豚。

Dolphin

這邊還有一個例子。

Keyframe


Google 廣告
廣告
Ads
的文章和評比
smartad
Recherches populaires