渲染流水線

2021-10-24 08:42:57 字數 746 閱讀 8128

應用階段:

cpu準備資料, skinmeshrender,meshfilter,meshrender;

頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料;

由cpu傳送給gpu,即一次drawcall

幾何階段

頂點變換,計算頂點顏色(如逐頂點光照)

齊次裁剪空間,透視除法,歸一化的裝置座標頂點裁剪,

剔除三角面螢幕影射

最終輸出螢幕空間的二維頂點座標,每個頂點對應的深度值,著色等資訊

光柵化階段

三角形設定

三角形遍歷,每個畫素都會生成乙個片元,輸出片元序列,

片元不等於畫素

紋理取樣-片元著色逐片元操作,

蒙版測試,深度測試,顏色混合

走樣問題:訊號變化過快,取樣的速度太慢

(1)鋸齒(2)摩爾紋

鋸齒問題:

(1)增加取樣率,更大的解析度的螢幕

(2)先做模糊,再做取樣(使用低通濾波器過濾掉高頻資訊)

(3)msaa超取樣

紋理過大:

乙個uv點對應多個紋理點,可以使用超取樣,提公升取樣的頻率,這樣會導致取樣的次數過大,消耗效能;(點查詢)

優化為範圍查詢問題, 使用mipmap技術,從一張圖生成一系列圖

mipmap查詢:雙線性,三線性(正方形) 內心開銷增加 1/3

各向異性過濾(矩形),記憶體開銷增加為3倍

ewa過濾(不規則形狀),多次查詢,開銷更大,效果更好

UnityShader 渲染流水線

渲染具體流程 幾何階段 光柵化階段 渲染流水線的最終目的在於生成或者說是渲染一張紋理,即我們在螢幕上看到的所有效果。它的輸入是乙個虛擬攝像機 一些光源 一些shader以及紋理等。渲染流程分為3個階段 應用階段 幾何階段 光柵化階段。圖中,綠色表示該階段是完全可程式設計控制的,黃色表示可以配置但不是...

回顧寫整個渲染流水線

手寫的cpu光柵化渲染流水線做了要三周,到今天終於算是完工了,共有三次大的版本,一次是頂點變化,匯入的3ds模型的頂點變換到世界座標系下,然後變換到攝影機座標系下,最後通過投影變換和視口變換變換到螢幕上。看似過程很明確,而且整個過程其實就是設定幾個矩陣,並且設定矩陣的幾個引數就差不多了,可是因為數學...

渲染流水線 應用階段詳解

由乙個三維場景出發,渲染一張二維影象 計算機從一系列的頂點資料,紋理等資訊出發,把這些資訊最終轉換成一張人眼可見的影象。由c gpu共同完成 分為下面三個階段 應用主導,開發者在此階段有絕對控制權 負責實現 cpu 階段任務 輸出渲染圖元 具體階段 資料準備渲染所需的資料都需要從硬碟載入到系統記憶體...