指定 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.
}
}
}