版本:Unity 6 (6000.0)
语言:English
ShaderLab 中的 Blend 命令参考
ShaderLab 中的 ColorMask 命令参考

ShaderLab 中的 BlendOp 命令参考

指定 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)

注意

  1. 逻辑运算需要 DX 11.1+ 或 Vulkan。
  2. 高级 OpenGL 混合操作需要 GLES3.1 AEP+GL_KHR_blend_equation_advancedGL_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.
        }
    }
}

其他资源

ShaderLab 中的 Blend 命令参考
ShaderLab 中的 ColorMask 命令参考