听说过图像升尺度技术(upscaling)吗?这是游戏开发中用于提高渲染性能的常用优化技术。该技术涉及以低于设备原生分辨率的分辨率进行渲染,然后再将合成图像放大到原生分辨率。但是,提高潜在的渲染性能可能会导致视觉质量降低。
图像放大通常采用基于双线性插值的方法来执行。该类方法速度最快,但有时会以模糊为代价(例如:模糊的边缘和细节)。采用其他图像放大技术可以达到更好的性能与质量平衡,但可能会需要多个渲染通道,从而导致带宽的增加,或者产生其他的缩放限制(例如:仅可缩放2倍)。
如果有一种全新的图像放大方法会怎样呢?一种不仅可以保持甚至提高每秒帧数、降低功耗、视觉保真度高,而且可以在游戏渲染过程中为你提供额外时间用于渲染增强的方法?您会如何利用这些额外时间来提高你的游戏水平?
这些都是我们在骁龙工作室的团队所思考的问题,因为他们回顾了一些开发者以降低视觉质量和效果(例如:照明,阴影等)为代价来达到他们所期望的FPS的游戏,即使开发者们已经使用了图像放大技术。
为了解决这一问题,团队认为需要一种新的图像放大解决方案——一种可以实现流畅游戏体验、出色视觉效果和电源效率的解决方案。这种方案就是骁龙游戏超分辨率技术。让我们仔细了解一下这种新方法。
使用骁龙游戏超分辨率技术放大图像
骁龙游戏超分辨率将图像放大和锐化集成到单个GPU通道中,以减少延迟和内存总线的使用,从而降低功耗并提高速度。骁龙游戏超分辨率技术使用了一个类似Lanczos算法的12采样点缩放过滤器和自适应锐化过滤器,以提供与其他空间放大技术相当的视觉质量。骁龙游戏超分辨率技术针对骁龙公司的Adreno™ GPU进行了高度优化,从而可以提供最大的波占用率,以充分利用GPU。该解决方案在高通其他的GPU上也显示出良好的性能。它呈现出平滑的图像和清晰的边缘,最重要的是,该解决方案呈现的结果在感知上接近原生分辨率的渲染。
下文附图1显示了骁龙游戏超分辨率与其他方法的对比情况:
方案 | 性能 | 输出质量 | 渲染通道 | 输入要求 | 时间稳定 | 最大缩放倍率(在每一个维度) |
Bilerp | 非常快 | 低 | 1 | 无 | 是 | 无限制 |
AMD FSR 1.0(开源) | 快 | 良好 | 2 | 缓冲区、色调映射及防锯齿 | 是 | 2倍 |
AMD FSR 2.0(开源) | 不适合移动设备 | |||||
骁龙游戏超级分辨率 | 最快 | 良好 | 1 | 缓冲区、色调映射及防锯齿 | 是 | 2倍 |
附图1 – 骁龙游戏超分辨率与其他图像放大方法的比较
底层机制
骁龙游戏超分辨率减少了高通Adreno GPU放大图像所需寄存器、纹理样本和算术逻辑单元(ALU)指令的数量,从而能够更好的利用着色器处理器。
在底层,由一个12核窗口对亮度进行计算,该亮度计算仅使用绿色(G)通道,因为人的眼睛对这种颜色最为敏感。因此,骁龙游戏超分辨率采样仅使用一个分量进行每个像素计算,并执行三分量插值,总共只有15个纹理指令。Adreno GPU可以隐藏这些纹理样本的延迟,达到100%的着色器处理器利用率。该过程在像素层面执行,可以分析邻近像素并检测边缘以避免逸出。因此,本地分辨率图像可以与用户界面元素合并,以便最终显示在屏幕上。
性能的改进可以在渲染过程中为您节约出额外的时间,您可以使用这些时间进一步增强视觉效果,例如,添加更好的光照和阴影,增强纹理,更多的后期处理效果——所有这些都为玩家渴望的最终完善效果增添了一抹光泽。
下面的附图2 展示了在第2代骁龙8移动平台上运行的骁龙游戏超分辨率与竞争对手图像放大解决方案之间的性能比较情况:
第2代骁龙8 Adreno图形处理器渲染纹理(渲染纹理越低,速度越快,质量越好)
·竞争对手图像放大方案 ·骁龙游戏超分辨率
附图2 – 第2代骁龙8上的骁龙游戏超分辨率与竞争对手图像放大方案之间的性能比较情况(分辨率越低,性能越好)
如果您有兴趣尝试骁龙游戏超分辨率,我们已经在 骁龙游戏超分辨率GitHub页面上提供了本公司的OpenGL以及Vulkan(GLSL)和DirectX(HLSL)的实现。您可以使用Windows on Snapdragon应用程序中的版本,以及运行在骁龙移动平台上的安卓应用程序中使用OpenGL版本。
用于Meta Quest的骁龙游戏超分辨率.
VR游戏带来了新的挑战和机遇。由 骁龙XR2 5G平台提供支持的Meta Quest 3是VR领域领先的头戴式设备。
为了帮助VR开发者在Meta Quest 3上实现更高的帧率、能效和图像质量,骁龙游戏超分辨率确保Meta能够生成一个针对VR的版本——Meta Quest超级分辨率——该版本建立在骁龙游戏超分辨率的基础上,并为了实现最佳VR性能和质量进行了调整。
MQSR具有经过VR优化的边缘感知缩放和锐化算法,能够实现头戴式设备Adreno GPU功能的最大化。您可以很容易地将MQSR添加到应用程序中,方法是启用一个层,该层告诉VR合成器您打算使用升级器:
- OpenXR:在有关OpenXR的合成层扩展中设置质量锐化标志选项。
- Unity:通过OVROverlay启用合成器图层,或通过OVRManager启用投影图层。
- Unreal:在Player Start实体的渲染部分将锐化过滤器设置为高质量锐化。
您可以完全控制将其应用于哪个图层;如果存在UI元素,则可以通过已经缩放至眼部缓冲区大小的另一个图层传递。MQSR将范围感知动态缩放与Adreno GPU管道的自定义项相结合,从而可以保留边界和细节,并执行动态模糊以产生平滑的边缘,同时不会影响性能。
由于MQSR只需要对应用程序的颜色缓冲区进行放大,因此可以更容易地进行集成,同时不需要应用程序传送任何额外的缓冲区。我们强烈建议使用这种技术,而不是仅仅是调整眼部缓冲区的大小,因为这种技术显著改善了视觉,而不是拉伸您的渲染目标。
您也可以在自己的Meta Quest项目中使用常规的骁龙游戏超分辨率来放大其他表面,例如渲染到纹理表面时,或在其他通道(例如:合成、后期特效、透明度等)之前需要超分辨率时。
有关启用和使用MGSR的更多信息,请参阅Meta的报告:计算状态:Meta Quest上的性能最大化。
结论
图像放大是一种有效的渲染优化技术,可以提高每秒帧数和能效。正确应用时,图像放大还可以在渲染过程中为您提供额外的时间,您可以利用这些时间来改进视觉效果,如更好的光线、阴影、纹理和后期处理。
有关更多信息,请查看以下资源:
在所发布内容中表达的观点仅为原作者的个人观点,并不代表高通公司或其子公司(以下简称为“高通公司”)的观点。所提供的内容仅供参考之用,而并不意味着高通公司或任何其他方的赞同或表述。本网站同样可以提供非高通公司网站和资源的链接或参考。高通公司对于可能通过本网站引用、访问、或链接的任何非高通公司网站或第三方资源并没有做出任何类型的任何声明、保证、或其他承诺。
骁龙和高通品牌产品属于高通科技公司和/或其子公司产品。骁龙工作室是骁龙科技公司和/或其子公司内部的项目。