Blend コマンドで使用されるブレンディング操作を指定します。このコマンドが効果を発揮するためには、同じ Pass ブロック (このコマンドが Pass ブロック内にある場合) または SubShader ブロック (このコマンドが SubShader ブロック内にある場合) に Blend コマンドが存在する必要があります。
すべてのデバイスですべてのブレンド操作がサポートされているわけではなく、サポートはグラフィックス API とハードウェアの両方に依存します。グラフィックス API によって、サポートされていないブレンディング操作の扱いは異なります。GL はサポートされていない操作をスキップし、Vulkan と Metal は Add 操作にフォールバックします。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
BlendOp | あり | あり | あり | あり |
このコマンドは、レンダー状態の変更を行います。Pass
ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader
ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。
シグネチャ | 構文例 | 機能 |
---|---|---|
BlendOp <operation> |
BlendOp Sub |
Blend コマンドで使用するブレンド操作を設定します。 |
パラメーター | 値 | 機能 |
---|---|---|
operation | Add |
同時にソースとデスティネーションを追加します。 |
Sub |
ソースからデスティネーションを減算します | |
RevSub |
デスティネーションからソースを減算します | |
Min |
ソースとデスティネーションの小さい方を使用します。(注 1 参照) | |
Max |
ソースとデスティネーションの大きい方を使用します。(注 2 参照) | |
LogicalClear |
論理演算: Clear (0) (注 2 参照) |
|
LogicalSet |
論理演算: Set (1) (注 2 参照) |
|
LogicalCopy |
論理的操作: Copy (s) (注 2 参照) |
|
LogicalCopyInverted |
論理演算: Copy inverted (!s) (注 2 参照) |
|
LogicalNoop |
論理演算: Noop (d) (注 2 参照) |
|
LogicalInvert |
論理演算: Invert (!d) (注 2 参照) |
|
LogicalAnd |
論理演算: And (s & d) (注 2 参照)) |
|
LogicalNand |
論理演算: Nand !(s & d) (注 2 参照) |
|
LogicalOr |
Logical operation: Or (s | d) (See note 2) |
|
LogicalNor |
Logical operation: Nor !(s | d) (See note 2) |
|
LogicalXor |
論理演算: Xor (s ^ d) (注 2 参照) |
|
LogicalEquiv |
論理演算: Equivalence !(s ^ d) (注 2 参照) |
|
LogicalAndReverse |
論理演算: Reverse And (s & !d) (注 2 参照) |
|
LogicalAndInverted |
論理演算: Inverted And (!s & d) (注 2 参照) |
|
LogicalOrReverse |
Logical operation: Reverse Or (s | !d) (See note 2) |
|
LogicalOrInverted |
Logical operation: Inverted Or (!s | d) (See note 2) |
|
Multiply |
高度な OpenGL ブレンド操作: Multiply (注 3 参照) |
|
Screen |
高度な OpenGL ブレンド操作: Screen (注 3 参照) |
|
Overlay |
高度な OpenGL ブレンド操作: Overlay (注 3 参照) |
|
Darken |
高度な OpenGL ブレンド操作: Darken (注 3 参照) |
|
Lighten |
高度な OpenGL ブレンド操作: Lighten (注 3 参照) |
|
ColorDodge |
高度な OpenGL ブレンド操作: ColorDodge (注 3 参照) |
|
ColorBurn |
高度な OpenGL ブレンド操作: ColorBurn (注 3 参照) |
|
HardLight |
高度な OpenGLブレンド操作: HardLight (注 3 参照) |
|
SoftLight |
高度な OpenGLブレンド操作: SoftLight (注 3 参照) |
|
Difference |
高度な OpenGLブレンディング操作: 差分 (注 3 参照) |
|
Exclusion |
高度な OpenGL ブレンド操作: Exclusion (注 3 参照) |
|
HSLHue |
高度な OpenGL ブレンド操作: HSLHue (注 3 参照) |
|
HSLSaturation |
高度な OpenGL ブレンド操作: HSLSaturation (注 3 参照) |
|
HSLColor |
高度な OpenGL ブレンド操作: HSLColor (注 3 参照) |
|
HSLLuminosity |
高度な OpenGL ブレンド操作: HSLLuminosity (注 3 参照) |
注:
GL_EXT_blend_minmax
が必要です。GLES3.1 AEP+
、 GL_KHR_blend_equation_advanced
、または GL_NV_blend_equation_advanced
が必要です。これらは標準的な RGBA ブレンドで使用するときのみ使用可能で、RGB とアルファを別々にブレンドする場合には対応していません。Shader "Examples/CommandExample"
{
SubShader
{
// SubShader を定義する残りのコードをここに記述
Pass
{
// Enable subtractive blending for this Pass
Blend SrcAlpha One
BlendOp RevSub
// Pass を定義する残りのコードをここに記述
}
}
}
このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
SubShader
{
//この SubShader の減法ブレンディングを有効にします
Blend SrcAlpha One
BlendOp RevSub
// The rest of the code that defines the SubShader goes here.
Pass
{
// Pass を定義する残りのコードをここに記述
}
}
}