Unity Keyword

官方文档
官方文档2

关键字有(局部关键字)Local Shader Keyword 和(全局关键字)Global Shader Keyword。

注:作用域:

1.Local Shader Keywords:
我们在Shader源文件中定义的都是Local Shader Keywords,只影响单个shader或compute shader,Local Shader Keywords有局部和全局作用域,这影响它们是否可被全局关键字重写。

2.Global Shader Keywords:
全局关键字由Unity维护,不能在shader源文件中定义,运行时通过C#重写局部关键字。

注:局部关键字能否全局关键字被重写分两种情况:
1.看指令后面有没_local,如下
#pragma shader_feature_local A 局部关键字A在局部作用域不能被全局关键字重写

2.材质实例是否开启了局部关键字,如果开启了是不能被重写的。
#pragma shader_feature CLIPPING //局部关键字CLIPPING在全局作用域
如上,如果一个材质开启了CLIPPING,那么全局关键字就不能重写这个材质的CLIPPING了,其他没有开启,全局关键字可以重写这个关键字。

这一点和预制体、配置文件一样,预制体中的值是全局的,如果单个预制体实例修改了值(比如缩放值),预制体就不能控制这个实例的缩放了。

你可能感兴趣的:(Unity,unity)