![cover](https://i-blog.csdnimg.cn/direct/c2aa9a2cf8114715be880549841a712b.jpeg)
更灵活的图形渲染技术来了,团结引擎 VRS 助力提升图形处理能力
Variable Rate Shading (VRS) 是一种图形渲染技术,它允许在渲染过程中对不同区域使用不同的着色率,从而提高图形处理效率和性能。VRS 技术使得不同区域的像素着色可以在不同的细节层次上进行处理,允许开发者根据场景的需要动态调整计算量,以达到在保证画面质量的同时提高渲染效率的效果。为了在保证视觉效果及质量的基础上,降低 GPU 的消耗,进一步压榨移动设备的性能,Tuanjie
Variable Rate Shading (VRS) 是一种图形渲染技术,它允许在渲染过程中对不同区域使用不同的着色率,从而提高图形处理效率和性能。VRS 技术使得不同区域的像素着色可以在不同的细节层次上进行处理,允许开发者根据场景的需要动态调整计算量,以达到在保证画面质量的同时提高渲染效率的效果。
为了在保证视觉效果及质量的基础上,降低 GPU 的消耗,进一步压榨移动设备的性能,Tuanjie 1.4.1 版本开始,全平台支持 Tuanjie Variable Rate Shading (VRS)。欢迎广大开发者下载体验!
Tuanjie VRS
Tuanjie Variable Rate Shading (VRS),用于动态调整图像中每个像素的渲染细节或“着色”速率,通过降低采样点数目,将一定数量的采样点作为一个 Unit 进行渲染,以此控制 Shading Rates。开启后,可以在保证视觉表现的情况下,减少 GPU 的工作负担,从而提高渲染效率,特别是在资源有限的情况下。
在 Tuanjie Editor 中,可以通过对不同 Mesh Renderer 设置不同的 Shading Rate,从而实现屏幕的不同位置有不同的渲染速率,以达到降低 GPU 开销的⽬标。
同时,除了支持自定义设置 Shading Rate 外,团结引擎提供了⼀种 Camera-Relative Shading 算法,开启后可以为未手动设置 Shading Rate 的 Mesh Renderer ⾃动计算近似 Shading Rate 值,以降低逐一手动修改 Renderer 的开发成本。
Tuanjie VRS 当前支持平台及图形 API
Tuanjie VRS 目前已支持所有打包平台,包括但不限于车机平台(HMI Android、QNX、Embedded Linux)、OpenHarmony、Android等。
但由于各平台的硬件/芯片及操作系统对图形 API 的支持均不相同,Tuanjie VRS 对目标平台系统的图形 API 及其版本有一定要求,请确保目标设备/平台对于图形 API 充分支持。具体要求可参考下表:
Tuanjie VRS 技术原理
基本原理
在 Tuanjie 引擎中引入了基于 Mesh Renderer 的 Per-Draw Variable Rate Shading (VRS) 渲染技术,为开发者提供了更高效、更灵活的渲染控制能力。
在 Tuanjie 的实现中:
-
基于 Mesh Renderer 层级:每个 Mesh Renderer 都可以独立设置 Shading Rate,这允许开发者精细控制每个物体的渲染质量。
-
脚本和 Inspector 支持:开发者既可以通过脚本动态调整 Shading Rate,也可以直接在 Tuanjie Inspector 面板中方便地配置,满足不同场景需求。
-
实时渲染优化:结合实际场景需求,根据物体投影于屏幕的占比动态调整 Shading Rate,显著提升性能。
Camera-Relative Shading 算法实现原理
Tuanjie 全新推出的 Camera-Relative Shading 功能,为开发者提供了一种更加智能化的渲染优化方式。该功能能够动态计算未设置 Shading Rate 的对象渲染比例,根据场景实时调整,确保关键画面质量的同时提升性能。
Camera-Relative Shading Rate 的核心是利用摄像机参数和场景中的物体信息,动态计算每个物体的 Shading Rate。主要涉及到以下几个因素:
1. 摄像机与屏幕的关系
根据摄像机的视角 (Field of View, FOV) 和屏幕的尺寸,计算摄像机到屏幕的距离比例。这一比例决定了画面中对象的空间投影大小。
2. 对象与摄像机的距离
系统自动测量摄像机与每个渲染对象之间的距离。距离越远,对象的屏幕投影面积越小,Shading Rate 可以适当降低以节约资源。
3. 屏幕投影面积
使用摄像机与对象的距离计算出对象在屏幕上的投影面积。如果投影面积较大,表示对象对画面质量的影响更大,其 Shading Rate 会自动调整为更高的水平;反之则降低 Shading Rate。
4. 用户设定的控制范围
开发者可以在渲染设置中定义 最大 (Max Screen Area Ratio) 和 最小 (Min Screen Area Ratio) 投影比例,确保 Shading Rate 的调整在合理范围内。此外,还提供多档模式(如“中等”、“高”等)以满足不同项目需求。
5. 平滑映射与分级调整
通过一个平滑的公式,将计算结果映射为离散的 Shading Rate 级别(如 1x1、2x2、4x4)。该调整是连续的,避免了画面突变或跳动。
Graphics API 适配策略
为了在不同硬件和渲染 API 环境中保持高效的渲染性能和视觉效果,Tuanjie 拥有一套统一的适配策略。这套策略确保在不支持某些 Shading Rate 配置的情况下,系统能够自动调整到兼容的设置,从而平衡性能与画质。
适配策略一:当 API 本身不支持特定 Shading Rate
如果某个 API 明确不支持某些 Shading Rate 组合,Tuanjie 会将这些不支持的配置统一回退为 2x2。例如:
○ D3D12 上的 4x2、4x4 配置在不支持的情况下将被设置为 2x2。
○ GLES (QCOM) 的 2x4 和 4x4 配置直接回退为 2x2。
适配策略二:当 API 支持但硬件受限
在某些情况下,API 理论上支持特定 Shading Rate,但受限于硬件能力。为此,Tuanjie 提供如下回退机制:
○ 如果硬件支持 2x2,则优先设置为 2x2。
○ 如果硬件不支持 2x2,则退回到更基础的 1x1。
这些策略确保即使在有限的 API 和硬件环境中,也能通过调整 Shading Rate 达到可用的性能。
使用手册:如何使用 Tuanjie VRS ?
请确保已下载和安装 Tuanjie 1.4.1 及以上版本。
Tuanjie VRS Editor 中核心操作
打开Editor,通过顶部菜单栏 Edit >> Project Settings >> Graphics >> Shading Settings,开启 VRS。当前版本提供了两个选项:Custom Shading 和 Camera-Relative Shading。
选择 Custom Shading
如果选择 Custom Shading,选择后可以开启并使用 VRS 功能,在任一需要使用 VRS 的 Renderer 的 Inspector 面板中设置 Shading Rate 值,自定义每个 Renderer 的 Shading Rate。设置后,Render 会按照指定的 Shading Rate 进行渲染。
○ 选中需要修改的 Renderer,在 Inspector 面板中,找到 Additional Settings,选择 Shading Rate 值。
○ 共 9 个可选项:Size 1x1(表示每个采样点作为一个 Unit 进行渲染,渲染结果画面不变,与不启用 VRS 的表现相同)、Size 1x2、Size 2x1、Size 2x2、Size 1x4、Size 4x1、Size 2x4、Size 4x2、Size 4x4(表示每 4x4 的采样点作为一个 Unit 进行渲染,渲染结果画面最模糊)。
○ 若不修改,默认 Size 1x1。
选择 Camera-Relative Shading
如果选择 Camera-Relative Shading,默认使用系统提供的 Camera-Relative Shading 算法,为未手动设置 Shading Rate 的 Renderer 自动计算近似 Shading Rate 值。
○ Relative Rate Shading Level:
-
参数值(可选项):Low、Normal、High
-
指定最终渲染质量,该值越高,渲染质量越高,渲染画面越清晰。
○ Max Screen Area Ratio & Min Screen Area Ratio:
-
限制物体投影到屏幕上的最大有效覆盖值,超出范围的值将会自动设置为 Max Screen Area Ratio 和 Min Screen Area Ratio。
-
表示指定物体投影到屏幕上的有效覆盖值范围。它是一个相对值,并不直接对应于屏幕上的物理像素尺寸。
注意:若选择了 Camera-Relative Shading,同时又手动指定了部分 Renderer 的 Shading Rate,则实际渲染效果优先使用手动设置的值,Camera-Relative Shading 算法仅对未手动设置 Shading Rate 的 Renderer 生效。
设置完成后,可正常 Build 或 Export。实机运行即可查看 VRS 效果。
Tuanjie VRS Debug Tool
为了便于更直观地看到场景中每个 Renderer 的 Shading Rate 设置,并便于调试,1.4.1 版本的 Editor 中,为 VRS 新增了 Debug Tool,可以通过顶部菜单栏 Window >> Analysis >> Rendering Debugger >> Rendering 开启,Map Overlays 选择“Shading Rate Value Map”。
开启后,Scene 窗口中将通过颜色实时展示当前每个 Renderer 使用的 Shading Rate 值。Play Mode 同样适用。
○ Map Sizes:调试工具在 Scene 窗口中的占比,拖动以调整 Scene 窗口中调试工具大小。
○ Show Shading Rate Map:勾选后,打开 Shading Rate 颜色图例。
Tuanjie VRS 推荐场景及用法
VRS 可针对场景中任一 Renderer 进行自定义设置并生效。目标是降低 GPU 的 Fragment Instructions 和 Fragments Shaded。
Shading Rate 越高,则渲染结果画面越模糊,因此推荐在渲染内容较重的场景中,对于非视觉重心的 Renderer,设置较高(如 4x4)的 Shading Rate;对于视觉重心的 Renderer,设置较低的 Shading Rate(如 1x1),以保证视觉质量。
Tuanjie VRS 在移动设备实际运行效果对比
因公众号平台图片/视频压缩,建议下载安装 Tuanjie 1.4.1 实际体验!
上图为原始画质(Shading Rate 1x1):画质清晰,运行卡顿
下图为场景内物体全部开启 VRS,并设置最高程度(Shading Rate 4x4):背景建筑/树木模糊,运行流畅
在移动设备(安卓平台)上实机运行对比视频:
Tuanjie VRS 在移动设备实际运行性能指标及对比结果
在安卓移动设备上,全场景开启 VRS 4x4 和全场景开启 VRS 1x1 的 GPU 性能对比如下:
VRS 的目标是通过降低片段着色的分辨率和计算精度,减少片段着色器的复杂度和指令数,从而优化渲染性能。以下是几个相关测量指标:
○ ALU / Fragment: 平均每个片段所执行的算术逻辑单元(ALU)操作的数量。
○ EFU / Fragment: 平均每个片段执行的特殊功能单元(EFU)操作的数量。
○ Fragment ALU Instructions (Full): GPU 执行的完整(Full)片段 ALU 指令的总数。
○ Fragment ALU Instructions (Half): GPU 执行的半精度(Half)片段 ALU 指令的总数。
○ Fragment EFU Instructions: GPU 执行的片段 EFU 指令的总数。
○ Fragment Instructions: GPU 执行的所有片段指令的总数。
○ Fragments Shaded: GPU 实际着色的片段数量。
对比数据可以看出,场景中开启了 VRS 4x4 后,GPU 的 Fragment Instructions 和 Fragments Shaded 明显降低。
以上就是此次团结引擎 1.4.1 版本中“可变速率着色渲染”的更新。团结引擎将倾听国内开发者的声音,为大家带来更多大家想要的功能,并且始终保持引擎的高性能、高画质,以及稳定性。非常期待得到你的反馈,与我们一起共建中国版的实时 3D 引擎。
[1] 团结引擎官网:
https://unity.cn/tuanjie/tuanjieyinqing
[2] 团结引擎问答专区:
https://developer.unity.cn/plate/tuanjie-engine?tab=ask
[3] 团结引擎用户手册:
https://docs.unity.cn/cn/tuanjiemanual/Manual/UnityManual.html
更多推荐
所有评论(0)