Unity3D:着色器变体剥离

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

着色器变体剥离

您可以阻止编译着色器变体。这称为剥离。剥离不需要的变体可以大大减少构建时间、文件大小、着色器加载时间和运行时内存使用量。在较大的项目或具有复杂着色器的项目中,这是一个非常重要的考虑因素。

声明着色器关键字时限制着色器变体

声明着色器关键字的方式可以限制它们生成的变体数:

  • 尽可能使用代替。shader_featuremulti_compile
  • 确保不使用 定义未使用的关键字。multi_compile
  • 指示着色器关键字何时仅影响给定的着色器阶段。

有关在手动编码着色器中执行此操作的信息,请参阅在 HLSL 中声明和使用着色器关键字。有关在着色器图中执行此操作的信息,请参阅着色器图:黑板。

在编辑器 UI 中剥离着色器变体

Unity 编辑器 UI 中有多个位置可以配置着色器剥离:

  • 在图形设置窗口中,配置着色器剥离部分中的设置:
  • 确保“始终包含着色器”设置中不包含不需要的着色器。
  • 与 GPU 实例化、光照贴图和雾相关的条带变体。
  • 在内置渲染管线中,如果层设置不同并不重要,请确保它们彼此相同。有关详细信息,请参阅图形层。
  • 在通用渲染管线 (URP) 中,禁用 URP 资源中未使用的功能。有关详细信息,请参阅着色器剥离。

使用编辑器脚本剥离着色器变体

对于无法以其他方式剥离的着色器变体,可以在编辑器脚本中使用以下 API 来执行构建时剥离:

  • IPreprocessShaders.OnProcessShader:在 Unity 编译图形着色器之前接收回调 传递到构建中。
  • IPreprocessComputeShaders.OnProcessComputeShader:在 Unity 将计算着色器编译为构建之前接收回调。

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:将着色器关键字与材质检查器配合使用 (mvrlink.com)

下一篇:Unity3D:着色器变体集合 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号