您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 长春分类信息网,免费分类信息发布

看看研发实战一如何通过RenderDoc优化Quest应用

2023/3/29 2:14:51发布44次查看
(2019年12月11日)oculus开发者关系团队的其中一个主要任务是帮助开发者优化游戏,令其能够有效地支持所有的oculus硬件。所述团队中的开发者关系工程师克里斯蒂亚诺·费雷拉(cristiano ferreira)曾为数款quest首发内容提供了帮助。日前,他撰文介绍了如何通过renderdoc来优化你的quest应用,包括如何轻松将其集成至你的工作流程,相关的基础知识,以及允许你在未来利用这项有用工具的技巧经验。下面是映维网的具体整理:为了快速增长,vr主题乐园不惜改变战略,重新布局产品,从而获得意想不到的效果。
renderdoc是一项用于窥视应用渲染机制幕后情况,从而确定事情是否按预期进行的优秀工具。对于商用游戏引擎,实际的渲染代码要么是隐藏,要么难以通过于各种内置子系统来解密。如果能够看到引擎是如何确定场景在单帧中的渲染方式,何乐而不为呢?欢迎使用renderdoc。
当你通过renderdoc捕获一帧时,它会按照帧的发出顺序记录所有图形api命令和资源,然后再播放它们,这样你就可以判断事情是否按照预期进行。renderdoc同时可以帮助你大致了解gpu执行绘制需要多少时间和绘制逻辑组(由调试标记表示)。由于基于图块的渲染的性质,数字本身并非100%精确,但彼此之间足够准确。换句话说,你看到的不是“这个绘制调用花费了134毫秒”,而是能够查看所有绘制,并发现覆盖类似像素量的134毫秒绘制要久于02毫秒绘制,然后再确定用于生成所述绘制的asset和管道状态是否足够优化。
关于renderdoc的另一个关键要点是,它完全免费,并且开源。你应始终使用最新的公共稳定版,从而确保工具纳入了所有的新功能,错误修复和性能优化。具体请访问官方的renderdoc下载页面,并选择适用于你所选择平台的副本。
注:本文将随时间推移而动态地增删补充。
1 开始使用renderdoc
我们先来快速过一遍首次打开renderdoc后的基本窗口项目。在棋盘格主窗口的上方,你会看到一系列的标签。以下是每个项目的简要概述:
timeline(时间线):能够直观地显示不同阶段(不透明,透明,天空盒,early-z,阴影通道等)所花费的时间。它同时会显示渲染目标的读写,所以你可以快速查看生成帧的方式是否会产生成本昂贵的解析成本。
event browser(实践浏览器):列出帧的所有api调用,并且用调试标记标签分开逻辑绘制组。在这里选择绘制会根据情景填充更新所有其他选项卡(纹理查看器和网格查看器等)renderdoc tabbed functionality
texture viewer(纹理查看器):显示所选绘制的输入纹理和输出纹理(rt)。单击单个纹理可以查看其格式分辨率可用的mipsmsaa级别等。
pipeline state(管道状态):选择任何管道状态以查看绑定资源的所有属性和材质属性(透明度混合状态和纹理采样器等)。
mesh viewer(网格查看器):在本地空间查看输入网格,从而确定正在进行绘制的是哪个绘制。你同时可以看到顶点数目(对于验证lod系统非常有用),屏幕空间中的后投影视图和顶点属性等。
launch application(启动应用):选择要运行并附加到renderdoc host的应用程序。如果你选择的情景是“local”,则可以在计算机执行应用程序。如果选择的情景是“remote:oculus quest”,你将获得设备可用包的列表。
resource inspector(资源检查器):显示渲染目标,临时缓冲区,纹理,着色器和网格等所有gpu相关资源的列表。
statistics(统计数据):显示你的绘制次数和gpu内存使用情况等。
2 将renderdoc附接到oculus quest
在命令提示符中运行adb devices命令时,请确保其枚举。第一次通过usb数据线连接oculus quest时,头显内会提示你允许从主机访问。为了确保稳定性,我建议使用usb 20 a到usb-c或专用的oculus link数据线。如果你看到设备,则设备应该在renderdoc窗口左下角的情景菜单中可用。从列表中选择oculus quest,等待几秒钟,系统将会renderdoc捕获层apk传输到设备,并让客户端连接到远程情景的服务器。
3 启动并将renderdoc附接到你的游戏应用
要启动应用程序,请转到正确的选项卡“launch application”,然后单击“executable path”旁边的小图标。这将打开一个文件浏览器,而你在其中可以看到可执行文件,或者如果是oculus quest,它将显示设备所有可用的apk。如果你在本地(pc),你同时可以设置工作目录(如果它与默认目录不同)。
单击右侧的“launch”按钮以启动附接renderdoc的应用程序。(注意:需要是项目的development build才能进行附加)。
4 捕获一帧
要进行帧捕获,只需点击“capture frame(s) immediately”按钮。然后,renderdoc将拦截针对图形情景的所有调用和asset等,并将它们保存在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 target”。这样做会为我提供每个绘制调用的相对定时,并帮助我找出花费时间最长的绘制调用。我可以在“event browser”中单击任何调用,并在“render target”查看器中突出显示。
优化:这时,我将寻找具有最高定时的绘制,并尝试确定原因。着色器过于复杂吗?输入资源属性设置不正确吗?我的渲染顺序异常吗?
6 总结
我们已经介绍了将renderdoc附加到oculus quest游戏或应用程序的基本知识,后面我们就以继续深入探索。我们很快将发布后续的博文,从而帮助你进一步了解硬件和软件堆栈,并为应用程序提供最佳的渲染方法和设置。如果你想挖掘更多的renderdoc资源,请务必查看官方的renderdoc网站和文档。你可能同时会发现其他方便的入门资源,包括简介,快速入门指南和android使用指南。
长春分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录