Specifies the blending operation used by the Blend command. For this command to have any effect, there must also be a Blend command in the same Pass block (if this command is in a Pass block) or SubShader block (if this command is in a SubShader block).
Not all blending operations are supported on all devices, and support depends on both the graphics API and the hardware. Different graphics APIs handle unsupported blending operations differently: GL skips unsupported operations, and Vulkan and Metal fall back to Add operations.
| Feature name | Built-in Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info See in Glossary  | 
	Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Custom SRP | 
|---|---|---|---|---|
| BlendOp | Yes | Yes | Yes | Yes | 
This command makes a change to the render state. Use it in a Pass block to set the render state for that Pass, or use it in a SubShader block to set the render state for all Passes in that SubShader.
| Signature | Example syntax | Function | 
|---|---|---|
BlendOp <operation> | 
	BlendOp Sub | 
	Sets the blending operation used by the Blend command. | 
| Parameter | Value | Function | 
|---|---|---|
| operation | Add | 
	Add source and destination together. | 
Sub | 
	Subtract destination from source. | |
RevSub | 
	Subtract source from destination. | |
Min | 
	Use the smaller of source and destination. (1) | |
Max | 
	Use the larger of source and destination. (1) | |
LogicalClear | 
	Logical operation: Clear (0) (1) | 
|
LogicalSet | 
	Logical operation: Set (1) (1) | 
|
LogicalCopy | 
	Logical operation: Copy (s) (1) | 
|
LogicalCopyInverted | 
	Logical operation: Copy inverted (!s) 2 | 
|
LogicalNoop | 
	Logical operation: Noop (d) (1) | 
|
LogicalInvert | 
	Logical operation: Invert (!d) (1) | 
|
LogicalAnd | 
	Logical operation: And (s & d) (1) | 
|
LogicalNand | 
	Logical operation: Nand !(s & d) (1) | 
|
LogicalOr | 
	Logical operation: Or (s | d) (1) | 
|
LogicalNor | 
	Logical operation: Nor !(s | d) (1) | 
|
LogicalXor | 
	Logical operation: Xor (s ^ d) (1) | 
|
LogicalEquiv | 
	Logical operation: Equivalence !(s ^ d) (1) | 
|
LogicalAndReverse | 
	Logical operation: Reverse And (s & !d) (1) | 
|
LogicalAndInverted | 
	Logical operation: Inverted And (!s & d) (1) | 
|
LogicalOrReverse | 
	Logical operation: Reverse Or (s | !d) (1) | 
|
LogicalOrInverted | 
	Logical operation: Inverted Or (!s | d) (1) | 
|
Multiply | 
	Advanced OpenGL blending operation: Multiply (2) | 
|
Screen | 
	Advanced OpenGL blending operation: Screen (2) | 
|
Overlay | 
	Advanced OpenGL blending operation: Overlay (2) | 
|
Darken | 
	Advanced OpenGL blending operation: Darken (2) | 
|
Lighten | 
	Advanced OpenGL blending operation: Lighten (2) | 
|
ColorDodge | 
	Advanced OpenGL blending operation: ColorDodge (2) | 
|
ColorBurn | 
	Advanced OpenGL blending operation: ColorBurn (2) | 
|
HardLight | 
	Advanced OpenGL blending operation: HardLight (2) | 
|
SoftLight | 
	Advanced OpenGL blending operation: SoftLight (2) | 
|
Difference | 
	Advanced OpenGL blending operation: Difference (2) | 
|
Exclusion | 
	Advanced OpenGL blending operation: Exclusion (2) | 
|
HSLHue | 
	Advanced OpenGL blending operation: HSLHue (2) | 
|
HSLSaturation | 
	Advanced OpenGL blending operation: HSLSaturation (2) | 
|
HSLColor | 
	Advanced OpenGL blending operation: HSLColor (2) | 
|
HSLLuminosity | 
	Advanced OpenGL blending operation: HSLLuminosity (2) | 
Notes:
GLES3.1 AEP+, GL_KHR_blend_equation_advanced, or GL_NV_blend_equation_advanced. They can only be used with standard RGBA blending; they are not compatible with separate RGB and alpha blending.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.
        }
    }
}
This example code demonstrates the syntax for using this command in a SubShader block.
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.
        }
    }
}