3.GPU流水線

當(dāng)GPU從CPU那里得到渲染命令后,就會(huì)進(jìn)行一系列流水線操作,最終把圖元渲染到屏幕上。
GPU渲染流水線接收頂點(diǎn)數(shù)據(jù)作為輸入,這些數(shù)據(jù)是由應(yīng)用階段加載到顯存中,再由drawcall指定的,隨后傳遞給頂點(diǎn)著色器。

渲染流水線步驟:
  1. 頂點(diǎn)數(shù)據(jù)作為輸入,
進(jìn)入幾何階段
  1. vertexshader頂點(diǎn)著色器,通常用于實(shí)現(xiàn)頂點(diǎn)的的空間變換,頂點(diǎn)著色。
  2. tessellation shader曲面細(xì)分著色器,可選,細(xì)分圖元
  3. geometry shader幾何著色器,可選,被用于執(zhí)行逐圖元著色
  4. clipping裁剪,這一階段將那些不在攝像機(jī)視野內(nèi)的頂點(diǎn)裁剪掉,
  5. screen mapping屏幕映射 ,不可配著或編程,把每個(gè)圖元的坐標(biāo)轉(zhuǎn)換到屏幕坐標(biāo)系中去。
光柵化階段
  1. 三角形設(shè)置固定函數(shù)階段
  2. 三角形遍歷固定函數(shù)階段
  3. fragment shader片元著色器,實(shí)現(xiàn)逐片元操作
  4. per—fragment逐片元操作,例如修改顏色,深度緩沖,混合。
    最終輸出到屏幕圖像。

頂點(diǎn)著色器的輸入來(lái)自于CPU,處理的單位是頂點(diǎn),輸入進(jìn)來(lái)的每個(gè)頂點(diǎn)都會(huì)調(diào)用一次頂點(diǎn)著色器,主要完成坐標(biāo)的變換把頂點(diǎn)坐標(biāo)從模型空間轉(zhuǎn)換到齊次裁剪空間和逐頂點(diǎn)光照。

裁剪:由于場(chǎng)景很大,攝像機(jī)視野范圍不會(huì)覆蓋到所有場(chǎng)景物體,那些不在攝像機(jī)視野范圍內(nèi)的就需要被裁剪掉,
屏幕映射:每個(gè)圖元坐標(biāo)轉(zhuǎn)換到屏幕坐標(biāo)系下
三角形設(shè)置:光柵化第一個(gè)階段,上一階段輸出都是三角網(wǎng)格頂點(diǎn),要得到整個(gè)三角網(wǎng)格覆蓋情況。計(jì)算每條邊上的像素坐標(biāo),為下一階段做準(zhǔn)備,
三角形遍歷:檢查每個(gè)像素是否被一個(gè)三角網(wǎng)格所覆蓋,所過(guò)覆蓋的話產(chǎn)生一個(gè)片元。
片元著色器:前面光柵化階段實(shí)際上并不會(huì)影響屏幕上的像素顏色值,而是產(chǎn)生一系列數(shù)據(jù),真正對(duì)象素產(chǎn)生影響的是下一個(gè)階段。
逐片元:決定片元的可見(jiàn)性,涉及深度測(cè)試,模板測(cè)試等
如果一個(gè)片元通過(guò)所有測(cè)試就需要把該片元的顏色值和已經(jīng)存在緩沖區(qū)的顏色進(jìn)行合并混合。
點(diǎn)擊關(guān)注我的微博,給大家?guī)?lái)歡樂(lè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容