版本:Unity 6 (6000.0)
语言:英语
选择在着色器中使用哪种类型的关键字
使着色器行为根据关键字有条件地执行

声明着色器关键字

要声明着色器在 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_branchshader_featuremulti_compile - 如果您这样做,Unity 将使用 dynamic_branch

使关键字本地化

默认情况下,关键字受全局关键字状态的影响。

_local 添加到着色器指令中以使关键字本地化。如果启用或禁用全局关键字,则不会影响具有相同名称的本地关键字的状态。

例如

#pragma shader_feature_local REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

其他资源

选择在着色器中使用哪种类型的关键字
使着色器行为根据关键字有条件地执行