由于着色器变体数量在不断的增加,播放器构建时间和数据大小会随着项目复杂度而增加。而通过允许开发人员控制Unity着色器编译器处理哪些着色器变体,并将其包含在播放器数据中,可大量减少播放器构建时间和数据大小。
可编程着色器变体移除功能允许开发人员移除所有包含无效代码路径的着色器变体、去除带有未使用功能的着色器变体,并创建着色器构建配置,例如“debug”(调试)和“release”(正式版),这些操作不会影响迭代时间或是复杂性的维护。
尽管学习可编程着色器变体移除功能并不简单,但这个功能却可以大幅提升团队效率。
基础概念与术语
为了理解可编程着色器变体移除功能,我们首先要准确理解一些相关概念。
着色器资源(Shader asset):着色器资源是个包含属性、子着色器、通道和HLSL代码的完整源代码文件。 着色器片段(Shader snippet):着色器片段是带有单个着色器阶段所有依赖的HLSL输入代码。 着色器阶段(Shader stage):着色器阶段是GPU渲染管线中的一个特定阶段,通常情况下是顶点着色器阶段(vertex shader stage)和片元着色器阶段(fragment shader stage)。