加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长百科 > 正文

研发实战:用RenderDoc验证有效渲染方式,优化Quest应用

发布时间:2020-01-10 03:27:49 所属栏目:站长百科 来源:映维网 Oculus开发者关系团队的一个主要任务是帮助开发者
导读:副标题#e# 来源:映维网 Oculus开发者关系团队的一个主要任务是帮助开发者优化游戏,令其能够有效地支持所有的Oculus硬件。所述团队中的开发者关系工程师克里斯蒂亚诺费雷拉(Cristiano Ferreira)正在通过系列博文来介绍如何通过RenderDoc来优化你的Quest
副标题[/!--empirenews.page--]

来源:映维网 

Oculus开发者关系团队的一个主要任务是帮助开发者优化游戏,令其能够有效地支持所有的Oculus硬件。所述团队中的开发者关系工程师克里斯蒂亚诺·费雷拉(Cristiano Ferreira)正在通过系列博文来介绍如何通过RenderDoc来优化你的Quest应用,包括如何轻松将其集成至你的工作流程,相关的基础知识,以及允许你在未来利用这项有用工具的技巧经验。对于第三篇博文,费雷拉探索了如何使以最有效的方式进行渲染,包括验证CPU和GPU渲染方法是否能够尽可能高效完成的关关键使用情景,下面是映维网的具体整理:

研发实战:用RenderDoc验证有效渲染方式,优化Quest应用

1. 验证多通道 vs 实例立体渲染(instanced stereo rendering)

由于VR渲染的性质,确保绘制调用的最优化非常重要。在幕后,引擎分别渲染两只眼睛。每只眼睛都有自己的模型视图投影矩阵,而后者由透镜设置限定的IAD(轴间距离)所定义。大多数人都知道IPD(瞳孔间距离)设置会影响轴间距离,商用引擎通常会为你处理这个问题,但你需要确保设置正确。下面是具体的概述:

1.1 单通道

对于基础通道中的每个网格

绘制左眼(一次绘制调用)

绘制右眼(一次绘制调用)

1.2 多通道

对于基础通道中的每个网格

绘制左眼(一次绘制调用)

对于基础通道中的每个网格(再一次)

绘制右眼(一次绘制调用)

1.3 实例立体渲染/多视图

对于基础通道中的每个网格

绘制双眼(一次绘制调用)

如你所见,实例立体渲染/多视图是最佳选择,因为它将使基本通道中的总绘制调用次数减少一半。

2. 验证没有使用临时缓冲区

检查输出/渲染纹理,以确保资源名称标记为RTTextureArray而非TempBuffer,ColorBuffer或其他名称。要应用MSAA和/或节约固定注视点渲染量,你必须直接写入交换链纹理。这同时将确保你不会意外地解析中间渲染目标/临时缓冲区,从而节省1ms-1.5ms的固定GPU解析成本。

交换链纹理的正确名称如下显示:

研发实战:用RenderDoc验证有效渲染方式,优化Quest应用

这是写入正确交换链纹理时的输出纹理名称。在这个示例中,你会看到选定的绘制调用位于名为“Final Blit Pass”的注释之下。这意味着你要使用先前生成的渲染目标并将其用作临时缓冲区,然后再把它复制到交换链纹理。GPU需要付出昂贵的解析成本,而仅将其映射到交换链纹理又要付出每像素成本。

研发实战:用RenderDoc验证有效渲染方式,优化Quest应用

我在前面显示的同一捕获帧中高亮了基础通道绘制调用。相应输出渲染目标显示的标签为“_CameraColorTexture”。这意味着引擎生成了一个中间渲染纹理并在后面用作blit/copy的输入资源,这意味着解析成本,没有固定注视点渲染像素着色器节省量和MSAA质量提升。这里说明的是,你需要始终关注渲染目标,确保仅在单通道中直接渲染到交换链纹理。

研发实战:用RenderDoc验证有效渲染方式,优化Quest应用

在上面的屏幕截图中,你可以看到Unity中的调试标记通过Resolve Shadows标记显式注释了解析阴影贴图的过程。你同时可以看到Final Blit Pass批注,意味着将临时颜色缓冲区复制到交换链纹理。

3. 验证阴影投射器/接收器/级联级别和阴影贴图分辨率(如若使用)

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读