Version: 2022.1
言語: 日本語
ShaderLab コマンド: Blend
ShaderLab コマンド: ColorMask

ShaderLab コマンド: BlendOp

Blend コマンドで使用されるブレンディング操作を指定します。このコマンドが効果を発揮するためには、同じ Pass ブロック (このコマンドが Pass ブロック内にある場合) または SubShader ブロック (このコマンドが SubShader ブロック内にある場合) に Blend コマンドが存在する必要があります。

すべてのデバイスですべてのブレンド操作がサポートされているわけではなく、サポートはグラフィックス API とハードウェアの両方に依存します。グラフィックス API によって、サポートされていないブレンディング操作の扱いは異なります。GL はサポートされていない操作をスキップし、Vulkan と Metal は Add 操作にフォールバックします。

レンダーパイプラインの互換性

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
BlendOp はい はい はい はい

使用法

このコマンドは、レンダー状態の変更を行います。Pass ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。

シグネチャ 構文例 機能
BlendOp <operation> BlendOp Sub Blend コマンドで使用するブレンド操作を設定します。

有効なパラメーター値

パラメーター Value 機能
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 参照)

注:

  1. Min と Max には、OpenGL ES 2 の GL_EXT_blend_minmax が必要です。
  2. 論理演算には DX 11.1 以降、または Vulkan が必要です。
  3. OpenGL の高度なブレンド操作には、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 を定義する残りのコードをここに記述
        }
    }
}
ShaderLab コマンド: Blend
ShaderLab コマンド: ColorMask