【厚积薄发】为什么同一个Camera有两个RenderSingleCamera的耗时

文摘   2024-09-29 18:30   上海  
这是第404篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com

UWA QQ群:793972859


本期目录:
  • 为什么同一个Camera有两个RenderSingleCamera的耗时

  • Unity 2022中SBP打包报错问题排查

  • Application.lowMemory在什么时候会生效

  • 一般iOS机型要超过其运行内存的多少会容易崩溃


Rendering

Q:我们发现项目里有对同一个Camera的两个RenderSingleCamera的耗时,这是合理的吗?且全程RenderPipelineManager.DoRenderLoop_Internal这个函数每帧会执行2次还有可能执行4次的。


因此有以下疑惑:

1. RenderPipelineManager.DoRenderLoop_Internal什么情况下可能每帧执行多次?

2. 两个耗时有何区别

我在RenderDoc里也抓了下帧,确实有重复的Colour Pass,看起来明明已经画了一遍了,然后又画了一遍,Unity的FrameDebug只能看到一次。


A:RenderLoop在堆栈里面看到执行多次的情况通常是有Camera设置了RT作为其RenderTarget。

这两个是URP执行的两个阶段,前面可以看做初始化和Culling阶段,后面是提交Drawcall的阶段,以前在Built-in管线,前面的各种逻辑都是写在Native层的,URP把这个阶段封装了C#,方便开发者自己管理。

针对以上问题,有经验的朋友欢迎转至社区交流
https://answer.uwa4d.com/question/66f8cf8f682c7e5cd61bf8e8
AssetBundle

Q:Unity 2022使用SBP打包总是报错:Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.s。

环境:

Unity 2022.3.30f1

SBP 2.01、SBP 2.1.4,使用CompatibilityBuildPipeline打包


问题:

打没有缓存的资源,很容易出报错:

Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.size() + loadInfo.referencedObjects.size()'


UnityEditor.Build.Pipeline.CompatibilityBuildPipeline:BuildAssetBundles (string,UnityEditor.AssetBundleBuild[],UnityEditor.BuildAssetBundleOptions,UnityEditor.BuildTarget)


A:结论:同一个包里不允许资源重名(我们所在的版本里资源记录没有路径也没有拓展名)。

下面放两张对比图,跟问题到底错在哪里无关,只是说明下二者的差别。

我尝试通过解包的内容确定出错的根本原因或者表现,但是没有成功。只在中间某个环节推测是重名问题,并进行了一系列测试,确认了这个结论。
2022里有问题的内容列表

2018里正常的内容列表

感谢题主Walker@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/66d28a99682c7e5cd61bf8c6
Memory

Q:Application.lowMemory这个方法大家有测过吗?如何生效?

A:由于Application.lowMemory仅在内存极其紧张时触发,因此不应该过度依赖这个回调来管理内存,尤其可能比较常见但其实有问题的、在回调中调用RUUA回收Unused资源的做法,不但降低内存的效果有限还会触发卡顿。正确的做法是通过优化资源管理、减少不必要的内存占用等方式来预防内存问题;或调用Resources.UnloadAssets或AB.Unload(True)的方式定向卸载内存。

针对以上问题,有经验的朋友欢迎转至社区交流
https://answer.uwa4d.com/question/66f8cd1a682c7e5cd61bf8e6
Memory

Q:想问下,大家有没有测过iOS机型一般超过其运行内存的多少(比如50%)容易崩溃的数据吗?

A:我们项目测试过,但是有一些项目组反馈证明,即便是4G以上的中高端iOS设备,在内存超过1.8GB时闪退风险会比较高。

针对以上问题,有经验的朋友欢迎转至社区交流
https://answer.uwa4d.com/question/66f8ce43682c7e5cd61bf8e7

封面图来源于网络


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


UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859


(长按识别二维码进入UWA问答)


点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~

 

从未知到已知,从被动到主动


近期精彩回顾

【学堂上新】UWA DAY 2024精选推荐(一)

【万象更新】UWA Gears:Frame Capture模式 - 纹理查看器

【厚积薄发】UE4.26 Emissive Decal(发光贴花)模拟Light Function

【学堂上新】Unity3D网络游戏实战


侑虎科技
UWA,专业的游戏和VR应用性能优化平台。www.uwa4d.com
 最新文章