Version: Unity 6.0 (6000.0)
语言 : 中文
选择要在着色器中使用的关键字类型
使着色器行为以关键字为条件

声明着色器关键字

要声明着色器关键字,请在 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_branchshader_featuremulti_compile —— 如果这样做,Unity 会使用 dynamic_branch

将关键字本地化

关键字默认受全局关键字状态的影响。

为着色器指令添加 _local 以使关键字本地化。启用或禁用某个全局关键字不会影响同名本地关键字的状态。

例如:

#pragma shader_feature_local REFLECTION_TYPE1 REFLECTION_TYPE2 REFLECTION_TYPE3

其他资源

选择要在着色器中使用的关键字类型
使着色器行为以关键字为条件