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