GPU 渲染管線流程簡化版

2021-10-05 12:30:17 字數 1652 閱讀 4669

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。頂點著色器的處理單位是頂點,也就是說輸入進來的每個頂點都會呼叫一次頂點著色器。頂點著色器需要完成的工作主要有 座標變換和逐頂點光照。當然,除了這兩個主要任務外,頂點著色器還可以輸出後續階段所需的資料。座標變換,顧名思義,就是對頂點的座標進行某種變...