为了持续学习新的工具方法,我开发了一个我在每个生产环境中都需要的,但在 Unreal Engine 中并不存在的功能:一个带有 2D 密度热图的摄像机网格 profiler。

痛点:知道一个级别的重载点(实例、三角形、绘制调用)而无需手动飞行猜测,并且需要手动在每个问题区域进行-profile。因此,我开发了一个 C++ 插件:

➡️ 在级别上绘制一个摄像机网格 — 使用加载的几何体、导航网格体积或全局世界分区范围的边界 — 使用抖动放置和射线检测(或导航网格投影)地面验证

➡️ 自动将每个摄像机定位到级别的局部密度集中(每个资产集 “拉” 视图的重量和距离,摄像机面向热区,而不是空白空间)

➡️ 在 PIE 或真实独立/控制台构建中运行自动化-profile 进程 — Unreal Insights 跟踪 + 截图 + 每个摄像机帧时钟 —

➡️ 输出一个自包含的、可点击的 HTML 热图,涵盖四个指标 — 实例 / 三角形 / 绘制调用 / 动态光遮挡(过度)— ,并且有一个本地主机桥梁回编辑器:单击一个单元格可以跳转到那里或者选择它内部的精确内容(带有每个网格 LOD / Nanite 分解),或者单击一个摄像机可以看到它的截图、帧率和跟踪

➡️ 记录每个生成的日志,以便在热图内部可以切换到过去的运行,并且写入一个单文件诊断日志,使远程故障排除成为可能而无需将整个级别发送

两个模块:一个 Runtime 子系统用于编辑器自由的、控制台代表性的-profileing,和一个 Editor 模块用于网格生成和热图工具

这是一个小系列中第一个 profiler 工具,我正在开发来填补过去项目中的空白。

如果你想试试,可以在这里找到链接:
https://github.com/GabrielRheault/MeshDensityHeatMap