来历:映维网 作者 吴羽桦
Oculus开发者联系团队的一个首要任务是协助开发者优化游戏,令其能够有效地支撑一切的Oculus硬件。所述团队中的开发者联系工程师克里斯蒂亚诺·费雷拉(Cristiano Ferreira)曾撰文介绍了怎么经过RenderDoc来优化你的Quest运用,包含怎么轻松将其集成至你的作业流程,相关的基础知识,以及答应你在未来运用这项有用东西的技巧经历。日前,费雷拉经过第二篇系列博文来持续介绍RenderDoc的技巧经历。下面是映维网的详细收拾:
在榜首篇博文之后咱们已知道该怎么样运用RenderDoc,下面咱们来看看Oculus Quest硬件和软件堆叠。
延伸阅览:研制实战:怎么经过RenderDoc优化Quest运用
1. 怎么及怎么运用固定注视点烘托
固定注视点烘托(Fixed Foveated Rendering;FFR)是咱们操作体系中支撑的图形功用,它能够节约像素作业负载的很多时刻。FFR仅用单个像素上色器调用在眼图缓冲区大略的外围区域烘托大略的像素块。当看向前方时,玩家在很大程度上不会留意到这种大略的像素。但在某种状况下,依据你的注视点等级,玩家的确会留意到它们。这包含:
落在注视点区域内的高对比度纹路落在注视点区域内的纹路硬线延伸至注视点区域的锋利文字
咱们支撑五个开箱即用的注视点等级,它们能够在不添加负载的状况下每帧进行更新。这种快速切换功用十分有用。例如,若某种状况会出现GPU功用峰值(如玩家行将爆破一堆炸药桶),则能够同一帧抢先进步FFR等级。
这五个注视点等级(映射到枚举)是:
0-off1-on(low)2-on(medium)3-on(high)4-on(high top)
在上图中,白色区域的分辨率为固定,纹路的每个像素将由GPU独立核算。但赤色区域仅核算像素的1/2,绿色区域为1/4,蓝色区域将为1/8,洋赤色图块则为1/16。当GPU将核算结果存储在通用内存中时,体系将在解析时从核算出的像素中刺进丢掉的像素。
2. 可编程CPU/GPU频率
为进步续航才能,Oculus Quest操作体系将动态调理或添加CPU/GPU频率,或依据功用启发式协助更快速地输出帧。虽然操作体系在运用曩昔的帧守时启发式来确认适宜的能耗水平方面十分超卓,但没有人比你自己更清楚自己的游戏/运用。所以,咱们答应开发者逐帧设置设备的最低CPU/GPU频率。在上述带有炸药桶的状况下,你能大大的提高CPU和GPU的频率。爆破或许触及额定的物理进程,方针激活和制作调用,这或许会令CPU要求激增,并需求额定的particle billboard,然后消耗额定的GPU功用。在其他状况下,你或许只需GPU正常但CPU增压(反之亦然)。你能够独立切换每个等级。所述API的作业方式与固定注视点烘托的设置十分类似:
CPU and/or GPU level 0:CPU/GPU频率没有下限CPU and/or GPU level 1:将CPU/GPU频率的下限设置为较低CPU and/or GPU level 2:将CPU/GPU频率的下限设置为中等CPU and/or GPU level 3:将CPU/GPU频率的下限设置为较高
请记住,在挑选下限时要恪守“满意需求”的理念,这一点很重要。你有必要考虑续航才能,以便玩家鄙人次充电之前尽或许长时刻地开玩游戏。以level 3全时操作或许会导致设备过热。
3. 什么是多重采样抗锯齿(Multisample Anti-Aliasing;MSAA)
MSAA能够令游戏从良变优。2x/4x MSAA会发生额定的负载,但相对而言,移动设备的核算成本远不及PC。选用某种等级的MSAA,而非将分辨率(烘托份额)保持在原始水平是简直总是一种首选计划。在启用MSAA的状况下进行烘托时,文本看起来会愈加明晰。
4. 根据图块的推迟烘托 vs 即时形式烘托
与我协作的大多数VR开发者都拥有为PC或独显(即时形式烘托)进行开发的丰厚经历,但对移动GPU(根据图块的烘托)却没有太多经历。两者之间的首要差异在于,移动GPU已针对带宽进行了优化(最大极限减少了GPU在片段上色期间需求拜访的外部存储器数量),然后将功耗降至最低。要完结这一点,在开端任何上色之前,体系会把几何图形悉数投影到前面并分配给图块(帧缓冲区的一小部分)。在处理完一切几何图形之后,每个图块都会上色并逐个写入外部存储器。这样一来,单个制作在“binning”阶段的成本会大幅度的下降。下面简略介绍了每种烘托办法在提交制作调用后的作业原理:
4.1 即时形式烘托
关于每次制作调用:
关于制作调用中的每个图元:1.1 为每个极点履行极点上色器;2.2为投影图元掩盖的每个片段履行片段上色器。
根据图块的烘托:
阶段1:关于烘托阶段中的每个制作:
关于制作调用中的每个图元:1.1 为每个极点履行极点上色器;1.2. 假如原始图元没有被除掉,则将其附加到与之相关的图块列表中。
阶段2:关于烘托阶段中的每个图块(请留意,单通道游戏/运用的一切几何图形在这一阶段都已投影)
关于图块中的每个图元:
关于图元掩盖的每个片段:1.1 为片段履行片段上色器
4.2 根据图块的烘托的运用
外部存储器拜访十分缓慢,所以你应该会对或许触发所述情形的任何操作感到厌恶。请考虑下面这种种常常予以完结的post-effect:
烘托基准传递到暂时缓冲区。将烘托方针从暂时缓冲区切换到交流链纹路。交流链纹路是终究出现给显示器的烘托方针(与或许运用不同参数创立的暂时缓冲区相反)。为了将post-effect作为一种资源运用,将TempBuffer绑定为输入纹路。履行post-effect。
在这种状况下,GPU会将输入纹路从图块内存写入到外部内存中,然后将其用作输入资源。这一起称为解析。关于Quest头显的原生分辨率,仅向外部存储器写入内容就会花费1ms-1.5 ms的时刻来解析纹路(留意:这不包含完结post-effect所需的额定周期)。当以72fps的速度进行烘托时,帧预算将是13.8ms /帧(1000ms/72fps)。所以这项操作大约需求花费总帧预算的大约1/13。别的,当不直接烘托到交流链纹路时,你将不会取得MSAA的视觉优势或FFR的功用优势,由于所述功用仅适用于交流链纹路,不适用于暂时缓冲区。
5. 总结
请随时参看本系列博文的榜首篇文章研制实战:怎么经过RenderDoc优化Quest运用 。鄙人一篇文章中,我会介绍将RenderDoc用于Oculus Question游戏/运用时与本文主题相关的要害运用场景和优化技巧。