ARM 在Unity3D 中的美术优化解决方案 1, 简介/优化和性能分析

1, 课程简介

1.概述

欢迎学习《Arm 和 Unity:适用于移动应用程序的 3D 美术优化》课程!

人们常说,智能手机是我们随身携带的超级计算机。作为创作者,我们努力开发可随时使用的有用工具和沉浸式体验。虽然智能手机确实给我们提供了能够运行复杂应用程序(例如 3D 游戏)的强大硬件,但它们仍有其局限性。

在本课程中,你将了解创建不同类型的 3D 资源的几种最佳实践,以及对移动开发的性能分析/优化工作流程的高层次理解。灵活运用从这些课程中学到的知识将为你的目标受众带来更快、更高效的应用程序和更好的体验。

2.课程的目标受众

本课程专为新生代中级技术美术师和内容创作者制作。我们假定你具有使用 Unity 编辑器和你选择的 3D 内容创作工具的经验。

3.如何使用示例演示

本课程提供了五个示例演示,涵盖每个部分介绍的重要优化。这些演示已通过 Unity LTS 2019 (Unity 2019.4.10f1) 进行了测试。可以在此处下载该项目。打开示例项目时,将显示一个 README 文件,让你能够快速访问每个示例演示。Unity 编辑器也针对这些演示进行了定制 - 内置的 Profiler 和 Frame Debugger 视图已停靠在编辑器中,以方便你访问。如果需要访问介绍 README (Tools > Show Read Me) 或每个性能分析视图 (WIndow > Analysis),你可以在 Unity 编辑器的菜单栏中找到它们。重要注意事项:下载包含示例演示的 Unity 项目后,请确保关闭 SRP Batcher。默认情况下,该功能在支持通用渲染管线的项目中处于启用状态。本课程稍后部分会介绍该功能。导航到 Assets > Content > Settings 并单击 UniversalRenderPipelineAsset,以在 Inspector 中突出显示其属性。SRP Batcher 开关应位于 Advanced 部分下。

优化过程

本课程专为新生代中级技术美术师和内容创作者制作。我们假定你具有使用 Unity 编辑器和你选择的 3D 内容创作工具的经验。

1.什么是优化过程?

优化指的是对软件进行修改以提高其性能的过程。对于移动应用程序,这通常意味着修改应用程序以使其在资源有限的移动设备上更快地运行。在本课程中,我们将专注于优化 3D 美术资源:模型、纹理、材质、着色器和光照。例如,你正在开发的移动游戏可能存在帧速较低、出现画面卡顿、导致手机发热、造成电池寿命大幅下降等情况。这些问题可能是由复杂的模型或未优化的着色器引起的。这会给用户留下不好的印象,并使游戏难以进行。对游戏进行性能分析和优化以提高性能通常可带来更好、更流畅的体验。优化 3D 美术资源时,我们将使用迭代过程指导你找出并消除性能问题。优化过程包含以下步骤:

  1. 性能分析,即使用性能分析器测试应用程序。

  1. 分析数据,查找瓶颈。

  1. 确定要应用的相关优化。

  1. 验证优化是否有效。

  1. 如果性能令人难以接受,则返回步骤 1 并重复该过程。

以下是对上述移动游戏应用优化过程的示例:

  1. 在测试游戏时,你发现存在图形问题或性能不佳。当游戏在测试设备上运行时,可以使用 Unity 性能分析器进行测试以查找问题。

  1. 分析性能分析器的测试结果可以帮助你隔离并确定性能问题的根源。例如,你可能会注意到,在主角进入视野后,Rendering 性能分析器模块中出现了很高的渲染尖峰。

  1. 在发现该较大峰值并对其他情况进行测试后,你确定当某些模型进入视野时,游戏可能渲染了过多的顶点。

  1. 你将这些情况告知团队并建议为某些 3D 模型使用 LOD,以减少从远处观看时网格中的顶点数量。

  1. 在模型上应用 LOD 后,你再次测试游戏以验证优化是否有效!

如果执行上述过程后,应用程序仍未按预期运行,则可以通过再次对应用程序进行性能分析来找出其他导致问题的原因,以重新开始这一过程。

2.总结

在游戏开发的某个阶段,你可能需要多次重复优化过程。优化是一个迭代过程,可以帮助你发现许多不同方面的性能问题。在下一个教程中,我们将介绍在对移动应用程序进行性能分析时可以使用的各种工具。

性能分析工具

1.在 Unity 中进行性能分析

可以使用多种工具测试游戏在移动设备上的性能,例如性能分析器和图形调试器。这些工具可为你提供关于游戏如何使用给定设备(例如开发计算机或手机)资源的详细视图。

Unity 内置的性能分析器 (Window > Analysis > Profiler) 可在 Unity 编辑器或连接的设备中运行时分析游戏中的场景,并显示你的应用程序将时间花在了什么地方。性能分析器以图表形式显示数据,直观说明设备是如何处理 CPU 和 GPU 工作负载的。在这里,你可以确定游戏中的问题区域,并发现优化性能的机会。

Unity 内置的帧调试器 (Window > Analysis > Frame Debugger) 可帮助你探索游戏进行的 OpenGL ES 或 Vulkan API 调用,深入分析每次绘制调用,让你能够识别渲染缺陷、评估场景中的细节级别并找出开销巨大的着色器以进行优化。

下面的屏幕截图显示了某应用程序运行期间性能分析器的图形化测量结果,在图中可以直观地看到 CPU 使用率、内存占用以及每个 CPU 线程上的具体操作:

2.在 Unity 编辑器中进行性能分析与在设备上进行性能分析

对于制作期间遇到的问题,在开发计算机上使用内置性能分析器对应用程序进行性能分析十分便捷。但要确切了解移动应用程序的性能和潜在瓶颈,我们强烈建议你针对目标设备构建应用并在目标设备上进行性能分析。

在开发计算机上进行性能分析有用、便捷,但该过程会产生在 Unity 编辑器中渲染移动应用程序的开销以及编辑器本身的开销。当针对目标移动设备进行构建时,可以隔离整个应用程序,同时获得内置性能分析器的好处,从而在更准确的情况下进行性能分析和测试。

有关针对所选平台创建开发构建的更多信息,请参阅 Unity 文档。

3.使用 Arm Streamline 进行性能分析

虽然 Unity 性能分析器可在运行时向你显示某些作业的排程,但它不显示可用的 CPU 或 GPU 资源,也不显示这些资源在你进行分析的移动设备上的使用情况。

Arm Streamline 是一个性能分析器,作为 Arm Mobile Studio 的一部分提供。Arm Mobile Studio 是一个免费的性能分析工具套件,用于在使用 Arm Mali GPU 的设备上调试和优化 Android 应用程序。当在未取得 root 权限的设备上运行时,Streamline 可对你的游戏进行分析并提供性能计数器数据,以帮助你了解你的移动应用程序如何使用该设备的资源。

Streamline 衡量 CPU 活动,以查找可降低使用率的区域,并分析移动应用程序问题区域的活跃 GPU 工作负载。你可以探索 GPU 如何处理太小而无法渲染、不在屏幕上或过度绘制的三角形。此外,Streamline 还可以帮助你评估着色器性能和纹理使用情况。

下面的屏幕截图显示了 Streamline 的时间轴视图,该视图呈现了 Android 设备资源(例如 CPU 和总线活动)的详细测量结果:

有关如何使用 Arm Streamline 对移动应用程序进行性能分析的更多信息,请单击此处

4.总结

性能分析和优化工作流程是一个有用的迭代过程,可用于在收集和分析移动应用的性能数据时查找潜在瓶颈。Unity 内置的性能分析器和帧调试器是分析应用程序如何使用资源的良好起点。当需要更精细的测量时,Arm Streamline 等工具是在目标移动设备上进行性能分析的绝佳解决方案。

在下一个项目中,我们将介绍如何在保障性能的情况下为 3D 移动应用程序创建几何体,自此踏上我们的美术优化之旅。

猜你喜欢

转载自blog.csdn.net/Kaitiren/article/details/129682837