Oculus 推出基于蒙版的注视点渲染技术 MBFR,无需额外硬件支持

映维网,国际权威虚拟现实(VR)信息平台,提供最快、最全、最有价值 VR 信息资讯!

文章相关引用及参考:映维网

本文来自Oculus分享

(映维网 2018 年 06 月 22 日)对于基于蒙版的注视点渲染(Mask-based foveated rendering,MBFR),这种渲染技术根据一种棋盘模式来删除一定的像素,从而降低眼睛缓冲区的外围区域着色率。这可以帮助你有效地减少世界渲染的像素着色成本,在降低 50%的像素时提供优秀的视觉质量。另外,这项技术兼容所有 D3D11 级别硬件,独立于 IHV 扩展。

Oculus 日前分享了一篇关于基于蒙版的注视点渲染的博文,介绍了一个演示了 MBFR 的蒙版场景,并且讨论了 MBFR 于何时最为有用。以下是映维网的具体整理:

1. 蒙版场景

这是一个演示了像素减少的蒙版场景。蒙版图像中有四个圆。中心圆保留所有的像素。其他三个圆分别丢弃 25%,50%和 75%的像素。

下面是一个重新构建的图像:

下面我们用作参考标准的原始全分辨率场景:

下面我们继续宁并排比较(已经放大)。上图是蒙版图像,中间是重建图像,下面则是参考标准图像:

下面是另一个比较:

2. 集成 MBFR

MBFR 目前已经托管至Oculus GitHub UE4 Repository。它支持 Unreal Engine 4.19 和 4.20 预览版。

要在你的项目中激活 MBFR,请按照下列步骤操作:

在 "UE4 Editor Project Settings" 中的 "Rendering" 部分勾选 "Forward Shading"。

无需重新启动 UE4 Editor,请在 "Project Settings" 中的 "Rendering/Experimental" 部分勾选 " [ VR ] Enable Mask-based Foveated Rendering"。

根据提示重新启动 Editor。Editor 需要一段时间才能重建着色器 .

在预览或在 VR 模式下运行时,MBFR 将在你的项目中激活。

3. 控制台命令

在测试 MBFR 和调整质量级别时,以下的控制台命令可能会有所帮助:

vr.Foveated.Mask.Enable 1:激活 MBFR

vr.Foveated.Mask.Enable 0:关闭 MBFR

vr.Foveated.Mask.VisualizeMode 1:禁用像素重构以显示蒙版

vr.Foveated.Mask.VisualizeMode 0:启用像素重构

vr.Foveated.Mask.HighResFov:全分辨率区域的 FOV(以度为单位)。默认值是 46

vr.Foveated.Mask.MediumResFov:像素丢弃 25%的区域的 FOV(以度为单位)。默认值是 60

vr.Foveated.Mask.LowResFov:像素丢弃 50%的区域的 FOV(以度为单位)。默认值是 78

LowResFov 以外的区域将丢弃 75%的像素

4. 实现

4.1 像素丢弃

要丢弃的像素通过蒙版缓冲区中的掩码位进行剔除。以下是每个密度区域的可见模式:

5. 重构

当读取场景纹理时,丢弃的像素在 PostProcessing 阶段重建。

5.1 中密度和高密度区域

我们用 4 个相邻像素来重建中密度和高密度区域中的每个丢弃像素,其中像素丢弃率小于或等于 50%。

缺乏经验的公式是将丢弃的像素 A 设置为 B,C,D 和 E 的线性插值。

A = ( C + B ) * 0.667 * 0.5 + ( D + E ) * 0.333 * 0.5

但这样做的效果不好,并且会在高对比度 / 高频率区域造成大量混叠。我们在下面的屏幕截图中可以很容易地观察到伪影,并在 VR 中造成严重的闪烁。

通过应用根据邻域亮度计算的方向权重可以大大提高视觉质量。这增强了边缘,并且减少了混叠。

最后,我们在高 / 中密度区域实现了良好的整体重建质量。下面是高密度区域(丢弃 25%的像素)的并排比较,中间是重建结果图像,右边是参考图像:

下面是中密度区域的两个比较(丢弃 50%的像素),中间是重建结果图像,右边是参考标准图像:

5.2 低密度区域(像素丢弃率 75%)

在最边缘部分,低密度区域的已知像素较少。我们用两个相邻像素的线性插值重构每个丢弃的像素。

A = P * 0.667 + Q * 0.333

B = P * 0.667 + T * 0.333

C = P * 0.667 + S * 0.333

由于我们只有四分之一的有效像素,因此重建的保真度水平有限,质量损失和畸变明显。

下面是与预畸变图像的并排比较(左:蒙版,中间:重构,右:原始):

因为低密度区域位于有效像素密度较低的外围部分。这可以减少质量损失,但不会消除所有畸变伪影。下面大致是后畸变图像中的相同的部分,这一部分在畸变后变得更小了:

5.3 粗略质量重建

高保真蒙版重建需要大量的 GPU 性能,并不是每个后期处理阶段都需要这种精确度。因此,我们同时提供了一种粗略质量的蒙版重建例程。常规重建中的成本是 2 个或 4 个纹理拾取,而这种重建方案可以降低至单个纹理拾取。粗略质量重建目前用于 Bloom,Depth of Field,Down-sampling,Velocity flattening 和 Screen-space reflection。

6. 性能

通过在世界渲染过程中丢弃一部分像素,MBFR 可以降低 GPU 像素着色成本。但为了重建丢弃像素,这同时会在后期处理过程中引入额外的成本。

我们在《Robo Recall》的 4.65ms 场景中进行测试,它可以把整体 GPU 成本降低到 4.25ms(-9%)。具体而言,它将世界渲染(BasePass)的成本从 2.51ms 降低到 2.19ms(-13%);后处理成本从 0.47ms 增加到 0.65ms(+0.18ms)。

由于游戏中的后处理成本相对固定,而且世界渲染是动态进行,对于渲染世界对象较多的场景,我们可以预期 GPU 性能可以节省 10%以上。

当然,整体 GPU 性能在很大程度上也取决于密度圆的 FOV。从 MBFR 再进一步优化 GPU 成本的有效方法是,根据每个映射上渲染的内容对其进行配置。我们可以在包含高频对象 / 纹理的映射中应用更大密度的圆,以此来保持视觉质量(例如在《Robo Recall》中测试的城市映射),并且减小其他映射中密度圆的大小,从而获得最大的性能效益。

6.1 提示

与将每像素重构整合至后期处理相比,添加单独重建通道的成本通常更高。

尽管可以在深度缓冲区或模板缓冲区中生成蒙版,但使用模板更为理想,因为它不会破坏 Hi-Depth。另外,我们可以执行完整的深度通道,并且避免重建深度缓冲区。

像素重构的主要瓶颈是纹理拾取。在重构中获取更多的相邻像素(或历史纹理)将为我们带来更好的视觉质量和 GPU 性能成本。

7. 总结

MBFR 不是免费的午餐。它可以减少世界渲染的像素着色成本,但在像素重构时增加了额外的后期处理成本。大多数 VR 项目都采用使用繁重的后期处理。但对于使用大量后期处理,但世界渲染量小的项目而言,MBFR 可能无法带来任何性能方面的效益。

根据内容的风格,MBFR 的感知视觉质量可能会有很大不同。在呈现低对比度,低频率内容时,感知质量可能相当不错;但如果内容存在大量高频细节,感知质量则不会太理想。对于对于平衡性能和感知视觉质量而言,根据正在渲染的内容来调整所述密度圆的半径非常难过有必要。

使用 MBFR 的预期效果:

有效降低世界渲染中的像素着色成本

兼容所有 D3D11 级别硬件。独立于 IHV 扩展

在时间 / 空间上相对稳定

在丢弃 50%或更少的像素时,视觉质量良好

可以结合现有的 AA 技术,包括 MSAA 和 TAA

需要注意的事项:

在重建丢弃像素时,可能会造成额外的性能成本

在当前的 GPU 架构下,在每个波前剔除一定的像素并不一定是最佳的做法。因此,丢弃 50%的像素可能无法提供 2 倍的性能。

丢弃 75%的像素时,存在潜在的质量损失

对于支持瓦片片上内存的移动 GPU 而言,这可能不是非常有效。

文章《Oculus 推出基于蒙版的注视点渲染技术 MBFR,无需额外硬件支持》首发于 映维网。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();