指定 Blend 命令使用的混合操作。为了使此命令生效,在同一 Pass 块(如果此命令位于 Pass 块中)或 SubShader 块(如果此命令位于 SubShader 块中)中还必须存在 Blend 命令。
并非所有混合操作都受所有设备支持,并且支持取决于图形 API 和硬件。不同的图形 API 对不受支持的混合操作的处理方式不同:GL 跳过不受支持的操作,而 Vulkan 和 Metal 回退到 Add 操作。
| 功能名称 | 通用 渲染管线一系列操作,用于获取场景内容并在屏幕上显示它们。Unity 允许您选择预构建的渲染管线,或编写自己的渲染管线。 更多信息 参见 词汇表 (URP) | 高清渲染管线 (HDRP) | 自定义 SRP | 内置渲染管线 | 
|---|---|---|---|---|
| BlendOp | 是 | 是 | 是 | 是 | 
此命令会更改渲染状态。在 Pass 块中使用它来设置该 Pass 的渲染状态,或在 SubShader 块中使用它来设置该 SubShader 中所有 Pass 的渲染状态。
| 签名 | 示例语法 | 功能 | 
|---|---|---|
| BlendOp <operation> | BlendOp Sub | 设置 Blend 命令使用的混合操作。 | 
| 参数 | 值 | 功能 | 
|---|---|---|
| operation | Add | 将源和目标相加。 | 
| Sub | 从源中减去目标。 | |
| RevSub | 从目标中减去源。 | |
| Min | 使用源和目标中较小的值。(1) | |
| Max | 使用源和目标中较大的值。(1) | |
| LogicalClear | 逻辑运算: Clear (0)(1) | |
| LogicalSet | 逻辑运算: Set (1)(1) | |
| LogicalCopy | 逻辑运算: Copy (s)(1) | |
| LogicalCopyInverted | 逻辑运算: Copy inverted (!s)2 | |
| LogicalNoop | 逻辑运算: Noop (d)(1) | |
| LogicalInvert | 逻辑运算: Invert (!d)(1) | |
| LogicalAnd | 逻辑运算: And (s & d)(1) | |
| LogicalNand | 逻辑运算: Nand !(s & d)(1) | |
| LogicalOr | 逻辑运算: Or (s | d)(1) | |
| LogicalNor | 逻辑运算: Nor !(s | d)(1) | |
| LogicalXor | 逻辑运算: Xor (s ^ d)(1) | |
| LogicalEquiv | 逻辑运算: Equivalence !(s ^ d)(1) | |
| LogicalAndReverse | 逻辑运算: Reverse And (s & !d)(1) | |
| LogicalAndInverted | 逻辑运算: Inverted And (!s & d)(1) | |
| LogicalOrReverse | 逻辑运算: Reverse Or (s | !d)(1) | |
| LogicalOrInverted | 逻辑运算: Inverted Or (!s | d)(1) | |
| Multiply | 高级 OpenGL 混合操作: Multiply(2) | |
| Screen | 高级 OpenGL 混合操作: Screen(2) | |
| Overlay | 高级 OpenGL 混合操作: Overlay(2) | |
| Darken | 高级 OpenGL 混合操作: Darken(2) | |
| Lighten | 高级 OpenGL 混合操作: Lighten(2) | |
| ColorDodge | 高级 OpenGL 混合操作: ColorDodge(2) | |
| ColorBurn | 高级 OpenGL 混合操作: ColorBurn(2) | |
| HardLight | 高级 OpenGL 混合操作: HardLight(2) | |
| SoftLight | 高级 OpenGL 混合操作: SoftLight(2) | |
| Difference | 高级 OpenGL 混合操作: Difference(2) | |
| Exclusion | 高级 OpenGL 混合操作: Exclusion(2) | |
| HSLHue | 高级 OpenGL 混合操作: HSLHue(2) | |
| HSLSaturation | 高级 OpenGL 混合操作: HSLSaturation(2) | |
| HSLColor | 高级 OpenGL 混合操作: HSLColor(2) | |
| HSLLuminosity | 高级 OpenGL 混合操作: HSLLuminosity(2) | 
注意
GLES3.1 AEP+、GL_KHR_blend_equation_advanced 或 GL_NV_blend_equation_advanced。它们只能与标准 RGBA 混合一起使用;它们与单独的 RGB 和 alpha 混合不兼容。Shader "Examples/CommandExample"
{
    SubShader
    {
         // The rest of the code that defines the SubShader goes here.
        Pass
        {    
             // Enable subtractive blending for this Pass
             Blend SrcAlpha One
             BlendOp RevSub
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}
此示例代码演示了在 SubShader 块中使用此命令的语法。
Shader "Examples/CommandExample"
{
    SubShader
    {
         // Enable subtractive blending for this SubShader
         Blend SrcAlpha One
         BlendOp RevSub
         // The rest of the code that defines the SubShader goes here.        
        Pass
        {    
              // The rest of the code that defines the Pass goes here.
        }
    }
}