D3D10 可編程渲染管道是為實時應(yīng)用設(shè)計的。它被分成7個階段,其中3個階段是可編程的。數(shù)據(jù)流圖如下:
所有階段都可以通過D3D10API進行配置。三個可編程階段都建立在通用著色器內(nèi)核(common shader core)之上,都使用HLSL編寫。各部分功能簡述如下:
1 . 輸入裝配器階段(IA)
為管線提供數(shù)據(jù)(三角面,線或點)
2 . 頂點著色器階段(VS)
輸入一個頂點,執(zhí)行坐標變換、蒙皮(Skinning)和光照計算,輸出一個頂點。
3. 幾何著色器階段(GS)
處理整個圖元(對于三角形是三個頂點,對于線是兩個頂點,對于點是一個頂點),還包括相鄰圖元的頂點數(shù)據(jù)(對于三角形有三個相鄰三角形,即額外的三個頂點,對于線則有額外兩個頂點)。支持有限的幾何放大和縮小。輸入一個圖元,GS可能丟棄該圖元或輸出一個至多個圖元。
4. 流輸出階段(SO)
在圖元數(shù)據(jù)傳輸?shù)焦鈻牌鞯倪^程中,將圖元數(shù)據(jù)從管線中輸出至內(nèi)存。可以將圖元數(shù)據(jù)同時輸出至光柵器和內(nèi)存,或者只輸出到內(nèi)存。輸出到內(nèi)存的數(shù)據(jù)可以作為輸入返回到管線,也可以被CPU訪問。
5. 光柵器階段(RS)
光柵器執(zhí)行裁剪,為PS準備數(shù)據(jù),并決定如何調(diào)用PS。
6. 象素著色器階段(PS)
接收經(jīng)RS插值過的數(shù)據(jù),計算逐頂點的數(shù)據(jù)
7. 輸出合并階段(OM)
將輸出數(shù)據(jù)(PS輸出值,深度及模板數(shù)據(jù))與渲染目標和深度模板緩存中的數(shù)據(jù)進行合并來生成最終的管線結(jié)果。