UnityShader 渲染流水線

2021-10-05 12:24:05 字數 1170 閱讀 1299

渲染具體流程

幾何階段

光柵化階段

渲染流水線的最終目的在於生成或者說是渲染一張紋理,即我們在螢幕上看到的所有效果。它的輸入是乙個虛擬攝像機、一些光源、一些shader以及紋理等。

渲染流程分為3個階段:應用階段、幾何階段、光柵化階段。

圖中,綠色表示該階段是完全可程式設計控制的,黃色表示可以配置但不是可程式設計的,藍色表示是由gpu固定實現的,開發者沒有控制權。實現表示該shader由開發著程式設計實現,虛線表示該shader是可選的。

即cpu 和 gpu 通訊階段。具體分為三個階段

把資料載入到視訊記憶體中

所有渲染所需的資料都需要從硬碟中載入到系統記憶體(ram)中。然後,網格和紋理等資料又被載入到顯示卡上的儲存空間——視訊記憶體中。這是因為,顯示卡對於視訊記憶體的訪問速度更快,而且大多數顯示卡對於 ram 沒有直接訪問許可權。把資料載入到視訊記憶體中後,ram 中的資料就可以移除了,但對於一些資料來說,cpu仍然需要訪問它們(例如,我們希望cpu可以訪問網格資料來進行碰撞檢測),那麼我們可能就不希望這些資料被移除,因為從硬碟載入到 ram 的過程是十分耗時的。

設定渲染狀態

渲染狀態,通俗解釋就是,這些狀態定義了場景中的網格是怎樣被渲染的。例如,使用的shader、光源屬性、材質等。

呼叫 drawcall

cpu 呼叫影象程式設計介面,以命令gpu進行渲染的操作。

頂點著色器

曲面細分著色器

幾何著色器 裁剪

螢幕對映三角形設定

三角形遍歷

片元著色器

逐片元操作

當模型的圖元經過了層次計算和測試後,就會顯示在螢幕上。螢幕上顯示的是顏色緩衝區中的顏色值。但是,為了避免看到正在進行光柵化的圖元,gpu會使用雙重緩衝的策略。這意味著,對場景的渲染是在幕後發生的,即在後置緩衝中,一旦場景以及被渲染到後置緩衝中,gpu就會交換後置緩衝區和前置緩衝區中的內容,而前置緩衝區是之前顯示在螢幕上的影象。由此,保證了我們看到的影象總是連續的。

Unity Shader學習筆記 渲染流水線

渲染流程分為3個階段,應用階段 幾何階段 光柵化階段 這個階段由cpu實現 開發者對應用階段有絕對的控制權,開發者將場景資料準備好,例如攝像機的位置,場景包含了哪些模型。其中,通常為了提高渲染的效率,開發者會將不可見的物體剔除,稱之為粗粒剔除。最後我們會設定好模型的渲染狀態 例如材質,紋理,使用的s...

unity Shader前向渲染

unity shader前向渲染記錄,先說原理,後附 1 前向渲染的原理 兩個pass,乙個basepass主要負責 乙個addpass主要負責 2 對光源處理方式分類 unity在渲染每乙個物體之前都會根據光源的強度,顏色,距離物體的遠近以及光源對該物體的影響程度對場景中的所有光源進行乙個重要度排...

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...