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

相关推荐
比格丽巴格丽抱11 小时前
flutter项目苹果编译运行打包上线
flutter·ios
网络安全-老纪12 小时前
iOS应用网络安全之HTTPS
web安全·ios·https
1024小神15 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri
lzhdim16 小时前
iPhone 17 Air看点汇总:薄至6mm 刷新苹果轻薄纪录
ios·iphone
安和昂16 小时前
【iOS】知乎日报第四周总结
ios
麦田里的守望者江19 小时前
KMP 中的 expect 和 actual 声明
android·ios·kotlin
_黎明20 小时前
【Swift】字符串和字符
开发语言·ios·swift
ZVAyIVqt0UFji1 天前
iOS屏幕共享技术实践
macos·ios·objective-c·cocoa
hfxns_1 天前
iOS 18.2 Beta 4开发者预览版发布,相机新增辅助功能
ios
AirDroid_cn1 天前
如何控制自己玩手机的时间?两台苹果手机帮助自律
ios·智能手机·ipad·手机使用技巧·苹果手机使用技巧