GPU流水線
主要分爲兩個階段:幾何階段和光柵化階段
幾何階段
頂點着色器 ——> 曲面細分着色器(可選)----->幾何着色器(可選)----->裁剪——>屏幕映射
頂點着色器
流水線的第一個階段,輸入來自於CPU,處理的基本單位爲單個頂點,輸入的每一個頂點都會調用一次頂點着色器。
主要工做是:座標變換(好比改變頂點位置模擬水面、布料等)和逐頂點光照,並輸出後續階段須要的數據(常見的輸出路徑是經光柵化後交給片元着色器處理)。
曲面着色器
一個可選的着色器,用於細分圖元。
幾何着色器
用於執行逐圖元操做,或者用於產生更多的圖元
裁剪
將不在攝像機視野的頂點裁剪掉,並剔除某些三角圖元的面片(主要處理一部分在視野內另外一部分在視野外的圖元。
屏幕映射
將每一個圖元的x和y座標轉換到屏幕座標系(二維座標系,與屏幕分辨率有很大關係)
光柵化階段
三角形設置 ——> 三角形遍歷 -----> 片元着色器(可選)——>逐片元操做——>屏幕圖像
三角形設置
該階段計算光柵化一個三角形網格須要的信息。具體來講,上個階段輸出過來的都是三角網格的頂點,即三角網格每條邊的兩個端點。但若是要獲得整個三角網格對像素的覆蓋狀況,咱們就必須計算每條邊上的像素座標。爲了可以計算邊界像素的座標信息,咱們就須要獲得三角形邊界的表示方法。這就是一個計算三角網格表示數據的過程。
三角形遍歷
該階段會檢查每一個像素是否被一個三角網格覆蓋,若是被覆蓋就會生成一個片元。該階段會根據上一階段的計算結果判斷一個三角網格覆蓋了哪些像素,並用三角網格的三個頂點的信息對覆蓋區域的像素進行插值。這一階段會輸出一個片元序列。
片元着色器
顧名思義,給每一個像素着色。該階段可由開發者編程實現一些渲染效果,並完成不少重要的渲染技術,如紋理採樣等。片元着色器僅能影響單個片元。
逐片元操做
在DriectX中又稱爲輸出合併階段。
主要任務:1)決定每一個片元的可見性。如進行深度測試、模板測試。
2)若是一個片元經過了全部的測試,就須要把這個片元的顏色值和已經存儲在顏色緩衝區中的顏色進行合併,或者說混合。