Unity3D:检查您有多少个着色器变体
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
检查您有多少个着色器变体
您可以使用日志记录和分析工具来检查有多少着色
变体 Unity 编译并确定删除(剥离)变体的方法,以缩短构建时间并减少内存使用量。您可以执行以下操作:
- 获取编辑器使用的着色器变体列表
- 获取 Unity 在构建时创建的着色器变体列表
- 获取 Unity 在运行时编译的着色器变体列表
- 检查运行时使用多少内存着色器
- 在运行时突出显示缺少的着色器
获取编辑器使用的着色器变体列表
您可以生成编辑器在现场
视图和游戏视图。为此:
- 转到编辑>项目设置>图形。
- 在“着色器加载”下,您可以在“当前跟踪:”旁边查看有多少着色器和着色器变体。
- 选择保存到资产...以创建着色器变体集合资产。
获取 Unity 在构建时创建的着色器变体列表
构建项目后,打开日志文件并搜索以查看 Unity 编译和剥离了哪些变体。例如:Editor.logCompiling shader
Compiling shader "Universal Render Pipeline/Lit" pass "ForwardLit" (fp)
320 / 786432 variants left after stripping, processed in 6.77 seconds
starting compilation...
finished in 29.72 seconds. Local cache hits 202 (0.24s CPU time), remote cache hits 0 (0.00s CPU time), compiled 118 variants (582.41s CPU time), skipped 0 variants
如果您使用的是通用渲染管线 (URP) 或高清渲染管线 (HDRP),您还可以记录 Unity 总共编译和剥离了多少变体。在“着色器剥离”>“着色器变体日志级别”下选择“已禁用”以外的日志记录级别:
- 通用渲染管线资源(如果您使用的是 URP)。
- 全局设置窗口(如果您使用的是 HDRP)。
这会将日志记录添加到 。例如:TotalEditor.log
STRIPPING: Universal Render Pipeline/Lit (ForwardLit pass) (Fragment) - Remaining shader variants = 640/5760 = 11.11111% - Total = 2657/10169 = 26.12843%
有关 的位置,请参见日志文件。Editor.log
获取 Unity 在运行时编译的着色器变体列表
- 转到编辑>项目设置>图形。
- 在着色器加载下,启用日志着色器编译。
- 生成项目时,启用开发构建
在构建设置中。 - 在控制台窗口
,选择编辑器并启用完整日志 [仅限开发人员模式]。 - 启动您构建的应用程序。
Unity 在为 GPU 编译着色器时,会在控制台窗口中打印一条消息。Compiled shader
检查运行时使用多少内存着色器
使用内存性能分析器模块或内存性能分析器包检查运行时使用的内存着色器量。如果着色器使用大量内存,您可以尝试剥离其变体。
在运行时突出显示缺少的着色器
在 Unity 2022.2 及更高版本中,当材质尝试使用缺少的着色器变体时,您可以强制 Unity 在运行时显示粉红色错误着色器。
- 转到编辑>项目设置>播放器。
- 在“其他设置”下的“脚本编译”部分中,选择“严格着色器变体匹配”。
也可以在 C# 中启用此功能脚本
使用 strictShaderVariantMatching
。
执行此操作时,Unity 会在控制台中显示一条警告,其中包含缺少的变体及其关键字。您可以在剥离期间使用它来检查是否删除项目所需的着色器变体。
由3D建模学习工作室整理翻译,转载请注明出处!