ShaderLab变体

multi_complie

e.g.


shader_feature

- feature在打包(build)的时候不会把未使用的 variants 打进去, 因此应该使用shader_feature来声明那些material设置的关键词,全局代码使用的关键词最好用shader_compile来声明

C#调用

- Shader.EnableKeyword:启用全局关键字
- Shader.DisableKeyword:禁用全局关键字
- CommandBuffer.EnableShaderKeyword:使用CommandBuffer来启用全局关键字
- CommandBuffer.DisableShaderKeyword:使用CommandBuffer可以禁用全局关键字
- Material.EnableKeyword:为常规着色器启用本地关键字
	- 若不存在,则创建全局关键字
- Material.DisableKeyword:禁用常规着色器的本地关键字
- ComputeShader.EnableKeyword:为计算着色器启用本地关键字
- ComputeShader.DisableKeyword:禁用计算着色器的本地关键字

unity内置变体


其他

Graphics tiers and shader variants(图形层和着色器变体

Unity将检查GPU的功能,并确定其对应的图形层,我们可以每一个图层创建一组着色器变体,并通过“#pragma ardware_tier_variants renderer(其中renderer是有的渲染平台)” 设置不同的图形层 (此功能仅与内置渲染管线容)

Unity还会为每个着色器生成三个着色器变体