如何運(yùn)用 ADPF 技術(shù)在手機(jī)上以更省電的方式享受卓越圖形效果?
作者:Arm 戰(zhàn)略與生態(tài)部游戲內(nèi)容開發(fā)工程師 Patrick Wang
本文引用地址:http://2s4d.com/article/202411/464791.htm什么是 ADPF?
安卓動態(tài)性能框架 (Android Dynamic Performance Framework, ADPF) 技術(shù)可為開發(fā)者提供更多的設(shè)備信息,使其能夠在應(yīng)用的整個生命周期內(nèi)把控性能穩(wěn)定性與資源使用。移動設(shè)備的熱信息至關(guān)重要,此前開發(fā)者需通過每秒幀數(shù) (FPS) 與電池耗電來推斷設(shè)備的發(fā)熱情況。有了實時的熱信息細(xì)節(jié),開發(fā)者在電池過熱且系統(tǒng)開始被動地節(jié)制性能前,就能主動調(diào)整應(yīng)用內(nèi)容來減緩熱量積聚。今年稍早,Google 在 GitHub 上發(fā)布了 ADPF 的虛幻引擎插件,開發(fā)者可以立即啟用 ADPF 提供的功能。一經(jīng)成功安裝,應(yīng)用在預(yù)設(shè)情況下會依據(jù)熱量指標(biāo)調(diào)用虛幻引擎中的 SetQualityLevels() 函數(shù)來切換可擴(kuò)展層級,并且動態(tài)改變應(yīng)用的圖形設(shè)定,以便在運(yùn)行階段配合開發(fā)者設(shè)定的各種層級。
《Mori 林間鼯語》演示
《Mori 林間鼯語》是一款 Arm 內(nèi)部演示,通過一只在森林中四處奔跑與滑翔的西伯利亞飛鼠,展現(xiàn)最新 Arm Immortalis GPU 的性能與特性。這項計劃運(yùn)用虛幻引擎 5.3 進(jìn)行開發(fā)。游戲開始時飛鼠在樹洞里休息,而 Lumen 則模擬全局照明以渲染真實的光線與陰影變化。點擊開始之后,飛鼠會進(jìn)入樹葉與地形細(xì)節(jié)豐富呈現(xiàn)的針葉林中,而玩家的目的則是尋找隱藏的寶藏。森林場景透過 Vulkan 著色器模型5 (Vulkan Shader Model 5),在移動設(shè)備上顯示出基于物理表現(xiàn)的渲染 (PBR) 材質(zhì)與數(shù)百萬個三角形,而高質(zhì)量的動態(tài)模糊則強(qiáng)化了圖形,達(dá)到游戲主機(jī)級別的品質(zhì)。
圖:Mori 演示的樹洞內(nèi)部場景與森林戶外場景
這款游戲有四個級別的圖形質(zhì)量可選:頂級、高級、中級與低級。游戲會根據(jù)選定的級別設(shè)定各種圖形參數(shù),例如樹葉、視距、陰影、后期與紋理。以下的示意圖則顯示在每個設(shè)定下對應(yīng)的視覺表現(xiàn)。
圖:Mori 演示中四種圖形質(zhì)量的擴(kuò)展性
你可以觀察到在“頂級”設(shè)定中,有著顯而易見的景深效果。把設(shè)定降至“高級”時,右邊的灌木在細(xì)節(jié)程度有些調(diào)整。設(shè)成“中級”時,陰影會比較粗略,而屏幕的百分比也會引起鋸齒現(xiàn)象?!暗图墶钡脑O(shè)定會導(dǎo)致光線、樹葉效果與清晰度大幅下降。整體來說,最好是把圖形質(zhì)量設(shè)定保持在“中級”及以上,玩家方可充分享受游戲,且不犧牲視覺體驗。
在 vivo X90S 與 X100 手機(jī)上進(jìn)行 30 分鐘的游戲測試期間,玩家并未調(diào)整圖形設(shè)定,全程以“頂級”質(zhì)量體驗游戲。如同下圖所示,Headroom 快速累積,而幀率則大幅波動。手機(jī)在五分鐘后會過熱,并自動節(jié)制運(yùn)行頻率,導(dǎo)致幀率下降。十分鐘之后,Headroom 累積至超過 90%,并引發(fā)另一波頻率與幀率下降。
圖:應(yīng)用 ADPF 前的性能與設(shè)備狀態(tài)圖
擴(kuò)展性方面的配置
在安裝并啟用 ADPF 后,游戲會根據(jù)預(yù)設(shè)的 Headroom 尺度切換圖形設(shè)定。在“頂級”設(shè)定中,陰影紋理的尺寸、距離尺度與質(zhì)量都會設(shè)在最高值,后處理的屏幕百分比與光暈質(zhì)量也一樣在最高等級。在“高級”與“中級”配置文件中,陰影紋理的尺寸會減半,質(zhì)量會相繼降低,后處理的屏幕百分比則分別降至 80 與 60,光暈質(zhì)量也會相應(yīng)下降?!暗图墶眲t把一切設(shè)定都降至最低,此時陰影的最大分辨率變成 512,而距離尺度則會減半。后處理的屏幕百分比降為 50,光暈質(zhì)量變成 1,至于其它所有參數(shù)則維持在虛幻引擎預(yù)設(shè)的設(shè)定值。
如下圖顯示,在自動調(diào)整圖形設(shè)定后,游戲的 Headroom 顯著地穩(wěn)定下來,而 X100 與 X90S 手機(jī)分別維持每秒 60 與約 55 的幀數(shù)。經(jīng)過更仔細(xì)地檢視后,我們發(fā)現(xiàn)游戲為了維持每秒幀數(shù)并管理發(fā)熱情況,會快速切換至最低級別的質(zhì)量設(shè)定。盡管這能維持不錯的性能,但長期使用低質(zhì)量的設(shè)定并不理想。
圖:應(yīng)用 ADPF 后的性能與設(shè)備狀態(tài)圖
開發(fā)者在擴(kuò)展性方面的更多嘗試
我們留意到當(dāng)插件中的默認(rèn) Headroom 尺度值超出或降至閾值以下時,它會立即切換圖形設(shè)置。當(dāng)圖形質(zhì)量降低,并成功降溫后,圖形質(zhì)量可能快速提升,而導(dǎo)致影像出現(xiàn)閃爍。因此,我們把切換邏輯移到游戲?qū)优赃叺目刂茊卧尦叨戎底兂煽梢哉{(diào)整,并確保升溫與降溫不會共享同樣的數(shù)值,以便使圖形質(zhì)量降級有足夠的時間反應(yīng)對溫度造成的影響。
圖:Mori 演示中集成 ADPF 的用戶界面
除了上述提到的調(diào)整,開發(fā)者不僅可以修改 AndroidScalability.ini 文件中的參數(shù),還可以在游戲?qū)訛閳D形設(shè)定的切換增加回調(diào)。如此一來,我們可以通過調(diào)整如 foliage.MinLOD、剔除距離、最大繪制距離、每秒幀數(shù)鎖定等控制臺指令,允許額外的控制選項。
表:推薦的各圖形等級的高級設(shè)定
圖:Blueprint 中每個圖形等級的高級設(shè)定實例
如下圖顯示,有了更多詳細(xì)的控制選項來維持可見的視覺質(zhì)量,圖形設(shè)定的降幅最大不會超過“中級”。性能與溫度也穩(wěn)定下來,“頂級”設(shè)定的幀率固定在每秒 60 幀,“高級”設(shè)定的幀率固定在每秒 45 幀,而“中級”與更低設(shè)定的幀率則為每秒 30 幀。
圖:應(yīng)用帶有額外配置的 ADPF 后的性能與設(shè)備狀態(tài)圖
總結(jié)
ADPF 讓開發(fā)者可以依據(jù)手機(jī)的情況精細(xì)調(diào)整并控制圖形質(zhì)量,有效協(xié)助保持更佳的游戲體驗。它可以預(yù)防手機(jī)過熱,并應(yīng)對耗電問題,確保整個游戲過程的視覺效果令人滿意,同時也不致于讓玩家的電池快速耗用完畢。啟用了 ADPF 后,我們從 vivo X90S 與 vivo X100 的最后電池放電曲線看到較為緩和的降幅,這代表能耗有所改善。我們建議開發(fā)者親身嘗試這個簡易且快速的整合流程,僅需少量時間就能顯著提升游戲質(zhì)量。
推薦資源:
[1] https://developer.android.com/games/optimize/adpf
[2] https://developer.android.com/games/engines/unreal/unreal-adpf
* 本文為 Arm 原創(chuàng)文章,轉(zhuǎn)載請留言聯(lián)系獲得授權(quán)并注明出處。
評論