源:映射维网
Oculus开发人员团队的一个主要挑战是优化游戏并有效地支持所有Oculus硬件。 前几天,该团队的开发人员关系工程师克里斯蒂安诺·费雷拉( Cristiano Ferreira )支持了几家quest公司的首批内容。 前几天,他介绍了通过RenderDoc优化quest公司的应用程序的方法。 其中包括工作流、相关基础知识,以及将来可利用该有用工具的经验。 下面是对映网的具体整理
RenderDoc是一个很好的工具,可以通过观察渲染机制背后的情况来确定事情是否按计划进行。 商业游戏引擎可能会隐藏实际的渲染代码,或者很难在各种嵌入式子系统中进行解码。 为什么引擎可以看到场景在单帧中的渲染方式? 欢迎来到RenderDoc。
使用RenderDoc捕获帧时,所有图形API命令和资源都将按帧的发布顺序记录和播放,以确定是否按计划处理。 RenderDoc有助于大致了解GPU执行绘制所需的时间和逻辑组(以调试标记表示)。 由于基于块的渲染性质,数字本身不是100%精确,但相互之间是十分精确的。 也就是说,您可以查看所有绘图,而不是“此绘图调用花费了1.34毫秒”,并将相同像素数的1.34毫秒绘图设置为大于0.2毫秒,以确定生成绘图的资源和管道状态是否足够最佳。
RenderDoc的另一个重点是完全免费和开源。 始终使用最新的公共稳定版本,以确保工具包括所有新功能、错误修复和性能优化。 特别是,请访问官方RenderDoc下载页面,然后选择适合所选平台的副本。
注:本文随时间动态添加。
开始使用RenderDoc
快速查看第一次打开RenderDoc时的基本窗口项目。 在棋盘的眼睛主窗口上方显示一系列标签。 以下是每个项目的简要概述
时间轴:不同阶段(不透明、透明、天空盒、early-z、阴影通道等)的可视时间。 此外,还会显示要渲染的读取/写入,以便快速查看生成帧的方式是否会产生昂贵的分析成本。 事件浏览器(实践浏览器):列出帧的所有API调用,并用调试标签分隔逻辑绘图组。 如果在此处选择绘制,则所有其他选项卡(如纹理查看器或网格查看器)将填充并更新,具体取决于场景。 renderdoctabbedfunctionalitytextureviewer (纹理查看器):显示选定绘画的输入纹理和输出纹理( RT )。 单击单个纹理可查看其格式/分辨率/可用的MIPS/MSAA级别等。 管线状态:选择任何管线状态以显示绑定资源的所有属性和材质属性(透明度/混合状态、纹理/采样器等)。 Mesh Viewer :在本地空间中显示输入网格,以确定要绘制的内容。 同时显示顶点数量(有助于LOD系统验证)、屏幕空间中的后投影视图和顶点特性等。 launch应用程序(启动应用程序) :选择要在RenderDoc host上运行和附加的应用程序。 如果选择“本地”,则可以在计算机上运行应用程序。 如果所选方案为“远程: oculus quest”,则显示设备上可用的软件包列表。 Resource Inspector (资源检查器):显示所有与GPU相关的资源的列表,包括渲染目标、临时缓冲区、纹理、着色器和网格。 Statistics (统计数据):显示描绘次数和GPU存储器的使用状况等。
将RenderDoc附加到Oculus Quest
在命令提示符下运行adb devices命令时,请确保枚举。 第一次通过USB电缆连接到Oculus Quest时,系统会提示标头允许主机访问。 为了确保稳定性,建议使用USB 2.0 A到USB-C或专用的Oculus Link电缆。 如果显示设备,则可以在“RenderDoc”窗口左下角的“方案”菜单中使用该设备。 从列表中选择Oculus Quest,然后等待几秒钟,将RenderDoc捕获层APK转发到设备,以便客户机连接到远程方案中的服务器。
启动RenderDoc并连接到游戏/应用程序
要启动应用程序,请导航到正确的选项卡Launch Application,然后单击Executable Path旁边的小图标。 文件浏览器打开,显示可执行文件。 此外,对于Oculus Quest,还会显示所有可用的APK。 如果您位于本地( PC ),则还可以设置工作目录(如果不同于默认目录)。
单击右侧的Launch按钮启动RenderDoc所连接的应用程序。 (注意:需要项目的开发构件才能添加。) .
4 .捕获帧
要捕获帧,请单击“捕获帧( s ) immediately”按钮。 然后,RenderDoc截取对图形场景的所有调用、资源集等,并将其保存到. rdc文件中。 提示:如果出现问题,请隐藏面罩附近的接近传感器。 偶尔贴上磁带,让您能够继续使用装置进行分析与最佳化。 如果接近传感器检测到磁头关闭时进行帧捕获,则会生成空帧。 您生成的文件将显示在Captures collecte部分。 退出RenderDoc后,已经习惯将捕获的内容存储在桌面上,以便以后轻松重新加载。 如果使用Oculus Quest进行捕获,则需要将. rdc文件传输到主机PC,这可能需要一段时间。
注意:如果您正在开发Oculus Quest内容,并且应用程式在撷取时发生崩溃,通常表示系统记忆体不足(您可以参阅RenderDoc日志来检查问题)。 在设备上运行RenderDoc捕获时,必须保留足够的内存以支持应用程序内存要求、RenderDoc捕获层内存要求以及保存生成的. rdc文件所需的内存。 以下是减少游戏记忆体使用量并撷取的技巧
将版本设置为最低纹理分辨率: Unity提供全局选项,用于启用八分之一的纹理大小,并在优化阶段启用纹理流。 删除场景中的其他加载,而不是完全卸载和完全加载。 尽可能删除所有音频。
5 .调查你的捕获
摘要:首先打开Statistics选项卡,查看发出了多少绘图调用。 同时,我们可以告诉您GPU记忆体的使用量,并提供直观的细分。 可视化绘制/时间:然后打开“Texture Viewer”选项卡,打开“Overlay”菜单中的“Highlight Draw Call”选项,单击“Gather Timings (clock )”按钮,并在“Output”纹理区域中单击“render Tata” 这提供了每个绘图调用的相对定时,有助于找到最耗时的绘图调用。 在事件浏览器中单击调用可在Render Target查看器中突出显示。 最佳化:此时,我们将寻找最适时的绘图,并尝试找出原因。 着色器是否太复杂? 输入资源属性的设定是否不正确? 我的渲染顺序异常吗?
六.总结
我们介绍了将RenderDoc附加到Oculus Quest游戏和应用程序中的基本知识,我们将在以后详细研究。 我们立即发布以下博客,了解硬件和软件堆栈,并为应用程序提供最佳的渲染方法和设置。 如果您想进一步了解RenderDoc资源,请务必访问官方RenderDoc网站和文档。 您可能还会发现有用的开始资源,如介绍、快速入门指南和Android用户指南。
链接: https://yi vian.com/news/69789.html