Version: 6000.3
语言: 中文
使用关键字更改着色器的工作方式
Unity 如何编译分支着色器

着色器关键字工作流程

要控制着色器在不同情况下的行为方式,请使用着色器在 GPU 上运行的程序。更多信息
请参阅术语表
关键字。每个关键字都充当切换开关来更改着色器的行为。

您可以使用关键字执行以下作:

  • 为材质配置不同的设置。
  • 使着色器在不同的硬件上以不同的方式工作。
  • 在运行时动态更改着色器的行为。

使用以下步骤:

  1. 声明着色器关键字或一组着色器关键字。
  2. 使用if语句,根据关键字的状态分支着色器代码。
  3. 切换着色器关键字以控制哪个分支处于活动状态。

声明着色器关键字

声明着色器关键字或一组着色器关键字,使用#pragma陈述。以下示例定义了一组 2 个关键字,名为REDGREEN:

#pragma shader_feature RED GREEN

有关详细信息,请参阅声明着色器关键字。

分支着色器代码

使用if语句,使着色器代码的各个部分根据关键字的状态执行。例如,使用REDGREEN关键字来控制着色器输出的颜色:

void frag() : SV_Target {

    if (RED)
    {
        // Output red
    }
    
    else if (GREEN)
    {
        // Output green
    }

}

有关详细信息,请参阅使着色器行为以关键字为条件

注意:还可以使用 HLSL 条件语句,例如if以及预处理器语句,例如#if不使用着色器关键字。

切换着色器关键字

要从编辑器或运行时控制着色器,请参阅以下内容:

其他资源

使用关键字更改着色器的工作方式
Unity 如何编译分支着色器