Unity渲染流水線

今天過年回家了,不過要準備面試,認真學習下《Shader入門精要》因爲裏面不單涉及到shader的知識,還有一些渲染的知識,對我來說很有幫助。

渲染流水線:

    渲染流水線的目的是把場景從3維空間轉化到2維空間,並最終在屏幕上顯示的過程。之所以稱之爲流水線,是因爲渲染有並行性,每個渲染圖元可以並行處理,相互之間沒有必然的前後順序。渲染流水線的過程分爲:應用階段,幾何階段,光柵化階段。

應用階段:

    應用階段是由CPU負責處理的,主要目的是得到模型,光源,攝像機位置和視錐體,材質,紋理,shader等,最終輸出渲染圖元。

幾何階段:

    主要目的是把模型的遊戲座標空間轉化爲屏幕空間座標。幾何階段細分爲:

1 頂點着色器:遊戲座標轉化爲齊次裁剪座標,頂點着色,以及紋理座標。

2 曲面細分着色器:細分圖元。

3 幾何着色器:執行逐片元的着色操作。

4 裁剪:將不在攝像機範圍的頂點裁剪掉,部分在視野範圍內的進行裁剪得到新的頂點。

5 屏幕映射:圖元從裁剪座標變換到屏幕座標。

光柵化階段:

    主要目的是決定哪些渲染圖會被繪製在屏幕上,並對這些頂點進行座標,顏色插值,最終得到要在屏幕上繪製的每個像素的信息。光柵化階段細分爲:

1 三角形設置:光柵化一個三角形網格,得到它的3條邊的邊界像素座標信息,爲下一步做準備。

2 三角形遍歷:遍歷每一個像素被哪些圖元所覆蓋,被覆蓋就生成一個片元。

3 片元着色器:片元着色器的輸入是從頂點着色器輸出插值得到的數據,它的最重要操作是紋理採樣。

4 逐片元操作:進行深度測試,模板測試等決定片元的可見性。對片元和已存在的顏色進行混合。

Draw Call:

    Draw Call其實是一個命令,是CPU通知GPU執行渲染的命令,這個命令包含了一個渲染圖元列表。GPU收到這個圖元列表後從顯卡緩存中找到數據,並傳入渲染流水線。

渲染圖元:

    最基本的圖形渲染元素,比如點,線段,三角網格這些。

片元:

    光柵化後的產物,它包含了像素位置,深度,顏色,法線信息,紋理座標等。

發佈了53 篇原創文章 · 獲贊 12 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章