GPU程式設計入門(8) GPU ASM 頂點渲染初步

gamedevers發表於2007-08-11

看這個題目應該跟彙編有一定的關係吧。。。。嘮叨句,可能有人覺得學遊戲的,特別是現在高階語言那麼多的情況下彙編的重要性已經很低了。。。錯。。。為什麼錯,自己找書看去吧。。咔咔。。。看這篇文章多少要有點彙編的基礎,自己掂量吧

GPU可程式設計實時渲染初期,HLSLCG語言出現以前,使用GPU進行渲染是藉助 一種類似於彙編的ASM的語言來進行的 ,這種語言難入門更難掌握,不過和組合語言一樣,他的效率也比高階的渲染語言要高,理由也是相同,因為高階語言要編譯。我們花兩次的時間簡要的介紹一下頂點和畫素ASM語言的基本語法和函式什麼的。

如果你問為什麼要學,那我先用一句多學點總沒什麼壞處壓死你,然後我告訴你,因為以前是用這種語言的,而且有部分人多這種方式的語言有偏好,所以導致市場上很多寫GPU程式設計的書都是用ASM寫的,瞭解一下花不了多少時間,如果你學過彙編的話就更是掃一掃就好,不看的話可能真的要錯過很多精彩的東西。正題(我居然發現每次說正題前說通廢話會讓我有快感。。。。汗一個):

首先是頂點著色器的輸入和輸出,也就是整體架構,如圖:

下面稍做解釋,頂點著色器對每個頂點要執行一次,主要的輸入是頂點,暫存器包括輸入暫存器和輸出暫存器,輸入暫存器包括

一個地址暫存器a0,是能夠對常量進行索引訪問的特殊暫存器,具體說就是處理每個頂點的時候,將地址暫存器設定為索引值,就可以使用適當的常量了。這麼說大概很多人不明白,可實際上很簡單,等用例項的時候一看就明白了

12個可讀寫的臨時暫存器r0~r11,就是用來儲存在複雜計算過程中的資料的暫存器。注意,暫存器和頂點找色器不保持為連續的

常量暫存器c(n),至少256個,為浮點型別,儲存四維向量,可讀,用外部程式寫入,最常見的用途是設定變換矩陣和影響頂點的其他資料。

頂點元素暫存器v0~v16,浮點型別,是一個四維向量,可讀,用於輸入頂點資料。

接下來是輸出暫存器,如下:oPos:輸出變換後的最終頂點位置,也就是螢幕座標

oD1~2,兩個顏色輸出,漫反射和鏡面反射宿處,四維向量

oT18,紋理輸出暫存器,四維向量

oFog,輸出霧化值,float型別

oPts,頂點大小,浮點型別

然後是常用頂點著色器指令,不寫了,給張圖:

切。。。怎麼都傳不上來了,好爛的blog,還有就是儲存成草稿的文章怎麼都在也發表不了了,難道是我太SB不會弄?!切。。。。。。BS。。

PS:文中的圖來至《real time rendering tricks and techniques in Directx 》網上有電子書,可以考慮下來看看,這本書全部用ASM寫的,很精彩,入門,提高都不錯。。。自己看著辦吧。。。。

 

 

相關文章