【Unity】尝试把官方HDRP资源包降级成URP版本

一、前言
事情是这样的,AssetStore的亚洲风格资源原本比较少,又看到有慈善打包卖Snaps Art HD系列的亚洲花园,所以想没怎么想就剁手了。可鄙人的小破笔记本,使用Unity的HDRP后,简直就是PPT播放器了。

其实也有专供URP的Snaps Prototype系列,然而画风却是这样的(还能愉快地玩耍吗?)。


二、先吐槽一下
我用公司的台式电脑,其实没法太正常地运行HDRP,基本上都出现各种各样的小问题。而自己的小破笔记本,导入资源就开始假死= =?其实看看源文件大小也知道了,20GB的高清资源,大部分是高清贴图,无论解压,还是图片导入的转码,够你等个半天。

所以要让我的小破笔记本能正常使用这个资源,也只能切换成URP。大致解决思路就是,文件解压→缩小图片→切换Shader→(亿点细节)。

三、解决过程
由于手动操作会有一些失误,而且业余也不适合做枯燥的事情,所以还是脱离Unity,做一个自动化工具。Unity Package Tool的Unity Package,指的是资源包,跟Packages没半毛关系。
https://github.com/MrYouSing/UnityPackageTool
由于篇幅问题,就简要地讲解工具原理。用压缩软件打开*.unitypackage,你会很容易发现内部文件结构,然后照着写代码解压出来就行。而缩小图片,直接用第三方库FreeImage。由于懒得写界面,所以使用Lua脚本编辑参数了。

让工具自己跑一个小时后,生成了原版资源和修改资源的压缩包。

最后把20GB的资源搞成1GB,暴力压缩资源>~<

导入Unity后,启用HDRP和URP,准备切换Shader。由于HDRP和URP的属性命名和贴图种类都有差异,别想用Unity的API来把HDRP材质切换到URP版本,我这边是使用代码打开材质文件的文本,替换相应的属性名,再保存材质文件。

ShaderGraph打开另外编写的HDRP着色器,添加一个URP的主节点。将兼容的输出属性,也连进URP主节点,但还是会有一些渲染问题。

资源部分处理好后,切换成URP模式,打开场景,去掉HDRP的组件,重新修改光照设置(可能有些参数不兼容,导致渲染不正常),接着就是一般编辑流程。




四、结语
这个文章不算是教程,算是过程记录日志。很多工具都在开发中,也没有示例文件,可能对新手没那么友好。其实URP没那么差啦,也不是什么游戏都要超高清才能玩。论结果而言,除了画质没HDRP那么好,翻车的地方也不算多。说得这么多,还是归结于没钱买新显卡(酸)。
反正最近开发的脑洞比较多,应该是做个矢豆视频合集,或者记录日志来着。