Vertex Shader 頂點著色入門

2021-09-08 23:13:35 字數 1534 閱讀 5045

vertex shader是什麼?

頂點著色是一段執行在gpu上的程式(一般用hlsl來編寫),用來取代fixed pipeline中的transformation和lighting,vertex shader主要操作頂點。當然前提是硬體要支援,軟體模擬的不算

有圖則一目了然

vertex shader做了什麼工作

由上圖知,vertex shader對輸入頂點完成了從local space到homogeneous clip space的變換過程,homogeneous clip space即projection space的下乙個space。在這其間共有world transformation, view transformation和projection transformation及lighting幾個過程。

優點(與fix pipeline比較)

由於vertex shader是使用者自定義程式,所以有很大的靈活性,不必再侷限於d3d固定的演算法,可以應用許多其他演算法,比如可以操作頂點位置模擬衣服效果,操作頂點大小模擬例子系統及頂點混合,變形等,此外,頂點的資料結構也更加靈活。

如何檢視顯示卡所支援的vertex shader版本

工具法,看這裡

程式法,**如下

create d3d

2g_pd3d 

=direct3dcreate9( d3d_sdk_version ) ;34

//get d3dcaps

5d3dcaps9 d3dcaps9 ;

6g_pd3d

->

getdevicecaps(d3dadapter_default, d3ddevtype_hal, 

&d3dcaps9) ;78

//retrieve vertex shader version

9dword version 

=d3dcaps9.vertexshaderversion ;

10if

(version 

==d3dvs_version(3, 

0))11cout 

<<

"version is 3.0!

"<<

endl ;12

或者check shader version

2bool

checkshaderversion(lpdirect3ddevice9 g_pd3ddevice)313

14//

make sure pixel shader version greater than 2.0

15if

(caps.pixelshaderversion

<

d3dps_version(2,

0))1619

20return

true;21

};

頂點著色程式

頂點著色程式從gpu前端模組 暫存器 中提取圖元資訊 頂點位置.法向量 紋理座標等 並完成頂點座標空間轉換,法向量空間轉換,光照計算等操作。最後將計算好的資料傳送到指定暫存器中。然後片段著色器從種獲取需要的資料,通常為 紋理座標,光照資訊等 並根據這些資訊以及從應用程式傳遞的紋理資訊進行每個片段的顏...

頂點著色問題應用

1.n個學生對m個宣講會中的若干個感興趣,如何安排宣講會的時間 每個宣講會持續的時間相同 使得每個學生對自己感興趣的宣講會時間不衝突,且宣講會的總時間最短?此問題可以轉化成頂點著色問題。把每個宣講會看作是一些散布的點,對於每個學生,把他感興趣的宣講會之間兩兩相連,如 學生a希望參加宣講會1 2 3 ...

HLSL頂點著色器

1.在文字檔案裡編寫頂點著色器 hlsl語言 2.編譯著色器 d3dxcompileshaderfromfile 3.建立頂點著色器 createvertexshader 4.獲取hlsl語言中變數控制代碼 getconstantbyname 5.根據控制代碼給hlsl語言中的變數傳值 id3dxc...