1. 程式人生 > >GPU渲染流水線的簡單概括

GPU渲染流水線的簡單概括

存儲 位置 重要 區域 一次 方法 深度 緩沖 變換

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

GPU渲染流水線的簡單概括