徑向模糊的掉幀問(wèn)題
渲染遷移到 URP 的工作基本差不多了瓣铣,不過(guò)昨天跑包的時(shí)候遇到一個(gè)問(wèn)題答朋,在播放 徑向模糊 效果的時(shí)候,幀率 下降得很厲害棠笑,并且UI也跟著場(chǎng)景一起模糊了梦碗,如下圖:
這個(gè)問(wèn)題在原先的 標(biāo)準(zhǔn)管線 下并不存在。
原因
簡(jiǎn)單檢查了一下原因蓖救,發(fā)現(xiàn) CameraStack 上的所有相機(jī)都執(zhí)行了徑向模糊這個(gè) RenderFeature洪规,包括 UI相機(jī),我們 CameraStack 的設(shè)置如下圖:
看了一下 URP 的代碼循捺,發(fā)現(xiàn)無(wú)論是渲染 Base相機(jī) 相機(jī)還是渲染 Overlay相機(jī)斩例,最終都會(huì)走到 RenderSingleCamera 這個(gè)函數(shù),如下圖:
RenderSingleCamera 的主要流程如下:
上圖的 Setup 流程會(huì)執(zhí)行到 RenderFeature 的 AddRenderPasses 函數(shù)从橘,而 Execute 流程會(huì)執(zhí)行到 RenderPass 的 Execute 函數(shù)念赶。
由此可見(jiàn),如果我們不對(duì)相機(jī)進(jìn)行區(qū)分恰力,所有相機(jī)都會(huì)執(zhí)行一遍 徑向模糊 這個(gè) RenderFeature叉谜,這就導(dǎo)致了在播放這個(gè)效果時(shí)幀率顯著下降,同時(shí)UI也跟著糊掉了...
修正
修正方式很簡(jiǎn)單踩萎,我們?cè)?RenderFeature 的 AddRenderPasses 函數(shù)中對(duì)相機(jī)做一個(gè)過(guò)濾即可正罢,代碼如下:
當(dāng)然,我們也可以對(duì)不同相機(jī)設(shè)置不同的 Renderer,不過(guò)這里我不想維護(hù)多個(gè) Renderer翻具,所以還是直接代碼加個(gè)判斷就好了履怯。
修正后一切正常了:
個(gè)人主頁(yè)
本文的個(gè)人主頁(yè)鏈接:https://baddogzz.github.io/2020/09/28/RenderFeature-Repeat-Bug/。
好了裆泳,拜拜叹洲!