Blend command in ShaderLab reference
Reference for the Blend command in ShaderLab.
読み終わるまでの所要時間 4 分最終更新 1ヶ月前
Determines how the GPU combines the output of the fragment shader with the render target.
The functionality of this command depends on the blending operation, which you can set using the BlendOp command. Note that while blending itself is supported on all graphics APIs and hardware, some blending operations have more limited support.
Enabling blending disables some optimizations on the GPU (mostly hidden surface removal/Early-Z), which can lead to increased GPU frame times.
This command makes a change to the render state. Use it in a block to set the render state for that Pass, or use it in a block to set the render state for all Passes in that SubShader.
PassSubShaderRender pipeline compatibility
Feature name | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Custom SRP | Built-in Render Pipeline |
|---|---|---|---|---|
| Blend | Yes | Yes | Yes | Yes |
Syntax
Signature | Example syntax | Function |
|---|---|---|
| | Disables blending for the default render target. This is the default value. |
| | As above, but for a given render target. (1) |
| | Enables blending for the default render target. Sets blend factors for RGBA values. |
| | As above, but for a given render target. (1) |
| | Enables blending the default render target. Sets separate blend factors for RGB and alpha values. (2) |
| | As above, but for a given render target. (1) (2) |
If blending is enabled, the following occurs:
- If the BlendOp command is used, the blending operation is set to that value. Otherwise, the blending operation defaults to .
Add - If the blending operation is ,
Add,Sub,RevSub, orMin, the GPU multiplies the value of the output of the fragment shader by the source factor.Max - If the blending operation is ,
Add,Sub,RevSub, orMin, the GPU multiplies the value that is already in the render target by the destination factor.Max - The GPU performs the blending operation on the resulting values.
Notes:
- Any signature that specifies a render target requires OpenGL 4.0+, , or OpenGL ES 3.2.
GL_ARB_draw_buffers_blend - Separate RGB and alpha blending is not compatible with advanced OpenGL blending operations.
Parameters
Parameter | Value | Function |
|---|---|---|
| render target | Integer, range 0 through 7 | The render target index. |
| state | | Disables blending. |
| factor | | The value of this input is one. Use this to use the value of the source or the destination color. |
| The value of this input is zero. Use this to remove either the source or the destination values. | |
| The GPU multiplies the value of this input by the source color value. | |
| The GPU multiplies the value of this input by the source alpha value. | |
| The GPU multiplies the value of this input by the minimum value of | |
| The GPU multiplies the value of this input by the frame buffer source color value. | |
| The GPU multiplies the value of this input by the frame buffer source alpha value. | |
| The GPU multiplies the value of this input by (1 - source color). | |
| The GPU multiplies the value of this input by (1 - source alpha). | |
| The GPU multiplies the value of this input by (1 - destination color). | |
| The GPU multiplies the value of this input by (1 - destination alpha). |
The blending equation is:
finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue
In this equation:
- is the value that the GPU writes to the destination buffer.
finalValue - is defined in the Blend command.
sourceFactor - is the value output by the fragment shader.
sourceValue - is the blending operation.
operation - is defined in the Blend command.
destinationFactor - is the value already in the destination buffer.
destinationValue