6_GPU模塊
渲染流水線
應用階段:準備基本數(shù)據(jù)(場景里物體的位置,大小,朝向,法線等),設(shè)置渲染狀態(tài),調(diào)用Draw Call
幾何階段:頂點著色器,曲面細分,幾何著色器,頂點裁切,屏幕映射
光柵化階段:三角形設(shè)置,三角形遍歷,片段著色器
逐片元操作:模板測試,透明度測試,深度測試,混合
在渲染流水線中有2個指標往往是GPU性能瓶頸的根源:填充率和內(nèi)存帶寬
填充率
填充率越高,說明每秒可以處理的片元數(shù)量越多,在復雜的場景中往往需要對一個物體進行多次繪制才能達到期望的效果,效果越復雜繪制的次數(shù)就越多,隨著繪制次數(shù)的增加,填充率的消耗也會增加,當填充率無法滿足復雜的場景需求時,就會導致渲染一個畫面所需的時間增加,從而出現(xiàn)幀率下降的問題
內(nèi)存帶寬
內(nèi)存帶寬指的是GPU與顯存之間的傳輸速率,它表示GPU能夠從顯存讀取或?qū)懭霐?shù)據(jù)的速度,復雜的場景通常需要使用更多的內(nèi)存帶寬來處理,當內(nèi)存帶寬被消耗太多就會導致幀率降低和圖像質(zhì)量降低,嚴重時會導致應用卡死
光照和陰影
渲染有兩種不同的方式:前向渲染和延遲渲染,它們對光照的性能都有很大的影響
可以在攝像機組件的Rendering Path 選項中設(shè)置

也可以在Project Setting中進行設(shè)置

前向渲染
在前向渲染中,每個對象都通過同一個著色器進行多次渲染。渲染的次數(shù)取決于光源數(shù)量,距離,和亮度,每個對象都需要考慮所有光源對其的影響,如果物體會被光源照射到,那么就要迭代場景中的所有像素,然后將被光線影響到的像素和之前的像素進行混合,這時不參與光照的像素也會被迭代,這樣做會導致像素出現(xiàn)重復繪制,同時由于每個燈都要進行一次單獨的渲染,使用前向渲染的方式處理有大量燈光的場景將導致出現(xiàn)大量的Draw Call
流程為:待渲染幾何體 → 頂點著色器 → 片元著色器 → 渲染目標

延遲渲染
主要解決大量光照的渲染方案,延遲渲染的實質(zhì),是先不要做迭代三角形做光照計算,而是先找出能被光照所影響到的所有像素,再去MRT中迭代光照
流程為:待渲染幾何體 → 頂點著色器 → MRT → 光照計算 → 渲染目標
其中MRT就像一張RenderTexture圖,只不過里面包含了物體深度,法線,顏色之類的信息,然后光照計算結(jié)算就需要讀取MRT數(shù)據(jù)生成光照信息,這樣在最后繪制時每個像素只需要繪制一次就可以得到光照信息,減少了重復繪制的操作
unity的URP渲染管線是不支持延遲渲染的,一般延遲渲染只會用于場景復雜的大型的項目

渲染性能優(yōu)化

填充率優(yōu)化
合適的分辨率
可以使用2個攝像機將場景和UI分開進行渲染,通過控制場景的分辨率減輕GPU的負擔
Overdraw
在同一幀中多次繪制同一個像素會發(fā)生Overdraw
默認渲染管線可以在Scene視圖切換場景繪制模式查看Overdraw視圖,在這個視圖模式下,半透明物體會顯得比不透明物體更亮一些

URP渲染管線可在Rendering Debugger(Window → Analysis → Rendering Debugger)視圖開啟Overdraw選項,查看Overdraw視圖



內(nèi)存帶寬優(yōu)化
選擇合適的紋理尺寸與壓縮格式
較小的紋理大小可以減少GPU對紋理的寫入和讀取操作,同時應該保證紋理的大小為2的次冪,這樣可以加快GPU的讀取速度
合適的壓縮格式可以減小紋理文件大小,從而降低對GPU內(nèi)存帶寬的需求
使用LOD
Lod Group組件可以將網(wǎng)格分為不同的細節(jié),當攝像機離的近時顯示高精度模型,離得遠顯示低精度模型
減少Shader復雜度
避免復雜的運算
避免使用高精度浮點數(shù)進行計算
避免類型轉(zhuǎn)換
避免使用if,switch分支語句
減少紋理采樣次數(shù)
控制場景中激活相機的數(shù)量
Unity中每個激活的相機都會將自身的視錐體信息發(fā)送給渲染管線,渲染管線根據(jù)這些信息對場景中的物體進行視錐體剔除的操作,如果有攝像機處于激活狀態(tài),同時這個相機看到的內(nèi)容不出現(xiàn)在游戲畫面中,那這時去計算這個相機的視錐體信息就會造成無意義的浪費

后處理
只要開啟了Post Processing選項,即使不做任何處理也會產(chǎn)生額外的開銷

不同的后處理效果會有不同的開銷
幾乎無開銷
通道混合器(Channel Mixer)
顏色調(diào)整(Color Adjustments)
顏色曲線(Color Curves)
提升,伽馬,增益(Lift Gamma Gain)
陰影,中間調(diào),高光(Shadows Midtones Highlighrts)
色調(diào)分離(Split Toning)
白平衡(White Balance)
暗角(Vignette)
膠片顆粒(Film Gtain)
色散(Chromatic Aberration)
會產(chǎn)生額外的Draw Call(對Draw Call的影響由高到低排列)
輝光(Bloom)
景深(Depth Of Field)
運動模糊(Motion Blur)
帕尼尼投影(Panini Projection)