Android平臺(tái)壓縮紋理ETC2 VS ASTC

1)Android平臺(tái)壓縮紋理ETC2 VS ASTC

2)Unity使用Profiler和UWA內(nèi)存差異巨大

3)Unity 2020 IL2CPP打包異常

4)TouchScreenKeyboardWrap在PC模式下打包報(bào)錯(cuò)


這是第301篇UWA技術(shù)知識(shí)分享的推送濒旦。今天我們繼續(xù)為大家精選了若干和開發(fā)贡避、優(yōu)化相關(guān)的問題,建議閱讀時(shí)間10分鐘鹦聪,認(rèn)真讀完必有收獲。

UWA 問答社區(qū):answer.uwa4d.com

UWA QQ群2:793972859(原群已滿員)

Texture

Q:1.2022年在Android平臺(tái)的ASTC支持度怎么樣了惑朦,預(yù)計(jì)2023年上的游戲能不能上ASTC乖坠?

1.1 跟iOS統(tǒng)一方便處理

1.2 更多選擇控制壓縮比例 44->1212

1.3 效果比ETC2更好

1.4 ASTC有沒有什么坑,看到有說華為部分機(jī)器不支持锰悼,會(huì)黑屏

網(wǎng)上只找到下面這個(gè)數(shù)據(jù)柳骄,2020年9月,ASTC 77%箕般。

https://developer.android.google.cn/guide/app-bundle/asset-delivery/texture-compression?hl=zh-cn

2.我理解的壓縮紋理是CPU不用解壓耐薯,直接傳輸給GPU,直接GPU硬件采樣隘世。相對于采樣ARGB32格式可柿,采樣壓縮紋理的消耗是不是更高點(diǎn),還是可以忽略不計(jì)丙者?

3.移動(dòng)平臺(tái)紋理是否是2份复斥?CPU一份,GPU顯存一份械媒,還是共享同一份目锭?

4.ASTC/ETC2的壓縮紋理尺寸是否需要2的冪?網(wǎng)上有些說法是非2的冪紋理加載到顯存的時(shí)候會(huì)進(jìn)行轉(zhuǎn)換成2的冪纷捞,轉(zhuǎn)換過程耗時(shí)痢虹,會(huì)導(dǎo)致卡頓。

https://blog.csdn.net/linxinfa/article/details/108827197

我做過以下測試:

1.AssetBundle內(nèi)的紋理尺寸是原始尺寸主儡。

2.Mumu模擬器+GPA紋理尺寸是原始尺寸奖唯,格式轉(zhuǎn)換成了ARGB32。

3.Adreno+高通真機(jī)糜值,目前還在測試丰捷,找的機(jī)器連不上Adreno Profiler。

A1:我2017年立項(xiàng)的時(shí)候跟你一樣處理過這個(gè)問題寂汇,我當(dāng)時(shí)的策略是主包使用ASTC病往,啟動(dòng)更新的時(shí)候判斷玩家是否支持ETC2,不支持的話下載ETC2版本的AssetBundle資源骄瓣。資源在線上是完全獨(dú)立的2份資源(打包的時(shí)候每次打包2份獨(dú)立資源)停巷。當(dāng)年是為了海外做的這個(gè)兼容。經(jīng)過這幾年各個(gè)大廠的洗禮,直接ASTC就行了畔勤。如果你們的游戲類型一定要下探到那么老的機(jī)器蕾各,就像我那種雙保險(xiǎn)的做法。

1. 黑屏的問題沒遇到硼被。ETC2反而因?yàn)閴嚎s算法不好示损,部分顏色失真,導(dǎo)致你在做部分PBR效果的時(shí)候嚷硫,會(huì)有問題检访。

2. 需要硬件支持,就是因?yàn)椴荒苡肅PU去處理這種軟解壓跟軟壓縮仔掸,可以忽略脆贵。

3. 移動(dòng)平臺(tái)GPU跟CPU是共享一個(gè)內(nèi)存,但是GPU會(huì)獨(dú)立開辟一份內(nèi)存起暮,所以會(huì)有2份卖氨。開啟了Mipmap的情況下不是單純的2份相同內(nèi)存,所以還有Texture Streaming這種方式來減少貼圖內(nèi)存占用负懦。

4. ASTC不需要筒捺。

至于你的測試:

Mumu模擬器在《楚留香》出來的時(shí)候就支持ASTC,后面吃雞游戲風(fēng)靡的時(shí)候更是所有模擬器都支持了纸厉,不支持的都要被淘汰系吭。這塊可以不用考慮。如果不是單獨(dú)為了發(fā)行模擬器渠道颗品,大部分情況下肯尺,發(fā)行公司都是要求禁用模擬器登錄的。

感謝簡單就好@UWA問答社區(qū)提供了回答

A2:1. 關(guān)于ASTC的支持度躯枢,題主查的數(shù)據(jù)本身可以作為參考则吟,但還需要結(jié)合考慮項(xiàng)目發(fā)行的市場。比如實(shí)際上對于中國市場而言ASTC的覆蓋率已經(jīng)非常高锄蹂,而對于東南亞南美等海外市場則還要酌情氓仲;

2. 常見的壓縮紋理是直接降低紋理資源質(zhì)量,以質(zhì)量換性能的行為得糜,它不會(huì)在GPU端重新解壓縮敬扛,相反在內(nèi)存、帶寬等方面都有所優(yōu)化掀亩;

3. 只有當(dāng)紋理資源需要運(yùn)行時(shí)修改、開啟了Read/Write Enable選項(xiàng)時(shí)欢顷,才會(huì)向CPU復(fù)制一份槽棍,否則就只有GPU的一份;

4. ASTC對分辨率沒有需求;ETC2要求分辨率為4的倍數(shù)炼七,而非2的次冪缆巧;特別地,不論是ASTC還是ETC2豌拙,如果開啟了Mipmap陕悬,則必須是2的次冪,否則同樣會(huì)壓縮失敗按傅。

感謝Faust@UWA問答社區(qū)提供了回答捉超,歡迎大家轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/62a15f62b87a45735173440e

Memory

Q:Unity使用Profiler和UWA內(nèi)存差異為何差別這么大?

A:Profiler顯示的是引擎真實(shí)的分配內(nèi)存唯绍,但這個(gè)內(nèi)存在OS中并不僅僅是這些拼岳,它會(huì)分配更多的內(nèi)存Page,而且不同的OS版本况芒,不同的廠商分配的都不一樣惜纸。

同時(shí),OS層還會(huì)啟動(dòng)很多自身的Lib绝骚,比如渲染相關(guān)的庫耐版、文件加載的加速庫等等,這些內(nèi)存的分配压汪,都是Unity統(tǒng)計(jì)不到的粪牲。

除此之外,還有虛擬機(jī)的第三方庫蛾魄,比如Lua等虑瀑,這些的內(nèi)存是會(huì)被統(tǒng)計(jì)到PSS中,但不會(huì)被統(tǒng)計(jì)到Profiler中滴须,游戲啟動(dòng)時(shí)的各種渠道庫舌狗,也是如此。

所以扔水,PSS比Reserved大是正常的痛侍。

但如果你發(fā)現(xiàn)PSS比Reserved大了快2倍了,那一定是大家某些庫的內(nèi)存分配過大魔市,比如Lua主届、Wwise或其他大家使用的第三方庫。

感謝芭妮妮@UWA問答社區(qū)提供了回答待德,歡迎大家轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/62a064d0b87a457351727eee

Android

Q:Unity版本2020.2.3君丁,在IL2CPP打包Android的編譯過程報(bào)錯(cuò),因?yàn)轫?xiàng)目中用的Puerts框架将宪,需要生成很多Wrap類绘闷。如果打包時(shí)勾選Split Application Binary橡庞,也用OBB分包情況下,使用Unity可以直接導(dǎo)出到APK和OBB印蔗。但如果不勾選扒最,編譯會(huì)報(bào)錯(cuò)。

同樣不勾選Split Application Binary华嘹,在Build時(shí)吧趣,Export Project導(dǎo)出到AndroidStudio工程再生成APK也不會(huì)有問題。請問有遇到過這樣的問題嗎耙厚?

Exception: Unity.IL2CPP.Building.BuilderFailedException: D:\DevEnvironment\android-ndk-r19\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++ @“C:\Users\Administrator\AppData\Local\Temp\tmp30FE.tmp” -o “D:\workroot\Crusher\Crusher\Library\il2cpp_android_arm64-v8a\il2cpp_cache\linkresult_B322E1396ADEEC5519CBECC8D02E669C\libil2cpp.so” -shared -Wl,-soname,libil2cpp.so -Wl,–no-undefined -Wl,-z,noexecstack -Wl,–gc-sections -Wl,–build-id -stdlib=libc++ -static-libstdc++ -target aarch64-linux-android21 -Wl,–wrap,sigaction “D:\Softwares\Unity2020.2.3f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Development\StaticLibs\arm64-v8a\baselib.a” -llog -rdynamic -fuse-ld=bfd.exe

報(bào)錯(cuò)詳情可戳原問答查看强挫。

A1:嘗試增加JVM的內(nèi)存,或者指定一個(gè)NDK版本颜曾。

感謝廖武興@UWA問答社區(qū)提供了回答

A2:推測可能是靜態(tài)數(shù)組太大了纠拔,編譯器的內(nèi)存模型不夠》汉溃可以自己添加IL2CPP的編譯選項(xiàng)稠诲,注意下這個(gè):

additional relocation overflows omitted from the output

感謝thrt520@UWA問答社區(qū)提供了回答

A3:看上去是NDK那邊失敗了,可以嘗試一下不要勾選Development Build诡曙,可能是生成的二進(jìn)制文件太大導(dǎo)致的奔潰臀叙。

感謝蕭小俊@UWA問答社區(qū)提供了回答

A4:親測Maximun JVM heap size,MBytes增加JVM內(nèi)存有效:

感謝題主Bomber@UWA問答社區(qū)提供了回答价卤,歡迎大家轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/60892a236bb31032f9791493

Script

Q:在Android下可以劝萤,切換到PC打包的時(shí)候就報(bào)錯(cuò)了。請問這是什么意思慎璧?如何解決呢床嫌?

A:有文檔介紹說:Only native iPhone, Android, and Windows Store Apps are supported. 所以加個(gè)宏處理一下就可以了。

https://docs.unity3d.com/ScriptReference/TouchScreenKeyboard.html

感謝張迪@UWA問答社區(qū)提供了回答胸私,歡迎大家轉(zhuǎn)至社區(qū)交流:

https://answer.uwa4d.com/question/62903ab6b87a45735165da5f

封面圖來源于網(wǎng)絡(luò)


今天的分享就到這里厌处。當(dāng)然,生有涯而知無涯岁疼。在漫漫的開發(fā)周期中阔涉,您看到的這些問題也許都只是冰山一角,我們早已在UWA問答網(wǎng)站上準(zhǔn)備了更多的技術(shù)話題等你一起來探索和分享捷绒。歡迎熱愛進(jìn)步的你加入瑰排,也許你的方法恰能解別人的燃眉之急;而他山之“石”暖侨,也能攻你之“玉”椭住。

官網(wǎng):www.uwa4d.com

官方技術(shù)博客:blog.uwa4d.com

官方問答社區(qū):answer.uwa4d.com

UWA學(xué)堂:edu.uwa4d.com

官方技術(shù)QQ群:793972859(原群已滿員)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市字逗,隨后出現(xiàn)的幾起案子京郑,更是在濱河造成了極大的恐慌显押,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傻挂,死亡現(xiàn)場離奇詭異,居然都是意外死亡挖息,警方通過查閱死者的電腦和手機(jī)金拒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來套腹,“玉大人绪抛,你說我怎么就攤上這事〉缳鳎” “怎么了幢码?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尖飞。 經(jīng)常有香客問我症副,道長,這世上最難降的妖魔是什么政基? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任贞铣,我火速辦了婚禮沮明,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荐健。我一直安慰自己,他們只是感情好江场,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扛稽,像睡著了一般吁峻。 火紅的嫁衣襯著肌膚如雪在张。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天帮匾,我揣著相機(jī)與錄音啄骇,去河邊找鬼。 笑死瘟斜,一個(gè)胖子當(dāng)著我的面吹牛缸夹,可吹牛的內(nèi)容都是我干的痪寻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼虽惭,長吁一口氣:“原來是場噩夢啊……” “哼橡类!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芽唇,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤顾画,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后匆笤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體研侣,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年炮捧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庶诡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咆课,死狀恐怖末誓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情书蚪,我是刑警寧澤基显,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站善炫,受9級特大地震影響撩幽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜箩艺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一窜醉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艺谆,春花似錦榨惰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虫给,卻和暖如春藤抡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抹估。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工缠黍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人药蜻。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓替饿,卻偏偏與公主長得像贸典,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子廊驼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容