微信扫一扫 分享朋友圈

已有 1237 人浏览分享

开启左侧

Renderdoc快速入门

[复制链接]
1237 1
才疏学浅,自学使用,手动翻译,难免有错,还望指正。

此文章只是Renderdoc官方文档入门的一个翻译,其中加了一些自己的理解,并不完全正确,观看请慎重。



RenderDoc是一种图形调试器,目前可用于 Windows、Linux、Android、Stadia 和 Nintendo Switch TM 上的 Vulkan、D3D11、D3D12、OpenGL 和 OpenGL ES 开发。



Renderdoc官方文档链接:

[color=inherit !important]Getting started - RenderDoc documentation​renderdoc.org/docs/getting_started/index.html
翻译笔记链接:此链接观看效果更佳,因为的我本来是打算只是自己记个笔记,自己看来着,后来想着不如分享给大家一起学习进步,于是就放到了知乎,搬运起来比较麻烦,一些效果丢失,就不再补充,感兴趣的可以看此链接。

[color=inherit !important]我来 wolai - 不仅仅是未来的云端协作平台与个人笔记​www.wolai.com/sixerrr/hn8UgYQdvTRRjVyP2GEyXx?theme=light

[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)



本文档简要介绍了如何使用RenderDoc来捕获和分析你的应用程序。它不会详细说明到底有哪些功能可用于挖掘内容,因为可以在其他地方找到这些功能。相反,它只关注从头到尾的工作流程以及在哪里大致可以找到不同的内容。

在本教程中,我们将使用 Sascha Willems 的 Vulkan 示例存储库中的调试标记示例。(其中这个地方我卡了好多点,必须严格按照它的操作来完成,还有一些配置问题,各种卡,需要下载一堆环境,各种查。太菜了)

捕获一帧
要截帧,请首先选择File→Launch Application。默认情况下,这将打开一个新的停靠窗口,你可以在其中配置捕获时将使用的不同设置。你可能会发现此窗口已经可用。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

默认设置在大多数情况下都工作得很好,因此你只需浏览到可执行文件或将其拖入可执行文件框中即可。 如果working directory框为空,则将使用可执行文件的目录。输入你可能需要的任何命令行,然后单击Launch以使用RenderDoc启动应用程序。

有关特定选项及其功能的更多详细信息,请参阅Capture Dialog的详细信息页面。

你应该选择RenderDoc的内部版本以匹配你的操作系统-64位Windows x64,反之亦然。

你只能使用64位版本的RenderDoc捕获64位进程。RenderDoc的任一版本都可以捕获32位进程。

RenderDoc在app中
RenderDoc的应用内覆盖[overlay]相当少,只是为了表明RenderDoc已成功加载并准备截帧。

准备好后,按下Capture键(F12或Print Screen),按键后的下一帧将被截取,这将显示在覆盖图上,让你知道帧已成功保存。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

当应用程序退出时,如果你捕获了一帧,它将自动开始在RenderDoc UI中打开。如果你没有截到帧,则不会发生任何事情,RenderDoc UI将恢复到你单击Launch时的状态。

如果你截取了多个图像,你将看到一个缩略图列表,该列表允许你根据需要打开(在当前实例或新实例中进行并列比较)、保存和删除它们。你也可以在程序仍在运行时访问此视图,有关获取多个帧截取的详细信息,请参阅 Capture Connection。但是请注意,对于简单的用例,你不需要担心这一点!

RenderDoc布局
RenderDoc的布局可以进行大量定制,因此本节将只介绍默认布局。我们将复习一下默认打开的窗口,以及如何使用每个窗口来分析你的程序。

这些窗口中的每个窗口都有一个更深入的部分,提供了有关每个功能和特性的详细信息,对于更复杂的窗口(如texture viewer),你可能希望浏览这些窗口以了解可用的内容,并在将来将其用作参考。

Texture Viewer

[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

更多细节可以在 Texture Viewer页面上找到。

texture viewer 的功能与你预期的差不多--它允许你检查应用程序中的texture和render target。

有各种可视化控件,允许你选择不同的通道、MIP级别或纹理的其他方面,更多详细信息可在上面的页面中找到。这里我们只谈一谈亮点:

  • 缩略图条(默认情况下位于右侧)列出当前绑定和使用的输出目标或着色器输入。当你浏览场景时,选择其中的每一个(缩略图上的红色轮廓指示选择了哪个)将跟随绑定到该窗口的所有资源。

例如,如果选择render target 0 ,则纹理显示将更新以显示当前绑定的render target 0,而不考虑它是哪个纹理。如果正在跟踪的窗口变为未绑定或未使用,则在你选择其他管线窗口或再次绑定该窗口之前,上一个纹理仍将显示。显示未绑定纹理窗口,其缩略图下方列出未绑定。

要打开特定纹理并在其更改窗口或解除绑定时进行观察,可以在新的锁定选项卡中打开它。双击它,右键单击它,然后“open in new locked tab”,或者按名称打开它


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

  • 纹理的格式和尺寸显示在纹理显示本身正下方的状态栏上。同样,在此状态栏上,你可以看到当前悬停在其上的像素坐标,以及可以通过在纹理显示上的任意位置单击鼠标右键来检查所拾取的像素值


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

  • 此外,在纹理查看器窗口的右下角,围绕最后拾取的像素有一小部分缩放的上下文。你还可以从此处启动pixel history或debugger,像如何调试着色器中所述。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

  • 我们将突出显示的最后一件事是范围控件。这是一个相当灵活的工具,允许你调整图像中的可见范围。这在查看范围在[0,1]之外的HDR图像时特别有用。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

要使用范围控件,可以拖动白点和黑点进行微调,或键入值以更改白点和黑点的值(默认情况下分别为0和1)。范围控件本身右侧还有一些有用的控件,Texture Viewer页面中也详细介绍了这些控件。

Event Browser

[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

有关更多详细信息,请访问 Event Browser页面以及我的翻译版本

Event Browser是单步执行框架并浏览其中发生的事件的主要方法。第一列EID(Event ID)按时间顺序指示这是帧中的哪个事件或API调用。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

默认情况下,此处列出的事件称为操作[action]。绘制和调度[dispatches]是操作的示例,但也是修改资源(如清除[clear]和复制[copy])的事件。状态设置和其他CPU更新调用(如Maps)不包括在API Calls视图中(见下文)。你可以使用筛选器字段根据需要包括或排除事件,有关详细信息,请参阅如何筛选可见事件

可以对列进行自定义和重新排序,TIMLINE_MARKER选择列按钮(或右键单击)将允许你选择要显示的列。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

标准性能指标可用,并按照你的预期创建层次结构/标签。这些控件可以展开或折叠,并且可以通过常规控件进行键盘浏览-左和右在层次结构中向上或向下移动,向上和向下通过相邻项向上和向下移动。有关这些标记的更多信息,请参见如何为捕获添加批注





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




‘Current’事件-即我们正在检查图形状态的事件用绿色标志FLAG_GREEN突出显示,并且该行突出显示。选择任何行后,它都会立即成为新的当前事件。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

选择Event Browser后,可以按快捷键CTRL-F查找给定事件或操作。你可以输入一个数字以跳转到给定的EID。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




使用Asterisk_Orange书签按钮可以为事件添加书签,快捷键为CTRL-B。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




已添加书签的事件列表将显示在事件浏览器顶部的工具栏上,它们和快捷键CTRL-1至CTRL-0(键盘上的1234567890)将跳转到相应的已添加书签的EID。这些快捷键可以在应用程序中的任何位置运行。

书签可以与截帧一起保存并与其他人共享。有关这方面的更多信息,请参阅如何为截帧添加注释?页面。

API Inspector

[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)

更多详情请参见API Inspector页面。

选择新事件时,API调用窗口更新。它显示了各个API调用及其参数。如果选择了某个操作[action],列表将显示前一个操作和此操作之间的所有API调用,并且此列表中的最后一个条目[entry]始终与该操作本身相对应。可以展开每一行以显示传递给该API调用的参数。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




窗口底部是一个可选的可扩展部分,它显示从应用程序代码到API函数的调用堆栈(如果可用并已记录)。(PS:双击Callstack可显示)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




要查看这些调用栈,你必须首先解析[resolve]截取时记录的符号。为此,请单击Resolve Symbols菜单下的Tools。有关此过程的更多详细信息,请参阅指南:如何截取调用栈?

Timeline Bar




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




可以在Timeline Bar页面上找到更多详细信息。

timeline bar本质上是帧的替代视图,水平轴是帧中的时间。水平轴由API调用均匀缩放,以便每个API调用在任何给定缩放级别都具有相同的宽度。

在这种情况下,帧标记层次是自上而下的,可以通过单击每个部分来展开或折叠(就是从上往下的父子层级关系,Render Scene下有Toon和WireFrame两个层级,再往下就是蓝色小点,代表的是每个操作)。在此图中,“Render Scene”和“Toon shading draw”都已展开,但其他部分保持折叠状态。每个操作都被渲染为它所属的层次结构部分下的蓝色小点。当前action (如果可见)呈现为绿色圆圈。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




当前操作周围有一条垂直线,上方有一条FLAG_GREEN(小绿旗),鼠标悬停的事件周围有一个灰色轮廓。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




在帧中使用当前选定的纹理时,引用该纹理的每个action都会在条形图下方绘制一个标记。标记的不同颜色表示该点上的操作是否正在写入纹理、读取、同时读取和写入等。如果标记距离太近,它们会自动间隔以便于阅读,除非放大,否则不一定会对齐特定的action。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




这是一个非常有用的工具,可以通过帧跟踪数据,还可以在目标被写入不应该写入的位置时突出显示潜在的冗余或错误。

Pipeline State




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




有关更多详细信息,请参阅Pipeline State页面。

Pipeline State窗口可能是最详细的,但也是最容易理解的。此窗口仅列出图形管线的每个有状态的方面,以及当前事件中存在的值或对象。

默认情况下,管线将不包含空或未使用的条目-换言之,如果着色器仅从资源0和1读取,即使某些内容绑定到插槽[slot]2,也不会显示。同样,如果插槽3-128为空,它们也不会显示。可以通过工具栏上的Show Unused ItemsShow Empty Items切换来修改此行为。Show Unused的将显示插槽2,即使着色器不从中读取也是如此。Show Empty将显示插槽3-128。此行为因API的不同而有很大差异,因为着色器绑定模型通常非常不同。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)








[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




需要注意的一点是,每个管线阶段的部分中的大多数内容都可以展开以更详细地查看。查找Go图标(Go_Arrow)表明有更详细的视图可用。通常,这意味着对于着色器,将打开着色器源码/反汇编[disassembly];对于纹理类型资源,texture viewer将打开该资源的新选项卡;对于buffer,它将打开Mesh Viewer窗口、该buffer的原始视图或具有恒定内容的弹出窗口-具体取决于buffer的绑定位置。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




另一个有用的规则是,在提到API对象的任何地方,其名称都以粗体显示,后跟一个链接。这是指向 Resource Inspector窗口的可单击链接,通过该窗口可以更详细地检查对象是如何定义的,以及它链接到了哪些其他API对象。


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)


[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




有关更多详细信息,请参阅:如何查看对象的详细信息?

Mesh Viewer




[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




有关更多详细信息,请参阅Buffer/Mesh Viewer页面。

Mesh Viewer允许你在几何数据通过管线时对其进行检查。网格视图中的原始数据和3D检查都是可能的。预览窗口中的选项卡允许你选择要在管道的哪个部分可视化数据。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




默认情况下,预览显示网格的线框渲染,但你可以选择实体[solid]着色选项。这可以是简单的着色,也可以使用次要[secondary]属性作为颜色。右键单击任何列都可以选择要渲染的次要属性。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)








[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




你还可以选择哪个属性是位置,以防自动检测失败或你想要在3D空间中可视化另一个属性(如纹理坐标)。

可以在网格预览上按住或单击鼠标右键来选择网格数据表中的顶点。(鼠标左键按住可以转动模型,右键选择模型的面)





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




最终顶点输出数据的默认视图(可以使用重置按钮ARROW_UNDO重置为该视图)显示视图原点处的摄影机通过视口向外看。默认情况下,输出会尝试从输出数据猜测透视矩阵,但这可以通过打开选项齿轮并输入更准确或更正确的值来细化或更改为正交视图。





[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)








[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]






添加图片注释,不超过 140 字(可选)




结束语
显然,你在程序中完成的内容会因你需要研究的内容而有很大不同,但希望这能让你对可用的功能有一个概述。还有许多更详细的功能可用,本帮助的其余部分将帮助你查找这些功能。

查看Tips&Tricks页面可能是个好主意,该页面列出了几个不明显但可能会节省大量时间的有用笔记。


评论 1

近尘  魔法画童  发表于 2024-1-6 12:03:22 | 显示全部楼层
学习一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

2

主题
精彩推荐
热门资讯
网友晒图
图文推荐
  • iOS App

  • 安卓App

Archiver|手机版|小黑屋|技你太美101

GMT+8, 2024-6-29 10:30 , Processed in 0.100469 second(s), 30 queries .

Powered by 技你太美101

© 2024 JNTM101 Team