![]()
這是第457篇UWA技術(shù)知識(shí)分享的推送,精選了UWA社區(qū)、UWA AI問答的熱門話題等技術(shù)知識(shí)點(diǎn),助力大家更全面地掌握和學(xué)習(xí)。
UWA社區(qū)主頁:community.uwa4d.com
UWA QQ群:793972859
本期目錄:
哪些因素和參數(shù)會(huì)影響B(tài)loom的性能開銷
- 為何Scripting Threads的 線程數(shù)量異常
From UWA AI 問答
Q:哪些因素和參數(shù)會(huì)影響bloom的性能開銷?
A:Bloom(泛光)的性能開銷主要來自GPU帶寬、計(jì)算量與多級(jí)采樣次數(shù),其關(guān)鍵影響因素和可調(diào)參數(shù)如下:
一、核心性能影響因素
1. 采樣分辨率與下采樣層級(jí)
Bloom默認(rèn)從1/2渲染分辨率開始逐級(jí)下采樣(如Blur1–Blur5),分辨率越低(如1/16)、層級(jí)越多,帶寬越低但模糊質(zhì)量下降;反之,高分辨率采樣(如1/2)顯著增加紋理讀取帶寬和顯存吞吐壓力。
移動(dòng)端建議從1/4或1/8起始,減少首層采樣開銷。
2. BloomQuality級(jí)別
r.BloomQuality=5(默認(rèn))啟用全部5層模糊+高質(zhì)量卷積,開銷最大;=1~3可禁用部分層級(jí)或使用簡化高斯,大幅降低GPU耗時(shí)。
3. ScreenPercentage控制卷積精度
r.Bloom.ScreenPercentage=50表示FFT卷積在50%分辨率下執(zhí)行;提高該值(如至100%)會(huì)線性增加計(jì)算與帶寬,需謹(jǐn)慎權(quán)衡。
4. 泛光卷積(Convolution)啟用
啟用Bloom Convolution會(huì)觸發(fā)FFT卷積運(yùn)算,依賴全分辨率內(nèi)核紋理+額外緩沖區(qū)(r.Bloom.ConvolutionBuffer),顯著提升GPU計(jì)算與顯存帶寬壓力,僅推薦高端設(shè)備或離線渲染使用。
5. 后處理鏈路疊加效應(yīng)
Bloom常與Tonemapping、Depth of Field、Motion Blur等串聯(lián),導(dǎo)致多次全屏紋理讀寫。尤其在移動(dòng)平臺(tái),多Pass后處理易引發(fā)帶寬瓶頸(實(shí)測可達(dá)總GPU帶寬的20%+)。
二、關(guān)鍵可調(diào)控制臺(tái)變量(Unreal Engine)
![]()
三、優(yōu)化建議
? 優(yōu)先降級(jí)BloomQuality+ScreenPercentage,比關(guān)閉Bloom更能平衡畫質(zhì)與性能;
? 使用Stat GPU和Stat RHI定量定位Bloom耗時(shí)(查看PostProcessBloom階段);
? 避免在低端機(jī)啟用Convolution或Dirt Mask(額外紋理采樣+混合);
結(jié)合r.VSync與幀率限制,防止Bloom在高幀率下反復(fù)重采樣。
注:Bloom對(duì)GPU溫度與功耗影響顯著 —— 實(shí)測10GB/s帶寬可貢獻(xiàn)約1000mW功耗(占整機(jī)20%+),是移動(dòng)端發(fā)熱主因之一。
分享鏈接 :
https://www.uwa4d.com/main/uwa-shared.html?shareId=f3f99f69-7e55-4af8-9a58-2531d33ec39a
From UWA AI 問答
Q:請教個(gè)問題, 我們有用到線程池, 我在Profiler的時(shí)候看到在Scripting Threads里面有幾十個(gè)的線程顯示, 這個(gè)是正常的嗎?
A:是不正常的,需立即排查。
Unity的Profiler中出現(xiàn)大量名稱為 的Scripting Threads,通常表明:
?線程未正確命名或未注冊:Unity默認(rèn)對(duì)System.Threading.ThreadPool中的線程不自動(dòng)命名,Profiler無法識(shí)別其用途,統(tǒng)一顯示為(或空名+編號(hào))。
??線程泄漏風(fēng)險(xiǎn)高:若線程池長期持有大量閑置線程(尤其在Unity 2019 – 2022版本中),可能因ThreadPool.SetMinThreads調(diào)用不當(dāng)、異步任務(wù)未完成/未釋放、或Task.Run+長阻塞操作導(dǎo)致線程堆積。
?非Unity管理線程被誤納入Profiler視圖: 線程無法通過Profiler.BeginThreadProfiling()注冊,說明它們未被主動(dòng)追蹤,也意味著你無法在Timeline中定位其耗時(shí)來源。
建議動(dòng)作:
檢查是否濫用Task.Run或ThreadPool.QueueUserWorkItem;優(yōu)先改用Unity Job System或Unity.Collections.LowLevel.Unsafe異步方案。
確認(rèn)無new Thread(...).Start()后未調(diào)用Profiler.EndThreadProfiling()(否則資源泄漏且線程殘留)。
在Editor中啟用Call Stacks+Deep Profiling,篩選GC Alloc/CPU高耗時(shí)幀,定位創(chuàng)建線程的調(diào)用棧。
使用UWA GOT Online的Mono/Threading模塊,查看線程數(shù)趨勢與存活時(shí)間,確認(rèn)是否隨游戲時(shí)長持續(xù)增長。
注:Unity官方不鼓勵(lì)直接使用.NET線程池進(jìn)行高頻短任務(wù)調(diào)度 —— Job System才是跨平臺(tái)、可Profiler可視化的首選。
分享鏈接 :
https://www.uwa4d.com/main/uwa-shared.html?shareId=3ba6d84d-9e4e-4fb2-a66f-f6fdc562b15f
無論是社區(qū)里開發(fā)者們的互助討論,還是AI基于知識(shí)沉淀的快速反饋,核心都是為了讓每一個(gè)技術(shù)難題都有解、每一次踩坑都有回響。本期分享分別來自UWA AI問答和UWA問答社區(qū),希望這些從真實(shí)開發(fā)場景中提煉的經(jīng)驗(yàn),能直接幫你解決當(dāng)下的技術(shù)卡點(diǎn),也讓你在遇到同類問題時(shí),能更高效地找到破局方向。
封面圖來源于網(wǎng)絡(luò)
今天的分享就到這里。生有涯而知無涯,在漫漫的開發(fā)周期中,我們遇到的問題只是冰山一角,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.