Wwise的内存问题
1)Wwise的内存问题
2)关于Planar Shadow的疑问
3)PPS的LDR纹理冗余
4)游戏第一次冷启动耗时长
5)Lua解析指令的虚拟机会占用内存吗
这是第268篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Audio
Q:关于Wwise的内存问题:
1. Wwise加载一个bank,内存增长主要在哪?在profiler上主要体现在哪个参数?
2. 加载bank之后,开始播放event,那么这个event声音是否有缓存?播放是否卡顿?
A:这个问题取决于你所使用的版本,以及你为资源设定的读取方式,还有你为资源采取的编解码。
版本方面自2019.2开始Wwise采取了动态内存管理,profiler显示的是不同用途的内存占用数据,而在这个大版本之前是需要设置固定大小的初始内存池的。
优化内存分配:
https://www.audiokinetic.com/zh/library/edge/?source=SDK&id=goingfurther_optimizingmempools.html优化内存池:
优化内存池你可以比较一下2019.1之后和2019.1的内存管理文档。
你的资源采取读入内存的方式读取,就会进入内存,如果是stream流读取那就会占用io,这些都可以在Wwise的profiler里看,并不是给你隐藏起来了。
https://www.audiokinetic.com/zh/courses/wwise101/?source=wwise101&id=streaming
卡顿取决于你是从内存读取还是流播放,两者可能都会受编解码的影响。通常如果是触发频率高、追求快速响应可以用PCM或者ADPCM来播放,然后Vorbis可能会因为CPU处理时间产生延迟。如果是流播放,则可以通过启用Zero Latency特性,增加prefetch来降低延迟,但这个方法主要是用来处理播放长文件时的延迟。太短的文件如果prefetch太长可能还导致其他报错,短的就通过编解码和采样率来做空间时间平衡就可以了,音质别太差就行。
感谢Icarus@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
Addressable
Q:目前模型用到了Planar Shadow平面阴影,但是由于我们的模型是要投放到UI上,需要把阴影一起拍下来。但又不能把接收阴影的地板拍下来,求教如何让接收平面阴影的plane只显示阴影,其他地方为透明呢 ?
(相关Shader文件可戳原问答查看。)
A1:你并没有理解Planar Shadow的原理,它的阴影本质就是一个Mesh,不需要接收物体,直接删掉地板即可。
如果你的项目没显示出来阴影,那应该是其他方面的原因,跟地板无关。
感谢Jee@UWA问答社区提供了回答
A2:Shader中的_WorldPos表示模型的世界坐标、WorldPos表示ShadowPos吗?如果是这样,这里写的似乎有些问题。
可以参考下这个URP Planar Shadow: 【Unity Shader】平面阴影(Planar Shadow) - 知乎
Planar Shadow的实现一般就是在另一个Pass把顶点投到一个“平面”再画一遍,所以应该不会出现题主所描述的问题。
感谢羽飞@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
Resources
Q:开了PPS之后纹理出现了冗余?LDR之类的资源,这些应该是PPS自己的资源。我们把PPS的资源都打到了一个包里,但还是有冗余。
A:以下是APK解压后的资源。
通常是因为被场景(此场景没有打包AssetBundle)引用和从AssetBundle加载导致的。上图中的LDR开头的纹理是用来做随机用的noise图。在URP中,通常是被RenderPipelineAsset中引用的PostProcessData引用导致的。
当GraphicsSettings中设置了RenderPipelineAsset,那么打包APK的时候,这个PostProcessData.asset是最终被打包进globalmanagers.assets中,没有打包进AssetBundle中的场景如果也引用了RenderPipelineAsset,最终引用的是globalmanagers.assets的RenderPipelineAsset实例,这样是不会冗余的。
但是如果在AssetBundle中也有打包RenderPipelineAsset,比如通过AssetBundle来动态更改RenderPipelineAsset,那么就会产生多份LDR_LLL这样的纹理了。
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
Loading
Q:游戏第一次冷启动的耗时比较长,想分析一下具体的消耗在哪里?但是UWA的测试报告的数据是从进入游戏后开始的,不知道怎样才可以进行测试。
A1:大致归为3点:
- Resource文件夹下的文件建立索引,可以想办法改用AssetBundle;
- 预Shader解析,这个为了之后的流程性建议还是先预加载了,当然也可以用一些其他操作陆陆续续加载;
- 加载的第一个scene比较大,可以考虑搞个空的scene先加载上来,异步加载真正的第一个scene。
感谢萧小俊@UWA问答社区提供了回答
A2:可以看一下这个问答里的思路:游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
感谢OCEAN@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
Memory
Q:Lua解析指令的虚拟机会不会占用一部分内存?
A:几K还是有的,但应该很小的,主要还是对象占用的。虚拟机占用的内存主要是堆栈的空间,虚拟机还是得解释代码,执行API之类的,还是要点空间的,但应该是很少的。
感谢OCEAN@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案
20210918
更多精彩问题等你回答~
- Vulkan API的性能及兼容性
- Unity TMP字体方案如何选择
- 如何实现AAB包的增量更新
封面图来源于:URP Iridescence Example
URP中的虹彩着色器示例。
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)
Wwise的内存问题相关推荐
- 用 Wwise 和 Unity 制作 DLC 使用 Wwise 文件包(File Package)
用 Wwise 和 Unity 制作 DLC 使用 Wwise 文件包(File Package) https://www.audiokinetic.com/zh/library/edge/?sour ...
- Unity移动端游戏性能优化简谱之 常见游戏内存控制
<Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...
- Unity内存与资源管理
内存管理是程序开发的核心问题,而资源的使用又与内存息息相关,因此本章想要梳理整个开发流程中Unity对于内存与资源的管理方式. 一.内存基础 1.1 基础概念 内存是暂时存放CPU中的运算数据,与硬盘 ...
- Wwise 快速上手指南: 程序员篇(v2016.1)
Wwise 快速上手指南: 程序员篇(v2016.1) https://gameinstitute.qq.com/community/detail/107700 Wwise 快速上手指南: 程序员篇 ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- 使用Unity5开发手游,使用FMOD或wwise音频插件而不是自带的声音系统有哪些好处?
使用Unity5开发手游,使用FMOD或wwise音频插件而不是自带的声音系统有哪些好处? https://www.zhihu.com/question/61882604 碰巧对Unity里的声音脚本 ...
- 音频中间件的7大功能 您无法抗拒的wwise好课程
原文标题:Dear Devs, 7 Reasons why your Game may need Audio Middleware 开发者们,您需要音频中间件的7个理由 市场上有几种音频中间件程序. ...
- 声音引擎Wwise与Criware的区别
1)声音引擎Wwise与Criware的区别 2)Unity加载场景闪退问题 3)Animation Transition方案 4)高通GPU Adreno650手机的纹理显示异常问题 5)Live ...
- Wwise音频解决方案概述
Wwise编辑器 音频设计师在Wwise编辑器(具体使用请参考:Wwise Help)中完成声音的集成和设置,并通过UE4和unity的Wwise插件,将制作好地资源导入到游戏编辑器中 Wwise编辑 ...
最新文章
- python过滤敏感词
- 图中长度为k的路径的计数
- C++设计模式--适配器模式
- boost::statechart模块实现终止测试
- PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknown to”的解决办法
- 解析word template返回使用的webservice WSDL和Operation
- 事物Spring boot @Transactional
- 独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战
- php yii开发工具,开源PHP开发框架Yii教程
- ios 数字键盘左下角添加按钮_ios数字键盘添加完成按钮
- HTML相对路径相对目录--上级目录及下级目录的写法
- Linus 怒批 GitHub:制造了毫无用处的垃圾合并信息!
- 【Python】日志关键字分析工具
- Fractions to Decimals_usaco2.4.5_暴力
- 网络准入认证系统方案评估
- 【踩坑记录】priority_queue 第三个模板参数和sort 的第三个形参的区别;仿函数、自定义排序函数、lambda 函数分别传入;传入类型和对象的区别;
- RT-Thread源码-__rt_ffs函数剖析
- MOSFET的误启动发生机制-3
- wiki服务器网页地址,搭建个人wiki站点
- 2013年全球重要黑客大会一览