應用階段:
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 階段任務 輸出渲染圖元 具體階段 資料準備渲染所需的資料都需要從硬碟載入到系統記憶體...