gpu:
渲染管線(道)流程:
頂點著色器 - 光柵化 - 片段著色器 - alpha測試 - 模板測試 - 深度測試 - blend - gbuffer - frontbufffer - frame brffer - 顯示器
流程步驟詳細分析:
頂點著色器:
1. 計算頂點的顏色。
2. 將物體座標系 轉換到 相機座標系,即模型、檢視、投影變換(mvp)。
圖元裝配:
頂點著色器下乙個階段是圖元裝配,圖元(prmitive)是三角形、直線或者點精靈等幾何物件。這個階段,把頂點著色器輸出的頂點組合成圖元。
光柵化:(插值)
頂點站色器的varying 變數用於儲存頂點著色器的輸出資料,也儲存片元著色器的輸入資料。varying 變數會在光柵化處理階段被線性插值。
將頂點 轉換成 畫素。
比如由4個頂點組成乙個正方形的平面。中間部分用插值補充。
頂點4個 到了 片段著色器 100*100
結論:
頂點著色器 會執行 4次(四個頂點) 片段著色器 會執行 10000次(10000畫素)。
頂點著色器 和 片段著色器 運算次數不是乙個量級。
能把運算 放在頂點著色器 的就放在這裡。
片段著色器:(到達此步驟時,頂點已經是畫素點了。畫素: 由rgba 4通道組成。)
2. 畫素 跟 燈光計算。
alpha 測試:挑選合格的 alpha 畫素顯示。(滿足alpha的選出來顯示,不符合的丟掉不顯示)
模板 測試: 畫素 還可以攜帶 模板 資訊。(達到條件的模板值顯示,否則丟棄)
深度 測試: 符合條件的畫素就顯示 否則 就不顯示。
三個測試總結: 達到三個條件測試的就顯示,否則不顯示。
blend: 將 當前要渲染的 畫素 和 已經渲染出來的畫素 進行 混合運算。
gbuffer:rgba 模板值 深度值等。(通過測試的會記錄到gbuffer裡)
front buffer:float[720*11280] (只寫入gbuffer的rgba , gbuffer大於 frontbuffer 和 framebuffer)
寫入後會推到顯示器顯示
frame buffer: float[720*11280] (同樣只寫入gbuffer的rgba)
寫入後會推到顯示器顯示
gbuffer、frontbuffer、framebuffer執行流程:
gbuffer選出來的畫素,也就是gbuffer的rgba,會寫入 frontbuffer內,並且frontbuffer只能寫入gbuffer的rgba。 寫入frontbuffer後會推到顯示器顯示,然後寫入到framebuffer;
framebuffer同樣也會只寫入gbuffer的rgba,推到顯示器顯示,之後寫入到frontbuffer。如此交替顯示,一幀一幀渲染顯示,有了動畫。
GPU渲染管線
3 光柵化階段 4總結 主要是為了得到三維頂點的法線,紋理等資料資訊 但是不能夠 幾何階段這個座標系轉化如下 這個階段主要做的事情事頂點著色器 模型變換,檢視變換,頂點著色 模型變換 將建模座標系轉化為世界座標系,相當於以物體為中心轉化為以世界為中心的轉化,可以理解為為模型統一乙個座標系 檢視變換 ...
GPU渲染管線概述
頂點著色器是流水線的第乙個階段,它的輸入來自於cpu。頂點著色器的處理單位是頂點,也就是說輸入進來的每個頂點都會呼叫一次頂點著色器。頂點著色器需要完成的工作主要有 座標變換和逐頂點光照。當然,除了這兩個主要任務外,頂點著色器還可以輸出後續階段所需的資料。座標變換,顧名思義,就是對頂點的座標進行某種變...
GPU渲染管線概述
頂點著色器是流水線的第乙個階段,它的輸入來自於cpu。頂點著色器的處理單位是頂點,也就是說輸入進來的每個頂點都會呼叫一次頂點著色器。頂點著色器需要完成的工作主要有 座標變換和逐頂點光照。當然,除了這兩個主要任務外,頂點著色器還可以輸出後續階段所需的資料。座標變換,顧名思義,就是對頂點的座標進行某種變...