GPU Usage Profiler 模块显示应用程序的 GPU 时间使用情况。只能在运行模式 (Playmode) 下使用 GPU Profiler 或者用于应用程序的构建。不能用于对 Editor 进行性能分析。
注意:如果在 Player Settings 中启用了 __Graphics Jobs__,则不支持 GPU 性能分析。请参阅有关独立平台 Player 设置的文档以了解更多信息。此外,在 macOS 上,只能在 Mavericks 10.9 或更高版本上对 GPU 进行性能分析。
下表列出了 GPU Usage Profiler 模块支持的平台:
平台 | 图形 API | 状态 |
---|---|---|
Windows | DirectX 11、DirectX 12、OpenGL | 受支持 |
Vulkan | 不支持 | |
macOS | OpenGL | 支持。注意:Apple 已废弃对 OpenGL 的支持。 |
Metal | 不支持。改用 XCode 的 GPU 帧调试器 UI。 | |
Linux | OpenGL Core | 受支持 |
Vulkan | 不支持 | |
PlayStation 4 | libgnm | 受支持。 |
Xbox One | DirectX 11、DirectX 12 | 受支持。 |
开关 | Switch API | 受支持 |
WebGL | 所有 WebGL | 不支持 |
Android | OpenGL | 在运行 NVIDIA 或 Intel GPU 的设备上受支持。 |
Vulkan | 不支持 | |
iOS、tvOS | Metal | 不支持。改用 XCode 的 GPU 帧调试器 UI。 |
Tizen | OpenGL | 不支持。 |
在 Windows 上,仅当采用 Direct3D 9 和 Direct3D 11 API 时,Unity 才支持 Editor 中的 Playmode 性能分析。这种情况下便于快速分析,因为意味着不需要构建播放器;但是,性能分析器受运行 Unity Editor 的开销所影响,可能会使性能分析结果不够准确。
GPU Usage Profiler 模块的图表有几个不同的类别,可用于调查 GPU 的时间使用情况。要更改图表中类别的顺序,可以在图表的图例中拖放这些类别。还可以单击某个类别的有色图例以切换是否显示。
图表类别 | 描述 |
---|---|
Opaque | 内置渲染管线渲染不透明对象的时间。 |
Transparent | 内置渲染管线渲染透明对象的时间。 |
Shadows/Depth | 内置渲染管线渲染阴影贴图的时间。 |
Deferred PrePass | 内置延迟渲染管线渲染深度缓冲区预通道 (pre pass) 的时间。 |
Deferred Lighting | 内置延迟渲染管线处理光照的时间。 |
PostProcess | 内置渲染管线处理后期处理效果的时间。 |
Other | 处理可编程渲染管线等其他事务的渲染时间。 |
选择 GPU Usage 模块时,下面的详细信息面板将显示应用程序在选定帧内花费的时间的细分信息。可以将时间数据显示为层级表。要更改表视图,请使用详细信息面板中的左上方下拉选单(默认设置为 Hierarchy)。可用视图有:
视图 | 功能 |
---|---|
Hierarchy | 按时间数据的内部层级结构对这些数据分组。此选项以降序列表格式显示应用程序调用的元素,默认按花费的时间排序。还可以按 GPU 时间总量或调用次数对这些信息进行排序。要更改用于对表进行排序的列,请单击该表列的标题。 |
Raw Hierarchy | 以类似于发生计时的调用栈的层级结构显示时间数据。Unity 在此模式中单独列出每个调用栈,而不是像在 Hierarchy 视图中一样将它们合并。 |
选择 GPU Usage Profiler 模块后,此性能分析器的底部面板将显示选定帧的层级时间数据。从层级视图中选择一项即可在右侧面板中查看贡献的细分情况。请参阅有关 Profiler 窗口的文档以进一步了解 Profiler 窗口的功能。
表视图包含以下列:
列 | 功能 |
---|---|
Total | Unity 在特定函数上花费的总时间(以百分比表示)。 |
DrawCalls | 此帧中调用此函数的次数。 |
GPU ms | Unity 在特定函数上花费的总时间(以毫秒为单位)。 |