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