圖形學(xué)之Unity渲染管線流程分析
下圖是《Unity Shader 入門精要》一書中的渲染流程圖;

ApplicationStage階段:準(zhǔn)備場(chǎng)景信息(視景體,攝像機(jī)參數(shù))、粗粒度剔除、定義每個(gè)模型的渲染命令(材質(zhì),shader)——由開發(fā)者定義,不做討論;
GemetryStage階段:頂點(diǎn)著色器、曲面細(xì)分著色器、幾何著色器、裁剪、屏幕映射;
RasterizerStage階段:三角形設(shè)置遍歷,片元著色器、逐片元操作;
每個(gè)階段具體操作如下圖(虛線框是可選階段):

模型空間——矩陣變換——齊次裁剪空間——透視除法——NDC標(biāo)準(zhǔn)設(shè)備坐標(biāo)——屏幕映射
齊次裁剪空間是視景體空間(臺(tái)體);
CVV:標(biāo)準(zhǔn)視體-也就是NDC坐標(biāo)系對(duì)應(yīng)的空間;
透視除法:頂點(diǎn)坐標(biāo)除以w分量,將當(dāng)前z深度所在的截面縮放為(2,2,2)的截面坐標(biāo);所以w分量記錄了z深度信息;
硬件做透視除法獲得NDC歸一化設(shè)備坐標(biāo)——再經(jīng)過屏幕映射獲得屏幕坐標(biāo)系下頂點(diǎn)坐標(biāo);
Unity使用OpenGL的NDC,z分量在[-1,1];
OpenGL和DirectX差異
NDC空間——OpenGL為[-1,1],DirectX為[0,1],深度z范圍不同;
窗口坐標(biāo)系——DirectX左上角原點(diǎn),OpenGL左下角原點(diǎn);
投影平面——DirectX投影平面就是視景體近截面,OpenGL有視平面;
左右手坐標(biāo)系——DirectX左手,OpenGL右手,叉乘順序;
問題:
為什么片元不叫像素?
片元是很多狀態(tài)的集合,記錄了該像素的屏幕坐標(biāo),深度信息,法線,UV等;
DrawCall為什么會(huì)影響性能?
DrawCall是CPU向GPU添加渲染命令的過程,過程會(huì)由CPU向GPU發(fā)送數(shù)據(jù)(模型信息),DrawCall的次數(shù)越多CPU消耗性能就越大,DrawCall次數(shù)過多會(huì)導(dǎo)致每一幀CPU來不及發(fā)送全部數(shù)據(jù)給GPU渲染;
GPU有一個(gè)命令緩存區(qū)(Command Buffer),CPU的渲染命令都會(huì)存儲(chǔ)在這里,GPU從命令緩存區(qū)依次執(zhí)行渲染命令;
兩種渲染命令:渲染模型(CPU提交模型信息也就是DrawCall)和改變渲染狀態(tài)(著色器紋理狀態(tài)改變,更耗時(shí));
一般情況都是GPU渲染完成等待CPU發(fā)渲染命令;
相關(guān)文章
C#中高效的多線程并行處理實(shí)現(xiàn)方式詳解
在處理大型數(shù)據(jù)集時(shí),單線程處理往往成為性能瓶頸,所以本文將詳細(xì)介紹幾種高效的多線程并行處理實(shí)現(xiàn)方式,幫助開發(fā)者優(yōu)化數(shù)據(jù)處理流程,有需要的可以了解下2025-04-04
C# IQueryable及IEnumerable區(qū)別解析
這篇文章主要介紹了C# IQueryable及IEnumerable區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
C# 實(shí)現(xiàn)顏色漸變窗體控件詳細(xì)講解
這篇文章主要介紹了C# 實(shí)現(xiàn)顏色漸變窗體控件詳細(xì)講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
算法證明每一位都相同十進(jìn)制數(shù)不是完全平方數(shù)
這篇文章主要為大家介紹了算法證明每一位都相同十進(jìn)制數(shù)不是完全平方數(shù)的過程論述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
C#在Winform開發(fā)中使用Grid++報(bào)表
這篇文章主要介紹了C#在Winform開發(fā)中使用Grid++報(bào)表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

