【Unity】嘗試把官方HDRP資源包降級成URP版本

一、前言
? ? 事情是這樣的,AssetStore的亞洲風(fēng)格資源原本比較少,又看到有慈善打包賣Snaps Art HD系列的亞洲花園,所以想沒怎么想就剁手了。可鄙人的小破筆記本,使用Unity的HDRP后,簡直就是PPT播放器了。

????其實(shí)也有專供URP的Snaps Prototype系列,然而畫風(fēng)卻是這樣的(還能愉快地玩耍嗎?)。


二、先吐槽一下
????我用公司的臺式電腦,其實(shí)沒法太正常地運(yùn)行HDRP,基本上都出現(xiàn)各種各樣的小問題。而自己的小破筆記本,導(dǎo)入資源就開始假死= =?其實(shí)看看源文件大小也知道了,20GB的高清資源,大部分是高清貼圖,無論解壓,還是圖片導(dǎo)入的轉(zhuǎn)碼,夠你等個(gè)半天。

????所以要讓我的小破筆記本能正常使用這個(gè)資源,也只能切換成URP。大致解決思路就是,文件解壓→縮小圖片→切換Shader→(億點(diǎn)細(xì)節(jié))。

三、解決過程
????由于手動操作會有一些失誤,而且業(yè)余也不適合做枯燥的事情,所以還是脫離Unity,做一個(gè)自動化工具。Unity Package Tool的Unity Package,指的是資源包,跟Packages沒半毛關(guān)系。
? ? https://github.com/MrYouSing/UnityPackageTool
????由于篇幅問題,就簡要地講解工具原理。用壓縮軟件打開*.unitypackage,你會很容易發(fā)現(xiàn)內(nèi)部文件結(jié)構(gòu),然后照著寫代碼解壓出來就行。而縮小圖片,直接用第三方庫FreeImage。由于懶得寫界面,所以使用Lua腳本編輯參數(shù)了。

? ? 讓工具自己跑一個(gè)小時(shí)后,生成了原版資源和修改資源的壓縮包。

????最后把20GB的資源搞成1GB,暴力壓縮資源>~<

????導(dǎo)入U(xiǎn)nity后,啟用HDRP和URP,準(zhǔn)備切換Shader。由于HDRP和URP的屬性命名和貼圖種類都有差異,別想用Unity的API來把HDRP材質(zhì)切換到URP版本,我這邊是使用代碼打開材質(zhì)文件的文本,替換相應(yīng)的屬性名,再保存材質(zhì)文件。

????ShaderGraph打開另外編寫的HDRP著色器,添加一個(gè)URP的主節(jié)點(diǎn)。將兼容的輸出屬性,也連進(jìn)URP主節(jié)點(diǎn),但還是會有一些渲染問題。

????資源部分處理好后,切換成URP模式,打開場景,去掉HDRP的組件,重新修改光照設(shè)置(可能有些參數(shù)不兼容,導(dǎo)致渲染不正常),接著就是一般編輯流程。




四、結(jié)語
????這個(gè)文章不算是教程,算是過程記錄日志。很多工具都在開發(fā)中,也沒有示例文件,可能對新手沒那么友好。其實(shí)URP沒那么差啦,也不是什么游戲都要超高清才能玩。論結(jié)果而言,除了畫質(zhì)沒HDRP那么好,翻車的地方也不算多。說得這么多,還是歸結(jié)于沒錢買新顯卡(酸)。
????反正最近開發(fā)的腦洞比較多,應(yīng)該是做個(gè)矢豆視頻合集,或者記錄日志來著。