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

相关推荐
鹏多多.18 分钟前
flutter-使用device_info_plus获取手机设备信息完整指南
android·前端·flutter·ios·数据分析·前端框架
麦兜*15 小时前
【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案
服务器·ios·swiftui·android studio·objective-c·ai编程·swift
GeniuswongAir1 天前
iOS 26 一键登录失效:三大运营商 SDK 无法正常获取手机号
ios
吴Wu涛涛涛涛涛Tao1 天前
Flutter 实现类似抖音/TikTok 的竖向滑动短视频播放器
android·flutter·ios
猪哥帅过吴彦祖1 天前
Flutter 插件工作原理深度解析:从 Dart 到 Native 的完整调用链路
android·flutter·ios
归辞...1 天前
「iOS」————UITableView性能优化
ios·性能优化·cocoa
AI工具测评与分析1 天前
EhViewer安卓ios全版本类下载安装工具的完整路径解析
android·ios
叽哥2 天前
flutter学习第 18 节:设备功能调用
android·flutter·ios
Swift社区2 天前
Swift 实战:从数据流到不重叠区间的高效转换
开发语言·ios·swift