Unity渲染管線復習
渲染管線可以看成3大步驟組成:
CPU處理要渲染的數據,將數據發(fā)送給GPU
GPU根據CPU發(fā)來的數據,將畫面渲染到幀緩沖區(qū)
一個畫面在幀緩沖區(qū)渲染完了,進行后處理后輸出

一、CPU階段
剔除
將不在視錐范圍內的物體剔除掉
渲染順序
將根據視錐范圍內的物體位置決定渲染順序
不透明隊列(RenderQueue<2500),按照從前到后的順序排序
透明隊列(RenderQueue>2500),按照從后到前的順序排序
先透明隊列后不透明隊列
打包發(fā)送數據
將要渲染的數據發(fā)送給GPU
一個模型的數據,包含以下內容:
頂點坐標(Position)
法線向量(Normal)
貼圖采樣位置(UV)
索引列表
每一行表示一個面的數據,而一個面是由三個點構成
每個點的數據,都包含上述abc三個數據
因此每一行的數據可以看成:
點1.Position/點1.UV/點1.Normal
點2.Position/點2.UV/點2.Normal
點3.Position/點3.UV/點3.Normal
調用SetPass Call與Draw call
SetPass Call:設置好各種渲染狀態(tài)、背面剔除、要使用的Shader與混合模式
Draw Call:通知GPU去渲染模型
二、GPU階段
GPU階段可以視為:
點:將拿到的頂點坐標,轉化為屏幕屏幕坐標
線:將各個頂點連接起來,形成一個個三角面(即圖元)
面:給三角面上色
最后輸出合并。
點
頂點Shader:將模型空間頂點轉化為裁剪空間(投影成像)
裁剪操作:將不在裁剪空間里的頂點給裁剪掉
NDC標準化設備坐標:將裁剪空間轉化為NDC標準化設備坐標
背面剔除:將背面的三角面剔除掉
視口變換:將裁剪空間轉換為屏幕空間坐標
線
圖元裝配:將頂點連接,形成三角面,稱為圖元
面
光柵化:通過插值,將圖元內部形成一個個片元(片元可以理解成一個像素點)
片元Shader:通過紋理著色、光照著色來給片元上色
輸出合并
通過alpha測試、模板測試、深度測試、顏色混合,
處理遮擋關系、處理半透明混合,將結果繪制到幀緩沖區(qū)
