Version: 1.7
语言 : 中文
Frame Debugger event information
World building

Tuanjie Variable Rate Shading (VRS)

介绍

Tuanjie Variable Rate Shading (VRS),用于动态调整图像中每个像素的渲染细节或“着色”速率,通过降低采样点数目,将一定数量的采样点作为一个Unit进行渲染,以此控制 Shading Rates。开启 VRSVirtual Reality More info
See in Glossary
后,可以在保证视觉表现的情况下,减少 GPU 的工作负担,从而提高渲染效率,特别是在资源有限的情况下。 团结引擎从 1.4.0 版本开始,全面支持 VRS。在 Tuanjie Editor 中,可以通过对不同的 Renderer 设置不同的 Shading Rate,从而实现屏幕的不同位置有不同的渲染速率,以达到降低 GPU 开销的目标。同时,除了支持自定义设置 Shading Rates 外,团结引擎提供了一种 Camera-Relative Shading 算法,开启后可以为未手动设置 Shading Rate 的 Renderer 自动计算近似 Shading Rate 值,以降低逐一手动修改 Renderer 的开发成本。

点击可快速跳转至各章节说明:

适配平台及图形 API

Tuanjie VRS 目前已支持大部分主流平台及图形 API,并且引擎将根据不同的平台和不同的图形 API 自动调整可用的 Shading Rate。

注意: VRS 对于目标平台的适配,取决于目标平台系统的图形 API,请确保目标设备/平台对于图形 API 充分支持。

图形 API 是否支持 版本要求
OpenGLES 支持 3.2及以上
Vulkan 支持 Vulkan 1.2版本及以上
DX11 不支持 DX11 本身不支持VRS
DX12 支持 /
Metal 当前版本不支持 /

VRS 使用说明

如何开启 VRS 并设置 Shading Rate

在 Tuanjie Editor 中,依次点击 Project Settings >> Graphics >> Shading Settings,默认为关闭状态。

VRS Off
VRS Off

点击展开下拉菜单,选择开启VRS,有两种模式可以选择:

Custom Shading

VRS Custom
VRS Custom
  • 开启后可以使用 VRS 功能,且可以自定义每个 Renderer 的 Shading Rate。

  • 自定义 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。

      VRS Inspector
      VRS Inspector

Camera-Relative Shading

VRS Camera Relative
VRS Camera Relative
  • 开启后可以使用 VRS 功能,且默认使用 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。
    • 表示指定物体投影到屏幕上的有效覆盖值范围。它是一个相对值,并不直接对应于屏幕上的物理像素尺寸。
  • Shading Rate 自动计算策略:
    • 因不同的图形 API 支持的 Shading Rate 有差异,且部分图形 API 对 Shading Rate 并非全量支持,基于实际调试和研究结果,Camera-Relative Shading 算法对图形 API 原生不支持的 Shading Rate 自动计算均进行了统一处理,设置合理的 Shading Rate 值。

    • 忽略硬件差异的情况下,各图形 API 对 Shading Rate 原生支持情况,以及Camera-Relative Shading 算法对非原生支持的 Shading Rate 处理后的替换 Shading Rate 取值如下表:(括号内为修改后)
      • 对于标记为Cap的单元格,图形 API 会对该 Shading Rate 根据上限有条件地启用。
      • Camera-Relative Shading 对不支持的值默认修改为 2x2
      • 若硬件不支持 2x2,则修改为 1x1
图形 API / Shading Rate 1x1 1x2 2x1 2x2 2x4 4x2 4x1 1x4 4x1
D3D12 Y Y Y Y Cap (Cap/2x2) Cap (Cap/2x2) Cap (Cap/2x2) N (2x2) N (2x2)
Vulkan Y Y Y Y Y Y Y Y Y
GLES(EXT) Y Y Y Y Y Y Y Y Y
GLES(QCOM) Y Y Y Y N (2x2) Y Y N (2x2) N (2x2)

注意:

  • 选择 Custom Shading 意味着每个 Renderer 会按照各自 Inspector 中设置的 Shading Rate 进行渲染。
  • 选择 Camera-Relative Shading:
    • 对于非默认 Shading Rate 值(已自定义)的 Renderer,引擎将按照自定义的 Shading Rate 对该 Renderer 进行渲染;
    • 对于默认 Shading Rate 值(未修改/自定义)的 Renderer,引擎将启动 Camera-Relative Shading 算法,为未手动设置 Shading Rate 的 Renderer 自动计算近似 Shading Rate 值。

调试工具

在 Tuanjie Editor 中,依次点击 Window >> Analysis >> Rendering Debugger >> Rendering,Map Overlays 选择“Shading Rate Value Map”,可以开启 VRS Debug 工具。

开启后,Scene 窗口中将通过颜色实时展示当前每个 Renderer 使用的 Shading Rate 值。

VRS Debug Tool
VRS Debug Tool
  • Map Sizes:调试工具在 Scene 窗口中的占比,拖动以调整 Scene 窗口中调试工具大小。

  • Show Shading Rate Map:勾选后,打开 Shading Rate 颜色图例。

    VRS Debug Tool Map
    VRS Debug Tool Map

开启后,可在 Scene 窗口中实时查看当前场景中设置的 Shading Rate。

VRS Debug Tool Demo
VRS Debug Tool Demo

VRS 渲染结果示例

VRS 在保证视觉质量的前提下,优化 GPU 的开销。理论上,Shading Rate 越高,则渲染结果画面越模糊,GPU 的优化收益越大。 以下为同一场景中,全部开启最高程度(Shading Rate:Size 4*4)的 VRS 和不开启 VRS 的渲染结果对比。

VRS 不开启
VRS 不开启
VRS 开启最高程度
VRS 开启最高程度

推荐场景及用法

Tuanjie VRS 可针对场景中任一 Renderer 进行自定义设置并生效。VRS 的目标是降低 GPU 的 Fragment Instructions / SecondFragments Shaded / Second

  • Fragment Instructions / Second : 每秒发出的片段着色器指令总数,是一个衡量 GPU 在每秒钟内处理片段着色器指令数量的性能指标,表示 GPU 在每秒钟内执行了多少片段指令。这个值越高,意味着 GPU 每秒处理的片段计算越多,渲染性能越好。
  • Fragments Shaded / Second : 每秒渲染的片段数,衡量 GPU 在每秒钟内处理和渲染的片段数量的性能指标,表示 GPU 在每秒钟内能处理并渲染多少片段。这是一个反映 GPU 性能的关键参数,尤其是在执行片段着色器计算时。该值越高,表示 GPU 能够在单位时间内处理更多的片段,从而提高渲染帧率和整体性能。

Shading Rate 越高,则渲染结果画面越模糊。因此,推荐在渲染内容较重的场景中,对于非视觉重心的 Renderer,设置较高(如 Size 4x4)的 Shading Rate;对于视觉重心的 Renderer,设置较低的 Shading Rate(如 Size 1x1),以保证视觉质量。

Frame Debugger event information
World building