要声明着色器在 GPU 上运行的程序。 更多信息
参见 术语表 关键字,请在 HLSL 代码中使用 #pragma
指令。例如
#pragma shader_feature REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3
使用以下着色器指令之一
着色器指令 | 分支类型 | Unity 创建的着色器变体 |
---|---|---|
shader_feature |
静态分支 | 使用材质属性在构建时启用的关键字组合的变体 |
multi_compile |
静态分支 | 每个可能的关键字组合的变体 |
dynamic_branch |
动态分支 | 无额外变体 |
参考以下内容
在 Shader Graph 中,请改用 Shader Graph:关键字节点。
单个 #pragma
语句中的关键字统称为“集”。
例如,要声明一组三个关键字
#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