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