iOS包ShaderVariantCollection预热慢问题

1)iOS包ShaderVariantCollection预热慢问题
2)使用SBP打Bundle如何读取AssetBundleManifest
3)如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用
4)为什么我的水这么干净,和UE教程里的有差别


这是第392篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Rendering

Q:ShaderVariantCollection变体集合,大概400个变体数据,ShaderVariantCollection.WarmUp(),卡顿大概40秒。单个Shader变体编译需要100ms,拆分为多个SVC,分段预热后,单个Shader编译时间基本没变化,总耗时基本无差别。

同样的包,Andorid就算低端机型,预热总时间也不会超过10s。

预热Unity也没有提供异步方法,只有同步,现在不管在哪个阶段去预热都会有超长的空置卡顿时间。

有没有人遇到过?是不是iOS需要设置什么?

A:是iOS的问题,iOS的第一次要生成Metal的Shader,这里不管中高端基本上都差不多耗时,最好是自己找时机分段预热,不要放在首场景。

感谢司马老师@UWA问答社区提供了回答


AssetBundle

Q:升级到2019之后,使用BuildPipeline.BuildAssetBundles方法打Bundle变得很慢。我们发现Unity新推出的Scriptable Build Pipeline有更快的打包速度(1个小时降为15分钟),但是作为兼容之前AssetBundleManifest的新类型CompatibilityAssetbundleManifest并没有被打成Bundle,而是一个Yaml格式的文件:

想请教一下,这里是如何处理的,或者说资源的依赖关系是如何存储的。

(PS:没用Addressable,因为是线上运行项目,资源的路径都配在了Excel里,需要改的地方太多。)

A:可以从Result中获取依赖信息,自定义保存依赖列表:

复制代码
`public static ReturnCode BuildAssetBundles(IBundleBuildParameters parameters, IBundleBuildContent content, out IBundleBuildResults result, IList<IBuildTask> taskList, params IContextObject[] contextObjects)
`

感谢啊哩啵啵@UWA问答社区提供了回答


Rendering

Q:如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用?例如有一张贴图A,经过Shader A处理后加了个外描边,想把这个含有外描边的结果输出成Texture给另外一个Shader B使用,可以这样操作吗?

A:可参考下述方法:

1:内置管线使用GrabPass,只需要一个Shader和一个Mesh Pass1加外描边,Pass2 Grabpass抓屏,Pass3使用抓屏纹理。

2:后处理Blit方式,需要创建一个RT,另一个Shader直接使用这张RT。

感谢hxwaa@UWA问答社区提供了回答


Rendering

Q:图一是UE教程的水,图二是我的水,为什么我的水这么干净,是什么功能没打开嘛?

A:我不确定哪里是水,大概猜一下,你的"水面"的"脏"的东西是环境反射,因为"反射"效果过于出现大范围Pattern化的内容,所以是法线图的Tiling。你应该调整Tiling, 让Tiling数值更小一些,同时调整法线强度,或者直接删了。

感谢Renderman@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

相关推荐
余生大大3 小时前
关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法
ios·正则表达式·safari
爱分享的程序员4 小时前
前端跨端框架的开发以及IOS和安卓的开发流程和打包上架的详细流程
android·前端·ios
Macle_Chen4 小时前
ios开发中xxx.debug.dylib not found
ios·bug·debug.dylib
WDeLiang19 小时前
Flutter 环境搭建
flutter·ios·visual studio code
lilili啊啊啊1 天前
iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗
测试工具·ios·iphone·xcode·克魔
264玫瑰资源库2 天前
嘻游电玩三端客户端部署实战:PC + Android + iOS 环境全覆盖教程
android·ios
鸿蒙布道师2 天前
鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师2 天前
鸿蒙NEXT开发定位工具类 (WGS-84坐标系)(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
ghhgy5312 天前
已安装爱思助手和Apple相关驱动,但仍无法有线连接iPhone热点,且网络适配器没有Apple Mobile Device Ethernet,问题解决
ios·iphone
陈皮话梅糖@2 天前
iOS error: some files could not be transferred (code 23) at xxx
ios