Version: 2023.2
言語: 日本語
ShaderLab コマンド: BlendOp
ShaderLab コマンド: Conservative

ShaderLab コマンド: ColorMask

カラーチャンネル書き込みマスクを設定し、GPU がレンダーターゲットのチャンネルに書き込むのを防ぎます。

デフォルトでは、GPU はすべてのチャンネル (RGBA) に書き込 みます。ある効果では、特定のチャンネルを変更しないでおきたい場合があります。例えば、色のレンダリングを無効にして色のない影を描画するなど、です。また、色の書き込みを完全に無効にして、他のバッファに書き込まずに 1 つのバッファにデータを集めることができます。例えば、レンダーターゲットに書き込まずに、ステンシルバッファに収集する、などです。

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

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

使用法

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

シグネチャ 構文例 機能
ColorMask <channels> ColorMask RGB デフォルトのレンダリングターゲットの指定されたチャンネルに書き込みます。
ColorMask <channels> <render target> ColorMask RGB 2 上と同様ですが、指定されたレンダーターゲットに対して実行されます。

有効なパラメーター値

パラメーター Value 機能
render target 0 から 7 の整数 レンダーターゲットのインデックス
channels 0 Disables color writes to the R, G, B, and A channels.
R 赤チャンネルへの色の書き込みを有効にします。
G 緑チャンネルへの色の書き込みを有効にします。
B 青チャンネルへの色の書き込みを有効にします。
A アルファチャンネルへの色の書き込みを有効にします。
RGBA をスペースなしで組み合わせたもの。例: RB 指定されたチャンネルへの色の書き込みを有効にします。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // SubShader を定義する残りのコードをここに記述

        Pass
        {    
              //このパスの RGB チャネルへの書き込みのみを有効にします。これにより、アルファチャネルへの書き込みが無効になります。
              ColorMask RGB

              // Pass を定義する残りのコードをここに記述
        }
    }
}

このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // この Subshader の RGB チャネルへの書き込みのみを有効にします。これにより、アルファチャネルへの書き込みが無効になります。
         ColorMask RGB

         // SubShader を定義するのころのコードを個々に記述  

        Pass
        {    
          // Pass を定義する残りのコードを個々に記述
        }
    }
}
ShaderLab コマンド: BlendOp
ShaderLab コマンド: Conservative