頂點着色器和像素着色器的數據處理流程


https://blog.csdn.net/mansir123/article/details/53395460

1. 頂點着色程序從GPU前端模塊(寄存器)中提取圖元信息(頂點位置、法向量、紋理坐標等),並完成頂點坐標空間轉換、法向量空間轉換、光照計算等操作,最后將計算好的數據傳送到指定寄存器中;然后片斷着色程序從中獲取需要的數據,通常為“紋理坐標、光照信息等”,並根據這些信息以及從應用程序傳遞的紋理信息(如果有的話)進行每個片斷的顏色計算,最后將處理后的數據送光柵操作模塊。

這里寫圖片描述

在應用程序中設定的圖元信息(頂點位置坐標、顏色、紋理坐標等)傳遞到vertex buffer中;紋理信息傳遞到texture buffer中。其中虛線表示目前還沒有實現的數據傳遞。當前的頂點程序還不能處理紋理信息,紋理信息只能在片斷程序中讀入。頂點着色程序與片斷着色程序通常是同時存在,相互配合,前者的輸出作為者的輸入。不過,也可以只有頂點着色程序。如果只有頂點着色程序,那么只40對輸入的頂點進行操作,而頂點內部的點則按照硬件默認的方式自動插值。例如,輸入一個三角面片,頂點着色程序對其進行phong光照計算,只計算三個頂點的光照顏色,而三角面片內部點的顏色按照硬件默認的算法(Gourand明暗處理或 
者快速phong明暗處理)進行插值,如果圖形硬件比較先進,默認的處理算法較好(快速phong明暗理),則效果也會較好;如果圖形硬件使用Gourand明暗處理算法,則會出現馬赫帶效應(條帶化)。而片斷着色程序是對每個片斷進行獨立的顏色計算,並且算法由自己編寫,不但可控性好,而且可以達到更好的效果。由於GPU對數據進行並行處理,所以每個數據都會執行一次shader程序程序。即,每個頂點數據都會執行一次頂點程序;每個片段都會執行一次片段程序.

來自《GPU編程與cg語言》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM