Directx11教程(18) D3D11管线(7)
光柵化階段(RS)之后,將進入PS/OM階段。
參考外文資料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-7/
大致的管線流程應該是這樣的:
????? RS光柵化的fragment達到64或者32(一個wave或者warp)后,PS調度模塊會產生一個新的wave或者warp,并把它們傳給PS shader階段,PS shader得到調度信息后,會從video memory中取得PS code,執行shader 代碼。注意和vs過程類似,ps過程中,也是每個stream core處理一個fragment。
????
???? 我們的ps shader代碼非常簡單,只是單純的輸出顏色值,但要注意的一點是,在ps shader時候,gpu會自動做一件事情,就是屬性差值,比如我們的三角形,我們只輸入了三個頂點的顏色,但經過光柵化后,我們有很多fragment,系統會自動根據頂點顏色給各個fragment差值出顏色[經常的做法是雙線性插值]。
??? PS shader中還可以執行紋理貼圖,還有一些depth cull(這時,early z將會失效)或者顏色blend的功能,后面教程我們學到這些時候,可以再回來討論D3D11管線。
???? 我們的ps shader代碼如下:
struct PixelInputType
{
??? float4 position : SV_POSITION;
??? float4 color : COLOR;
};
float4 ColorPixelShader(PixelInputType input) : SV_TARGET
{
??? return input.color;
}
??? PS的輸出會放在一個FIFO的buffer中,該buffer中內容會和depth block進行通信,之后經過深度測試和模版測試的fragment最終被傳輸到color block,再執行顏色alpha混合或者其它一些功能后,最終被傳到video memory中Framebuffer,然后在屏幕上顯示出來。這個過程就是D3D11管線中的MO(合并輸出)階段。
轉載于:https://www.cnblogs.com/mikewolf2002/archive/2012/03/25/2416342.html
總結
以上是生活随笔為你收集整理的Directx11教程(18) D3D11管线(7)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebHttpBinding的流传输模式
- 下一篇: ThinkPHP笔记——完全配置参考手册