可变速率着色已在移动平台取得令人印象深刻的结果
发表于 2021-07-30 14:25:04

在本帖中提及的Qualcomm产品均由Qualcomm Technologies公司及其子公司提供。

有时候,某一项功能会好得令人难以置信。对于可变速率着色(VRS)而言,情况正是如此!可变速率着色是一项可以在不影响游戏视觉质量的情况下带来巨大性能和能耗效益的功能。

着色是计算屏幕上每个像素所形成颜色的过程。该过程通过片段着色器完成。着色器是可编程图形管道中的强大工具,确保游戏开发者能够通过执行自定义代码的方式充分利用图形处理器的功能。片段着色器(又名像素着色器)也许是最重要的着色器类型之一;在图形处理器对几何图形进行栅格化后即执行片段着色器,并利用纹理、法线、数学运算等输入量为给定像素生成最终颜色后执行的。随着对高保真度和物理性图像需求的增加,片段着色器的复杂度和尺寸在过去几年里不断发展,承担了图形处理器渲染游戏场景的大部分工作。

可变速率着色将片段着色器提升到一个全新的水平。简而言之,可变速率着色可以确保片段着色器一次对一个或多个像素进行着色(一个片段可以代表一个像素或一组像素)。您可以认为,可变速率着色解决了反走样技术所解决问题的反问题。反走样技术对每一个像素更加频繁地进行取样,对变化较大的内容进行平整,从而避免出现走样和锯齿型边缘。但是,如果需要渲染的表面没有较大颜色变化或将在后续步骤中被模糊(例如,动态模糊),则在1:1的基础上执行着色操作(即每一个像素一次着色操作)的效率比较低。 

开发人员可以利用可变速率着色指定着色率,其中只对一个片段执行一次着色器计算,并将结果运算应用于指定的像素组配置。如果使用得当,应该不会导致视觉质量下降,同时显著减轻图形处理器渲染帧的工作,从而节省功耗并提高性能。利用市场上可以获得的某些高显示率移动设备,例如本公司Snapdragon®移动平台及其嵌入式Qualcomm® Adreno TM图形处理器所驱动的设备,减少了对所有表面渲染的每个像素进行着色的需求。

从本公司可变速率着色演示示例中获得的以下截图(附图1)显示了如何在细节度高的区域使用更高的着色率(即,每个像素),而在细节度低的区域可以使用更低的着色率(即,包含各个像素组的着色片段)。

附图1 – 场景显示了在细节度高的对象上应该应用1:1的着色,而在细节度较低的区域则应当应用有关像素片段的低着色率。

可变速率着色如何发挥作用?

当图形处理器渲染并将对象栅格化到某一表面时,按照每个像素一次采样的速率进行(假设没有使用多次采样,也可以将此概念应用于多次采样)。通过图形应用程序接口扩展程序,开发人员可以修改给定表面的着色率,使其比像素更粗(如附图2所示)。

附图2 – 概念图显示了片断着色器如何在同一时间处理不同数量的像素,范围从单个像素到最高16(4x4)像素的优秀级别。

我们已经通过OpenGL ES适用的QCOM_shading_rate扩展程序和Vulkan适用的VK_KHR_fragment_shading_rate扩展程序将可变速率着色应用于移动平台。OpenGL ES扩展程序包括若干枚举(例如,GL_SHADING_RATE_1X1_PIXELS_QCOM,GL_SHADING_RATE_1X2_PIXELS_QCOM等),可用于控制不同的片段大小。您可以在GitHub中查看有关本公司最新Adreno图形处理器OpenGL ES代码示例框架扩展程序使用方法的演示。

Vulkan的VK_KHR_fragment_shading_rate采用了一个VkExtent2D结构体,在该结构体中开发人员指定了所需片段尺寸的宽度和高度。请注意,在Snapdragon移动平台上即将提供有关VK_KHR_fragment_shading_rate的支持。

修改着色率的有效方法

该类扩展程序可以提高有关重片段绑定绘制调用的性能,例如:

  • 颜色变化较小的表面。
  • 不需要逐像素着色精度的表面区域。其中包括通过动态模糊可以缩小尺寸的颜色对象以及存在显著速度场变化的情况。如果使用了场深度效果,则焦点之外的区域将被模糊。
  • 类似动态容积渲染的效果,其中一部分场景以全着色率处理,另一部分以降低的着色率处理。

请注意,如果使用不当,降低着色率会影响渲染对象的视觉质量。在性能和功率紧密结合的移动设备上,使用更高级的着色率同样可以改进功率消耗,降低游戏的热剖面,并最终增加用户的游戏时间。

可变速率着色的实际应用

我们的团队与网易合作,为其游戏提供Snapdragon Elite Gaming™功能。网易在其即将推出的游戏《天宇启示录》中植入了可变速率着色技术。通过本项协作以及可变速率着色技术实现的改进,游戏的功耗效率提高了30%以上,帧速率提高了38%。

附图3 – 在网易即将推出的游戏《天宇启示录》中使用可变速率着色技术实现的改进

有兴趣为Snapdragon构建游戏和图形密集型应用程序的开发人员应检验Qualcomm开发人员网上的某些硬件开发工具包(HDK),包括Snapdragon 888移动硬件开发工具包Snapdragon 865移动硬件开发工具包

关于OpenGL ES中Adreno着色器支持的更多信息,请下载Adreno软件开发工具包,并查看包含在软件开发工具包中的Snapdragon OpenCL通用编程和优化和Adreno OpenGL ES开发人员指南。

Snapdragon, Qualcomm Adreno和Snapdragon Elite Gaming是Qualcomm Technologies, Inc.及其子公司的产品。

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】