Version: 6000.3
语言: 中文
ShaderLab 参考中的混合命令
ShaderLab 参考中的 ColorMask 命令

ShaderLab 参考中的 BlendOp 命令

指定“混合”命令使用的混合作。要使此命令产生任何效果,同一 Pass 块(如果此命令位于 Pass 块中)或 SubShader 块(如果此命令位于 SubShader 块中)中还必须有一个 Blend 命令。

并非所有设备都支持所有混合作,支持取决于图形 API 和硬件。不同的图形 API 以不同的方式处理不受支持的混合作:GL 跳过不受支持的作,而 Vulkan 和 Metal 回退到 Add作。

渲染管线兼容性

功能名称 普遍渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(URP)
高清渲染管线 (HDRP) 定制 SRP 内置渲染管线
混合作 是的 是的 是的 是的

语法

此命令对渲染状态进行更改。在Pass块来设置该通道的渲染状态,或在SubShader块来设置该子着色器中所有通道的渲染状态。

签名 语法示例 功能
BlendOp <operation> BlendOp Sub 设置“混合”命令使用的混合作。

参数

参数 价值 功能
操作 Add 将源和目标一起添加。
Sub 从源中减去目标。
RevSub 从目标中减去源。
Min 使用源和目标中较小的一个。
Max 使用源和目标中较大者。
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 参考中的混合命令
ShaderLab 参考中的 ColorMask 命令