要声明着色器关键字,请在 HLSL 代码中使用 #pragma 指令。例如:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
使用以下着色器指令之一:
| 着色器指令 | 分支类型 | Unity 创建的着色器变体 |
|---|---|---|
shader_feature |
静态分支 | 在构建时通过材质属性启用的关键字组合变体 |
multi_compile |
静态分支 | 关键字所有可能组合的变体 |
dynamic_branch |
动态分支 | 无其他变体 |
请参阅以下内容:
针对着色器图表,请另行参阅:Keyword 节点。
单条 #pragma 语句中的各种关键字被称为“集合 (set)”。
例如,要声明一组三个关键字:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
您可以在单个着色器中声明多组关键字。例如,要创建 2 个集合:
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
#pragma shader_feature RED GREEN BLUE WHITE
您无法执行以下操作:
dynamic_branch 和 shader_feature 或 multi_compile —— 如果这样做,Unity 会使用 dynamic_branch。关键字默认受全局关键字状态的影响。
为着色器指令添加 _local 以使关键字本地化。启用或禁用某个全局关键字不会影响同名本地关键字的状态。
例如:
#pragma shader_feature_local REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3