高通技术公司于2024年推出了骁龙游戏超分辨率2(Snapdragon Game Super Resolution 2,简称GSR2),这是一项全新的骁龙Elite Gaming功能,旨在最大化移动游戏的性能和电池寿命。
什么是骁龙游戏超分辨率2(GSR2)?
骁龙GSR2是一种时间抗锯齿和超分辨率(TAAU)的实现。其核心算法使用两个通道(passes):转换通道(pass)和超分通道(pass),并可选集成一个锐化通道(pass)以提高视觉质量。
- 转换通道:准备必要的缓冲区,如运动缓冲区和深度剪裁缓冲区,这些信息将作为下一步的输入,用来指导超分通道(pass)将如何融合历史帧像素和当前帧像素。
- 超分通道(pass):在这个通道(pass)中,首先使用一个优化的Lanczos对当前帧进行上采样,然后将上采样像素与GSR2的历史像素进行混合,从而完成时间上的上采样和混合。
与大多数TAAU算法类似,骁龙游戏超分辨率需要以下输入:
- 低分辨率深度数据
- 低分辨率颜色数据
- 低分辨率运动矢量
骁龙游戏超分辨率的主要特点和改进
骁龙游戏超分辨率2相比其前身有多项显著改进:
- 增强的视觉质量:GSR2可以将1080p游戏转换为惊艳的4K视觉效果,突出每一个细节。作为一种时域图像放大解决方案,通过聚合历史样本,可以增加采样点并使视觉效果更接近原生分辨率。
- 改进的运行性能:以前运行在30FPS的游戏现在可以达到60+FPS,提供丝滑顺畅的游戏体验。如果游戏已经达到了目标帧率,这将为开发者提供额外的帧预算,以增强渲染管线或添加更高分辨率的纹理、更多几何体、细节层次等内容。
- 更长的电池寿命:通过优化性能,GSR2有助于延长电池寿命,使玩家在移动设备中可以更长时间的运行游戏,同时将热量降至最低。
骁龙游戏超分辨率的性能优势
在移动平台上,可行的时域上采样解决方案的关键挑战是性能。算法必须足够快才能在高度优化的移动游戏中相比用原生全分辨率渲染仍有性能提升。游戏开发者的反馈表明,当分辨率放大至1260x2800时,算法应在骁龙8 Gen 3的最大GPU频率下运行时间不超过2毫秒。2毫秒的运行时间意味着在最低GPU频率下,GPU的运行时间可达8毫秒。
为了找到最佳解决方案,我们实现了多种版本,允许开发者根据其渲染管线和预算选择合适的解决方案。经过多次针对Adreno的优化,我们的2通道(passes)片段着色器版本达到了极致的1毫秒成本。
2.0x (630x1400 to 1260x2800) | 1.7x (740x1648 to 1260x2800) | 1.5x (840x1866 to 1260x2800) | |||
GSR2 版本 | 时间(ms) | GSR2 版本 | 时间(ms) | GSR2 版本 | 时间(ms) |
2 pass-CS | 1.801 | 2 pass-CS | 1.910 | 2 pass-CS | 1.998 |
2 pass-FS | 0.905 | 2 pass-FS | 1.024 | 2 pass-FS | 1.107 |
3 pass-CS | 2.015 | 3 pass-CS | 2.199 | 3 pass-CS | 2.397 |
表一 GSR2各个版本在8Gen3的GPU耗时
表二 GSR2各个版本在8Gen3的帧率对比
骁龙游戏超分辨率2的视觉质量
GSR2在每帧渲染时对采样点进行微小的随机偏移,并累积历史样本,通过这种时域累积的上采样方式可以生成比GSR1更高质量的高分辨率图像,因为后者只能从当前帧缓冲区采样。
图一 GSR1(左) 与 GSR2(右)的视觉质量对比
图二 视觉质量对比(左一:双线性插值,左二:GSR2,左三:原生高分辨率)
下一步
我们满怀兴奋地推广骁龙GSR2,并期待它能帮助游戏开发者提升游戏画质和性能。该方案是完全开源的,您可以根据实际情况在以下多个版本中进行选择。
我们的Snapdragon Studios GitHub库中提供了3个版本的GSR2的shader。
Unreal Engine插件实现了多个引擎版本下的GSR2插件。
Vulkan Sample和OpenGL ES Sample分别提供了GSR2的Vulkan 示例和OpenGL示例。
作者:
沈骞,高通工程师
符婷,高通工程师
姜祥威,高通工程师
Rodrigo Holztrattner Reis,高通工程师