Version: Unity 6.0 (6000.0)
语言 : 中文
着色器变体简介
剥离着色器变体

检查您有多少着色器变体

您可以使用日志记录和性能分析工具检查 Unity 编译的着色器变体数量,并确定删除(剥离)变体的方法,从而缩短构建时间并减少内存使用量。可以执行以下操作:

获取编辑器 (Editor) 使用的着色器变体列表

可以生成编辑器在场景 (Scene) 视图和游戏 (Game) 视图中使用的着色器变体列表。为此需要执行以下操作:

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 图形 (Graphics)
  2. 着色器加载 (Shader Loading) 下的当前跟踪 (Currently tracked) 旁边,可以查看有多少着色器和着色器变体。
  3. 选择保存至资源 (Save to asset…) 以创建着色器变体集合资源

获取 Unity 在构建时创建的着色器变体列表

构建项目后,打开 Editor.log 日志文件并搜索 Compiling shader,查看 Unity 编译和剥离的变体。例如:

Compiling shader "Sprites/Default" pass "" (vp)
    Full variant space:         8
    After settings filtering:   8
    After built-in stripping:   4
    After scriptable stripping: 4
    Processed in 0.00 seconds
    starting compilation...
    finished in 0.03 seconds. Local cache hits 0 (0.00s CPU time), remote cache hits 0 (0.00s CPU time), compiled 4 variants (0.09s CPU time), skipped 0 variants
    Prepared data for serialisation in 0.00s

如果使用通用渲染管线 (URP) 或高清渲染管线 (HDRP),请参阅以下内容:

获取 Unity 在运行时编译的着色器变体列表

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 图形 (Graphics)
  2. 着色器加载 (Shader Loading) 下,启用记录着色器编译 (Log Shader Compilation)
  3. 在构建应用程序时,确保在构建设置 (Build Settings) 中启用了开发构建 (Development Build)
  4. 控制台 (Console) 窗口中,选择编辑器 (Editor) 并启用完整日志[仅限开发者模式] (Full Log [Developer Mode Only])
  5. 启动构建的应用程序。

Unity 为 GPU 编译着色器时,它会在控制台窗口中显示一条 Compiled shader 消息。

检查运行时着色器使用的内存量

使用内存性能分析器 (Memory Profiler) 模块内存性能分析器包可检查运行时内存着色器使用了多少内存。如果着色器使用大量内存,可以尝试剥离其变体。

在运行时突出显示缺失的着色器

在 Unity 2022.2 及更高版本中,当材质尝试使用缺失的着色器变体时,可以强制 Unity 在运行时显示粉红色错误着色器。

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player)
  2. 其他设置 (Other Settings) 下的着色器设置 (Shader Settings) 部分中,选择 严格的着色器变体匹配 (Strict shader variant matching)

还可以使用 strictShaderVariantMatching 在 C# 脚本中启用此功能。

执行此操作时,Unity 会在控制台中显示一条警告,其中包含缺失的变体及其关键字。您可以在剥离过程中使用此属性来检查是否删除了项目所需的着色器变体。

着色器变体简介
剥离着色器变体