![]()
這是第472篇UWA技術(shù)知識(shí)分享的推送,精選了UWA社區(qū)、UWA AI問(wèn)答的熱門話題等技術(shù)知識(shí)點(diǎn),助力大家更全面地掌握和學(xué)習(xí)。
UWA社區(qū)主頁(yè):community.uwa4d.com
UWA QQ群:793972859
本期目錄:
GPU Clocks正常但帶寬高怎么辦
FixedUpdate一幀調(diào)兩次,這個(gè)"追幀"真的有必要嗎
本次推送的實(shí)戰(zhàn)案例來(lái)自于使用UWA服務(wù)的項(xiàng)目的真實(shí)且典型的問(wèn)題。UWA將關(guān)鍵線索、定位路徑與處理建議整理成了可復(fù)用的案例筆記,便于大家快速對(duì)照、排查自身項(xiàng)目中的同類問(wèn)題。
實(shí)戰(zhàn)案例
Q:在我們的項(xiàng)目中,用UWA GOT Online測(cè)了一個(gè)新坐騎場(chǎng)景用例的報(bào)告,單看GPU Clocks數(shù)據(jù)信息,表現(xiàn)還可以,基本沒碰紅線,按理說(shuō)不太像是典型的GPU算力瓶頸。但問(wèn)題是,帶寬這邊還是有點(diǎn)高。像這種情況,后面到底該先排查什么?是繼續(xù)盯Fragment、三角形這些指標(biāo),還是該往別的方向看?
![]()
A: 這個(gè)問(wèn)題其實(shí)挺典型的,一般都會(huì)下意識(shí)覺得:GPU指標(biāo)有波動(dòng),那是不是面數(shù)高了、Shader重了、像素太多了。就比如說(shuō)Clocks,它是像素?cái)?shù)量乘以Shader復(fù)雜度,只看像素?cái)?shù)量,其實(shí)不一定能反映Clocks是特別高還是特別低,如果Clocks本身已經(jīng)沒超,那說(shuō)明至少?gòu)摹癎PU算力被打滿”這個(gè)角度看,當(dāng)前這個(gè)場(chǎng)景在這檔設(shè)備上問(wèn)題不算大,F(xiàn)ragment Shader影響就比較小了,可以先不用關(guān)注。真往下查,還是要回到帶寬到底是被誰(shuí)拉高了的角度去查。
![]()
帶寬壓力一般會(huì)去從下面這兩個(gè)角度進(jìn)行考慮,一個(gè)是紋理,另一個(gè)是RT(頂點(diǎn)也可能有一定影響,不過(guò)當(dāng)前報(bào)告中頂點(diǎn)的影響比較小)。
1. 紋理方面:
第一個(gè)紋理,一般是考慮紋理的壓縮,比如說(shuō)是ASTC 4×4、6×6或者8×8,原理就是你壓得越厲害,帶寬就肯定更小。
再一個(gè)要考慮3D紋理是不是開了Mipmap?假設(shè)用來(lái)做3D渲染的,如果不開,影響會(huì)比較大。而開啟Mipmap的影響會(huì)比壓縮大很多,因?yàn)椴婚_Mipmap,它很容易Cache Miss,而打開,它就有緩存,可以從很大程度上減少帶寬的開銷。
還有一個(gè)就是各向異性。各向異性只會(huì)在那種視角很小的情況下,比如一個(gè)很長(zhǎng)的地形,鏡頭拉得很遠(yuǎn),看到比較遠(yuǎn)的地方會(huì)有一些毛刺,開各向異性才比較有收益。大部分情況下開各向異性其實(shí)沒有什么好處,它只會(huì)增加帶寬。
2. RT方面:
對(duì)于RT來(lái)說(shuō),影響帶寬的主要因素是分辨率。RT分辨率越大,F(xiàn)ragment Shader數(shù)量就越多,每多畫一個(gè)像素就要做紋理讀取、Shader計(jì)算、寄存器存取等步驟,帶寬就會(huì)越多。
再有,RT分辨率還會(huì)影響Load/Store次數(shù)。分辨率越大,要Load和Store的像素內(nèi)容就會(huì)越多。如果能把分辨率降一下,帶寬收益會(huì)非常高,順帶著Clocks也會(huì)更低。
![]()
再回到我們GOT Online的報(bào)告上來(lái),從報(bào)告來(lái)看,分辨率影響最大。因?yàn)榭雌饋?lái)RT的格式是比較正常的,穿插的也不是特別多,看上去只有一個(gè)Bloom的后期處理。所以還是分辨率的影響最大,如果用這個(gè)原始分辨率去做渲染,確實(shí)渲染的像素?cái)?shù)量會(huì)非常多,切RT的時(shí)候,或者說(shuō)Load/Store的時(shí)候也會(huì)有比較大的影響。
UWA以往優(yōu)化的常規(guī)做法是把RT分辨率控制在1920×1080這個(gè)面積,約200萬(wàn)像素,而格式選32位而非64位。
實(shí)戰(zhàn)案例
Q1:項(xiàng)目是幀同步,主要邏輯放在FixedUpdate里。UWA GOT Online報(bào)告顯示,有些幀會(huì)出現(xiàn)FixedUpdate調(diào)用兩次的情況,而且一旦跑兩次,耗時(shí)明顯就上去了。這個(gè)“兩次調(diào)用”到底有沒有必要?
![]()
A:一般追幀是為了保證物理模擬的準(zhǔn)確性,比如子彈速度很快,如果不追幀,可能中間穿過(guò)去的墻就擋不住它了。但像這個(gè)項(xiàng)目的情況,應(yīng)該不太會(huì)需要非常高速的移動(dòng)或高速判定,所以理論上來(lái)說(shuō),觸發(fā)兩次是沒有太多意義的,就需要做一下限制,可以在參數(shù)上做調(diào)整,就比如說(shuō)Time里面的兩個(gè)參數(shù),一個(gè)是每一幀的上限,還有一個(gè)是每間隔多少時(shí)間觸發(fā)一次,我們可以把每一幀的上限,調(diào)得更小一點(diǎn),或者說(shuō)把間隔調(diào)得更大一點(diǎn)。
Q2:但項(xiàng)目中是邏輯幀,間隔調(diào)得更大點(diǎn)可能就不合適了。
A:如果參數(shù)不好調(diào),可以在代碼里加一個(gè)硬核的限制。比如給它一個(gè)變量,判斷這一幀有沒有更新過(guò),然后把更新過(guò)的變量變成True,第二次調(diào)用的時(shí)候因?yàn)樽兞渴荰rue就Return。這樣不論上限設(shè)多少次,對(duì)這個(gè)游戲來(lái)說(shuō),F(xiàn)ixedUpdate最多只調(diào)一次。
無(wú)論是社區(qū)里開發(fā)者們的互助討論,還是AI基于知識(shí)沉淀的快速反饋,核心都是為了讓每一個(gè)技術(shù)難題都有解、每一次踩坑都有回響。本期分享分別來(lái)自UWA AI問(wèn)答和UWA問(wèn)答社區(qū),希望這些從真實(shí)開發(fā)場(chǎng)景中提煉的經(jīng)驗(yàn),能直接幫你解決當(dāng)下的技術(shù)卡點(diǎn),也讓你在遇到同類問(wèn)題時(shí),能更高效地找到破局方向。
封面圖來(lái)源于網(wǎng)絡(luò)
今天的分享就到這里。生有涯而知無(wú)涯,在漫漫的開發(fā)周期中,我們遇到的問(wèn)題只是冰山一角,UWA社區(qū)愿伴你同行,一起探索分享。歡迎更多的開發(fā)者加入U(xiǎn)WA社區(qū)。
UWA官網(wǎng):www.uwa4d.com
UWA社區(qū):community.uwa4d.com
UWA學(xué)堂:edu.uwa4d.com
點(diǎn)擊下方名片關(guān)注我們,將我設(shè)為星標(biāo),及時(shí)接收小編每日推送哦,性能優(yōu)化不迷路~
近期精彩回顧
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.