英特尔® GPA 4.0 使用技巧:利用像素历史和像素超量绘制模式,最大程度减少超量绘制

简介
在产品发布前分析和优化您的图形游戏或图形应用时,您需要在渲染速度和图像质量之间进行权衡 - 使二者保持最佳平衡将有助于您提高游戏整体畅玩体验,进而吸引更多潜在玩家。

英特尔® 图形性能分析器(英特尔® GPA)产品工程师与大型游戏公司的游戏开发人员紧密合作,旨在确保产品包含恰当的特性集,帮助他们在渲染速度和图像质量之间进行权衡。其中两个特性更实用 - 像素历史(Pixel History)超量绘制(Overdraw) 模式。这两种模式常常共同使用。本文将为您说明如何在英特尔® GPA 帧分析器应用中使用这两种模式,从而优化渲染顺序和/或删除对游戏整体“可玩性”不发挥作用的渲染通道。

另外,我们还将利用英特尔® GPA 术语“Erg”说明可写入至渲染目标的 Microsoft DirectX* API 调用。

最大程度减少超量绘制
借助英特尔® GPA 帧分析器,您可以找到冗余或场景中不重要的 Erg。例如,如果您花费的渲染时间很长,那么该特性可帮助您找到利用大量 Erg 进行渲染的那些像素 - 这可能能会找到有关渲染顺序的问题和/或利用 LOD(层次细节)针对该场景进行优化的机会。此外,通常,通过利用多个渲染通道可产生光效,利用英特尔® GPA 中的该特性有助于确定您能否减少迭代的数量,从而产生具有更高性能的类似视觉效果。

开始时,可利用 gpasample.exe 捕获一个代表帧,默认状态下,可利用“热键”CTRL+SHIFT+C 捕获帧(此外,您还可以利用“触发器”捕获帧,如欲了解该特性的更多信息,请参阅英特尔® GPA 帮助文件)。

一旦创建完帧捕获文件后,我们需要利用英特尔® GPA 帧分析器(通过 Microsoft* Start“开始”菜单运行)加载。

现在,我们需要在工具中选择大量选项,以便利用像素历史超量绘制模式。以下段落之后的截屏图显示出我们所选的设置:

  • 我们从“Scene Overview Panel”(场景概述面板)中选择了三个渲染目标:“Fire Pits - color only”(火坑 - 仅颜色), “Fire Pits - depth only”(火坑 - 仅深度)以及“Stairway scene - color only”(楼梯场景 - 仅颜色)。如要检查场景内的所有渲染目标,应选择“Entire Frame”(整个帧)对话框。“Scene Overview Panel”(场景概述面板)位于窗口左侧中部。
  • “Render Target Viewer Panel”(渲染目标查看器面板)包含上一步中所选的三个渲染目标(RT 18、RT 420 和 RT 719)及最后的Frame buffer(帧缓冲器)。选择 RT 719,“Render Target Viewer Panel”(渲染目标查看器面板)会出现在窗口左上角。
  • 选择“Render Target Viewer Panel”(渲染目标查看器面板)中的“Overdraw”(超量绘制)“Pixel History”(像素历史),在灰度模式中重新渲染该渲染目标(RT 719)。显示哪些像素被写入的次数最多 – 颜色越浅,像素受 Erg 影响的次数越多。随着将指针移动到经渲染的查看器重,指针变成十字形状,您可以选择其中一个颜色较浅的像素(在 547,168 位置上),此时“Tab Panel”(选项卡面板)中的“Pixel History Tab”(像素历史选项卡)打开。

modified.png

如以上截屏图所示,渲染至像素的所有 Erg(本例中有 8 个Erg)显示于“Tab Panel”(选项卡面板)内的图像左侧。除了 Erg 编号外(如,Erg 11),工具还提供 Erg 类型(DrawIndexedPrimitive)、Erg 受像素影响的次数(2 次)以及该 Erg 被渲染至该像素的颜色。如果渲染引擎拒绝 Erg 尝试对渲染该像素,则显示“X”而不是颜色值,此外,还将显示不渲染的原因(如“Pixel was Z-rejected”(像素是 Z-rejected))。

穿过 ergs,您可以看到该像素发生了哪些情况。如果您发现两个影响像素的 Erg 是同一个类型,了解通过删除其中之一您可以获得多少性能:选择 erg,然后进入“Experiments Tab”(试验选项卡),选择“Disable Erg(s)”(禁用 Erg)复选框,查看差异。

此外,该分析的常见结果是,您看到像素多次被完全渲染 - 即,不存在 Erg 被拒绝的情况(可能由“X”表示)。不同的绘制顺序视着色器复杂度的不同,可以显著提高渲染性能,这是因为您无需完全渲染仅由以后绘制的 Erg 覆盖的像素(而是接近查看器)。在这个特定示例中,我们发现,游戏的渲染通道非常高效,因为仅 Clear(清除)erg(Erg 10)和一个 DrawIndexedPrimitive Erg(Erg 11)使用整个渲染通道 - 其它 6 个因 Z 缓冲器测试被拒绝。

一旦您找到并解决问题,返回工具,查看场景的其它方面或其它渲染目标是否还可被优化。

其它特性
以下截屏图显示工具的其它一些实用特性:
extra-credit.png

在该模式中,您可以放大或缩小“Render Target Viewer”(渲染目标查看器)窗口和“Pixel History”(像素历史)窗口,以便利用各窗口左上角的小望远镜图标(以红色突出显示)显示更多/更少细节。如要更快速地缩放,您还可以双击任一窗口,自动放大窗口,详细查看场景(然后再次双击,返回至默认视图)。

此外,您还可以快速选择所有影响所选像素的 Erg(利用“Select Ergs”(选择 Erg)按钮),或右键点击“Pixel History”(像素历史)选项卡和“Select only this erg”(仅选择该 Erg)“Add this erg to the selection set”(将该 Erg 添加至选择集)上的某一个 Erg。然后,您可以在英特尔® GPA 帧分析器内对所有选定的 Erg 进行其它试验(如,删除 Erg,以查看不含这些 Erg 时的性能和视觉影响)。

结论
英特尔® GPA 帧分析器内的“Pixel History”(像素历史)“Overdraw”(超量绘制)模式对于以可视化方式了解场景的整体复杂度非常有用。借助该特性,您可以了解您的游戏如何渲染每个像素,以便利用该模式优化渲染顺序和/或删除渲染通道,从而优化渲染顺序和/或删除对游戏整体“可玩性”不发挥作用的渲染通道。

如欲了解有关这个特性的更多信息,请查看产品帮助文件。如欲了解有关英特尔® GPA 的更多信息,请访问英特尔® GPA 主页,通过这个页面,您可以了解到与产品有关的更多信息,包括各种培训视频及与产品有关的其它重要资源的链接。


* 文中涉及的其它名称及商标属于各自所有者资产。

有关编译器优化的更完整信息,请参阅优化通知