技术分享连载(六十二)

原文链接:https://blog.uwa4d.com/archives/TechSharing_62.html

我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。
UWA QQ群:465082844
UWA 问答社区:answer.uwa4d.com


资源管理

Q1:在Unity 的 Profiler里,有些记录右边会有Warning的个数信息,请问这个是否影响性能,或者是否有必要修改呢?

请输入图片描述

这种字符的出现很可能会导致后续的物理更新出现较大的性能开销,包含在Physics.Simulate/Processing中。出现这种情况主要是受限于Unity版本中的PhysX在移动静态碰撞体是开销较高的问题(虽然文档中说5.x下已经解决,但我们确实发现在5.x的项目中该项仍然存在)。因此,我们建议给需要移动的Collider加上RigidBody并勾选Is Kinematic复选框,从而将其变为动态碰撞体,如下图所示。对于不移动的物体,则直接将模型的Apply Root Motion选项进行关闭,从而直接省去Static Collider.Move的性能开销。
请输入图片描述


资源管理

Q2:我们设置了TargetFrameRate为30,想避免过高的耗电和发热,请问这样做是合理的么?

这种设置仅在帧率本身很好的情况下,才会起到减少耗电和发热的作用。但如果本身游戏已经较为卡顿,那么该设置方法意义不大。对于耗电和发热,研发团队需从CPU、GPU和IO入手,尽可能降低这三方面的负载压力,比如:

(1)CPU:针对UWA性能测评报告中的Top10函数进行优化,根据性能堆栈定位性能根源并进行优化;
(2)GPU:针对报告中的OverDraw对GPU负载较大的根源进行完善和优化;
(3)IO:尽可能控制资源加载的粒度和网络传输的频率。对于资源粒度的划分,我们曾有过较为深度的分析:可以参考《技术分享连载五十九》


图形渲染

Q3:我们美术在制作场景地面的时候,会有如下图所示的非常明显的一条模糊和清晰的分割线。我清楚这是由于Mipmap的使用导致的,我们不想让这条线这么明显,初步的想法是设置Texture的mipMapbias这个参数,这个参数没有在Texture的配置界面上提供。
请输入图片描述

Q3.1:想问下Unity有没有办法全局设置这个值?或者只能像我们现在这样在贴图导入的时候由脚本来设置?官方给的这个值的建议是“Note that using large negative bias can reduce performance, so it’s not recommended to use more than -0.5 negative bias.”,按照我之前的理解,这应该对应到Mipmap偏移层数的设置,应该是个整数。

目前来说我们没有发现能全局设置的办法。

Q3.2:不清楚这个建议不超过-0.5的值具体含义是对应几层Mipmap偏移?我们也尝试了Trilinear的Filter Mode设置,并没有明显的效果,按理说这个设置应该是会让mipmap采样两层中的8个点进行混合,这点也有点奇怪。

Mipmap的层级数的确是一个整数。mipMapbias是由Unity引擎定义的一个参数,按照Unity官网解释来看整数代表了比当前层级更低(级数更大,更模糊)的Mipmap,负数代表了比当前层级更高的Mipmap。“-0.5”具体是偏移多少层级目前也不是很清楚。

Q3.3:我们也尝试了Trilinear的Filter Mode设置,并没有明显的效果,按理说这个设置应该是会让Mipmap采样两层中的8个点进行混合,这点也有点奇怪。

Trilinear应该是会比Bilinear效果好一些,但是也差强人意。原因是这样:传统的Mipmap(不采用Anisotropic Filtering)都是每层将u,v两个方向缩减一半,即:512x512的下一层是256x256。这就导致在两层交界处在不同层采样出来的纹理在u,v两个方向都被拉伸(或者叫变模糊)。Anisotropic Filtering的方式可以简单理解为在交界处只在某一个方向上被拉伸,另一个方向保持原有采样率(或者叫纹理分辨率),这样才能明显降低突变的模糊感。

Q3.4:目前我们给美术的建议是使用Aniso Level,调整一个比较高的值,比如大于6,会有比较理想的效果,但是查了一下这个的性能消耗貌似很大,不知道UWA有没有对这个参数做过性能的分析,具体的性能消耗有多大?

使用Anisotropic Filtering不仅纹理内存占用会增高,而且采样率也增高(因为有一个方向的保持不变),因此它比传统的mipmap更耗时,耗时在于GPU端对纹理进行采样时增加了访存,在CPU端没有影响。虽然Anisotropic Filtering 耗时增加,但是相比于直接增加mipmap level(也就是设置-0.5的偏移),要达到相同的效果,Anisotropic Filtering的时间耗时还是相对更低的。这个参数影响的是GPU端的时间开销,我们没有单独统计过,研发团队可以尝试提交一个版本到UWA网站上(www.uwa4d.com),我们从整体效率进行分析检测。

此问答来自于UWA 问答社区:
https://answer.uwa4d.com/question/590198b09db5d16c66166148
如您对该问题仍有疑问,可以转至社区进行进一步交流。


资源管理

Q4:我们使用的是Resources.Load和LoadAsync的方式加载资源,这个与AssetBundle的方式比较,能大概帮解释一下优劣么?

目前大量项目都在使用AssetBundle进行加载。相较于Resources加载,其好处有如下几个:
(1)游戏启动更快,Resources文件夹下文件数量越多,游戏启动越慢,而AssetBundle的使用可以极大减少Resources文件夹下的文件数量;

(2)更方便于资源的加载和热更新,AssetBundle可以让资源组织更为灵活,根据项目的不同情况,可以更为方便地对部分模块进行预加载或热更新。


资源管理

Q5:在Unity工程里启动游戏时,会有大量的Warning(类似定义了没有使用的变量这样的Warning)请问这个对真机的性能是否有影响,是否有必要修改掉这些Warning?

如果在真机运行时,依然会存在这些Warning,那么对于性能来说是有影响,建议尽可能将其去掉。而像问题中提到的"类似定义了没有使用的变量这样的Warning",这种属于编译时候的Warnning,是不影响运行时性能的。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站(answer.uwa4d.com)上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
官方技术QQ群:465082844(仅限技术交流)


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值