切换到宽版
  • 689阅读
  • 0回复

Unreal Engine 4 优化教程 第一部分 [复制链接]

上一主题 下一主题
离线天の川
 

由 Errin M. (Intel), Jeff Rous (Intel), IDZSupport K. 发布于 2017 年 4 月 12 日

本教程旨在帮助开发人员提升基于虚幻引擎(Unreal Engine*4 (UE4))开发的游戏性能。在教程中,我们对引擎内部及外部使用的一系列工具,以及面向编辑器的最佳实践加以概述,还提供了有助于提高帧速率和项目稳定性的脚本。
本文的目的是找出游戏性能问题之所在,并提供解决这些问题的若干模式。
撰写本文时使用的是 4.14 版本。
单元
工具
分析器
GPU 可视化工具
英特尔® 图形性能分析器(英特尔® GPA)
英特尔® 图形性能分析器(英特尔® GPA)使用示例

单元
测量优化对性能的提升作用时,需要考虑每秒帧数 (fps) 和每帧的持续时间(以毫秒 (ms) 计算)。
该表显示了平均 fps 和 ms之间的关系。



为了计算任意 fps 的 ms,只需将 fps 的倒数乘以 1000。

利用毫秒描述性能改善,有助于更好地量化需要达到一定 fps 目标的优化级别。
例如,某个场景提升了 20 fps:
从 100 fps 到 120 fps 提升了 1.66 毫秒
从 10 fps 到 30 fps 提升了 66.67 毫秒
工具
现在向大家介绍三种工具,便于您了解引擎内部的情况: UE4 CPU 分析器、UE4 GPU 可视化工具和英特尔® 图形性能分析器(英特尔® GPA)。
分析器
UE4 CPU 分析器工具是一款引擎内监控器,支持您实时或从捕获的片段中查看游戏的性能。
分析器位于 Window > Developer Tools > Session Frontend 中。

图 1:  找到 Session Frontend 窗口。
在 Session Frontend 中选择 Profiler 选项卡。

图 2:Unreal Engine 中 Profiler 选项卡。
打开 Profiler 窗口后,选择 Play-In-Editor (PIE),然后选择 Data Preview 和 Live Preview,以查看从游戏中收集的数据。 选择 Data Capture 选项开始从游戏中捕获数据,然后取消选择并保存数据,以便稍后查看。

图 3:在 Profiler 中查看进程
Profiler 中每个动作和调用的时间以毫秒表示。 对每个区域进行检查,以查看对项目内帧速率的影响。
如欲深入了解 Profiler,请查看 Epic 文档。
GPU 可视化工具
UE4 GPU 可视化工具确定渲染通道的成本,还提供显示场景快照内部情况的高级视图。
在游戏内开发人员控制台中输入 ProfileGPU 便可获取 GPU 可视化工具。

图 4: ProfileGPU 控制台命令。
输入命令后,弹出 GPU 可视化工具窗口, 该窗口显示快照内每个渲染通道的时间,您还可以大致了解场景内通道产生的位置。

图 5: 在 GPU 可视化工具中查看进程。
Profiler 能够显示哪些项目的处理时间最长,可以依据它来确定如何优化。
如欲深入了解 GPU 可视化工具,请查看 Epic 文档。
英特尔® 图形性能分析器(英特尔® GPA)
英特尔® 图形性能分析器(英特尔® GPA) 是一套图形分析和优化工具,可帮助开发人员提升图形应用的性能。
本文将重点介绍该套件中的两个工具:实时分析应用和帧分析器。 首先需要从英特尔® 开发人员专区下载 GPA。 安装完成后,利用所选的开发创建配置创建 Unreal 项目。
创建完成后,进入图像监控器的分析应用,在命令行中选择可执行文件的位置并运行这个文件。
游戏将正常启动,但是在屏幕的左上角出现了一个统计指南。 为了扩大显示范围,单次按下 CRTL+F1 获取实时的指标信息,再次按下 CRTL+F1 获取试验的键盘快捷方式列表,运行游戏时可以应用这些试验。

图 6: 游戏中英特尔® GPA 的叠加。
为了在帧分析器中获取用于分析的帧,还需要在游戏内执行两个步骤。
第一步,打开 Toggle Draw Events, 在游戏控制台中输入 ToggleDrawEvents,便可打开 Toggle Draw Events。

图 7:  ToggleDrawEvents 控制台命令
打开后,Toggle Draw Events 为引擎创建的绘制调用附上名称,以后在帧分析器中查看捕获的帧时便有了环境。
最后,利用键盘快捷方式 CTRL+SHIFT+C 捕获帧。
保存帧后,从图像监控器中打开帧分析器并选择需要加载的帧。 对捕获的帧进行处理后,可以获得帧内部的所有图形信息。

图 8: 英特尔® GPA。
如欲深入了解英特尔® GPA,请查看英特尔 GPA 文档。
英特尔® 图形性能分析器(英特尔® GPA)使用示例
在英特尔 GPA 中查看全部数据看起来比较复杂,我们从查看较大的信息块入手。 在窗口的右上角,在 X 轴和 Y 轴上设置 GPU 持续时间图表,我们可以借助这张图标找出帧内消耗时间最多的绘制调用。
本示例捕获了一张沙漠景观场景,可以看到在基础通道中有一个大型绘制调用。 选择大型绘制调用后,“Render Target Preview(渲染目标预览)”区域的“Highlighted(突出显示)”部分被选中,我们可以发现峰值由场景内的景观引起(以粉色突出显示)。 如果我们在流程树列表(在预览区域的上方)中查找选中的绘制调用,将发现景观包含 520200 个基元,GPU 持续时间为 1,318.5(1.3185 毫秒)。

图 9: 在场景中找出最长的持续时间
确定引起峰值的原因后,开始进行优化。
作为第一次测量,借助面向景观工具的 Manage Mode 对景观进行重新采样,将基元数量降至 129032 个。 GPU 持续时间也随之降至 860.5,为场景带来了 5% 的性能提升。

图 10: 持续时间下降。
为了继续降低景观的成本,也可以从材料着手。 景观的层混合材料使用 13 个 4096 x 4096 (4k) 纹理,纹理传输总计达 212.5 MB。

图 11: 在英特尔® GPA 中查看渲染纹理
将所有景观纹理压缩至 2048 x 2048 (2k) 后,GPU 持续时间降至 801.0,性能又提升了 6%。
通过将景观纹理传输降至 53.1 MB,并减少场景中三角形的总数,显著提高了项目在英特尔显卡上的运行速度。 项目只是损失了少量的景观视觉逼真度。

图 12: 持续时间随纹理减少而下降
总体而言,通过重新采样和调整纹理改变场景中的景观,我们实现了以下优化:
景观流程的 GPU 持续时间下降了 40%(从 1318.5 到 801)
fps 提升了 18 帧(从 143 到 161)
每帧减少了 0.70毫秒。
Unreal Engine 4 优化教程第二部分
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
要让让这里成为动漫爱好者温馨的天堂~~
官方qq讨论群140439020  官方微信公众号galaxixv
关于论坛G币的获得方法,请参考论坛公告的帖子
http://www.galaxix.com/bbs/read.php?tid=3158
快速回复
限200 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个