1)為什麼Unity裡的變體數和UWA工具測出來的不一樣
2)使用TextureArray為什麼會導致L1 Cache Miss率變高
3)Gfx.PresentFrame耗時異常高
4)AO方案中哪個更適合移動端
這是第412篇UWA技術知識分享的推送,精選了UWA社群的熱門話題,涵蓋了UWA問答、社群帖子等技術知識點,助力大家更全面地掌握和學習。
UWA社群主頁:community.uwa4d.com
UWA QQ群:793972859
Shader
Q:為什麼Unity裡的變體數和UWA工具測出來的變體數不一樣呢?
A:shader_feature在編輯器中預覽只會保留第一個關鍵字的變體,所以會少顯示很多;但實際進入包體的是UWA AssetBundle工具顯示的量。
順便一提,透過變體收集的方式可以讓引擎在打包的時候自動去掉一部分shader_feature關鍵字導致的變體組合,節省部分記憶體。
該回答由UWA提供,歡迎大家轉至社群交流:
https://answer.uwa4d.com/question/674d1de4682c7e5cd61bf9b3
GPU
Q:做地形的時候用的ID圖的方案,將所有的地表貼圖做成了TextureArray,Xcode測試效能。發現TextureArray導致Texture L1快取的Cache Miss率高達77%,且不用就不高了,裝置是iPad Air 5。
請問是相鄰畫素的TextureArray的ID不同導致Cache Miss嗎?
針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/674d2240682c7e5cd61bf9b6
Rendering
Q:部分安卓機型上,某個東西顯示出來的時候,Gfx.PresentFrame耗時非常高。
以下是真機測試、多執行緒渲染下的截圖:
目前還沒找到根本原因,但實驗發現:
1. 掛掉出問題的Shader的Clip函式,就不會有問題。
2. 刪掉工程內的變體收集器,也不會有問題(新版本和老版本相關的區別就是新收集了一波變體,然後打進了Bundle裡)。
目前解決方案就是把變體收集器刪了,因為現在就沒做Shader預熱,所以收集器其實沒用到。
請問其本質原因是什麼?
針對以上問題,有經驗的朋友歡迎轉至社群交流:
https://answer.uwa4d.com/question/674ab5a93d306f3e9d594db6
Rendering
Q:請問以下AO方案中,哪些適合移動端呢?
SSAO、SSDO、HBAO+、GTAO、MXAO、LSAO、VXAO、DeepAO、以及上一年Meta的PSAO。
A:一般動態物體就是烘培AO,也就是單個物體有,靜態物體就是LightmapAO也是烘培的,移動端從效能考慮大多還是走烘焙。
只有那些大世界的場景實在是太大才會想各種辦法去設計一個GI效果,比如SSAO去湊整個環境的AO效果。
感謝南瓜@UWA問答社群提供了回答
封面圖來源於網路
今天的分享就到這裡。生有涯而知無涯,在漫漫的開發週期中,我們遇到的問題只是冰山一角,UWA社群願伴你同行,一起探索分享。歡迎更多的開發者加入UWA社群。
UWA官網:www.uwa4d.com
UWA社群:community.uwa4d.com
UWA學堂:edu.uwa4d.com
官方技術QQ群:793972859