开发

Meta Quest 多重采样抗锯齿分析

多重采样抗锯齿 (MSAA) 是一种可以提高计算机图片质量的技术。与在 Meta Quest 上使用 MSAA 相比,在基于电脑的平台上使用该技术的成本更低。根据要渲染的内容数量和运行应用的 GPU 级别,使用 MSAA 的总体开销范围从每帧 0.5 毫秒到 1.5 毫秒不等。
一般来说,您应该始终在 Quest 设备的应用中使用 MSAA,但是不应该超过 4 倍 MSAA 抽样。与进一步增加 MSAA 相比,将 GPU 时间花在分辨率更高的渲染目标上的效果更好。
以下测试和示例图像展示了在使用不同类型应用的 Quest 设备上开启或关闭 MSAA 4x 的结果。
测试参数:
  • 视觉缓冲区分辨率 1216 x 1344
  • 硬件:Meta Quest

测试 1:正常片断 GPU 工作量应用

此测试使用一个包含灯光的 Unity 简单场景进行。
  • GPU 级别:2
  • 只测量一只眼睛的数据。
测试结果:
指标MSAA 关闭MSAA 4x 开启
渲染成本
2.65 毫秒
3.15 毫秒
解析成本
0.17 毫秒
0.44 毫秒
渲染的图像:

测试 2:复杂片段着色器工作量应用

此测试使用一个包含曼德博集合可视化的场景进行。
  • GPU 级别:4
  • 测量了两只眼睛的数据
测试结果:
指标MSAA 关闭MSAA 4x 开启
渲染成本
10.449 毫秒
11.497 毫秒
解析成本
0.313 毫秒
0.626 毫秒
渲染的图像:

测试 3:复杂顶点着色器,低片断应用

此测试使用一个包含点渲染的复杂顶点场景进行。此测试包含很多个几乎看不到的微小顶点。它展示了 MSAA 对分块的影响。无论 MSAA 关闭还是开启,分块成本都非常相似:1.419 毫秒对比 1.534 毫秒。Qualcomm 分块算法的分块计数约为 O(1),被认为具有较好的效果。
  • GPU 级别:2
  • 测量了一只眼睛的数据
测试结果:
指标MSAA 关闭MSAA 4x 开启
分块
1.419 毫秒
1.534 毫秒
渲染成本
0.4 毫秒
1.38 毫秒
解析成本
0.14 毫秒
0.43 毫秒
渲染的图像:

测试 4:低 GPU 工作量

此测试针对低 GPU 工作量的场景。此测试的目的是在 GPU 上几乎没有负载时获得纯粹的开销。通过此测试,可以查看 MSAA 是否关闭,几乎没有解析成本。在这种简单的情况下,驱动程序足够智能,可以直接渲染到系统内存,而不是渲染到平面器,然后从平面器复制到系统内存。
根据 Qualcomm,直接渲染只在 MSAA 关闭时进行。大多数时候,应用非常复杂,直接渲染并无意义。有一些特殊情况,例如,如果需要将一个四边形渲染到一个较小的 RT,直接渲染可以节省一些成本。此外,Qualcomm 提供了一个扩展,可在您不希望由驱动器做决定时用来控制是否直接渲染某个对象。
  • GPU 级别:2
  • 测量了一只眼睛的数据
测试结果:
指标MSAA 关闭MSAA 4x 开启
渲染成本
0.044 毫秒
0.388 毫秒
解析成本
0.0 毫秒
对比 0.44 毫秒
渲染的图像:

摘要

MSAA 增加了一些成本。
渲染比较:
测试显示,随着场景片断复杂度的增加,MSAA 的呈现开销百分比会减少,但会产生一些成本。例如,当您在中等复杂度的应用上启用 4x MSAA 时,可以合理地预计 MSAA 会增加约 10-15% 的时间开销。
  • GPU 2:高顶点,低片断:0.4 毫秒(MSAA 关闭)对比 1.38 毫秒 (MSAA 4x)
  • GPU 2:正常片断工作量:2.65 毫秒(MSAA 关)对比 3.15 毫秒 (MSAA 4x)
  • GPU 4:复杂片断工作量:10.449 毫秒(MSAA 关闭)对比 11.497 毫秒 (MSAA 4x)
解析比较:
在同一 GPU 级别下,无论 GPU 工作量如何,解析成本差异都是固定的。根据 Qualcomm,解析成本差异来源于 4x MSAA 的分块计数,每块成本大致相同。
  • GPU 2:0.17 毫秒(MSAA 关闭)对比 0.44 毫秒 (MSAA 4x)
  • GPU 4:0.14 毫秒(MSAA 关闭)对比 0.30 毫秒 (MSAA 4x)
还要考虑到,一些开销可能来自这些测试使用的分析器,而解析成本的真正差异可能更小。