カラーチャンネル書き込みマスクを設定し、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 | 
	R、G、B、A の各チャネルへの色の書き込みを有効にします。 | 
R | 
	赤チャンネルへの色の書き込みを有効にします。 | |
G | 
	緑チャンネルへの色の書き込みを有効にします。 | |
B | 
	青チャンネルへの色の書き込みを有効にします。 | |
A | 
	アルファチャンネルへの色の書き込みを有効にします。 | |
R、G、B、A をスペースなしで組み合わせたもの。例: RB
 | 
	指定されたチャンネルへの色の書き込みを有効にします。 | 
Shader "Examples/CommandExample"
{
    SubShader
    {
         // SubShader を定義する残りのコードをここに記述
        Pass
        {    
              //このパスの RGB チャネルへの書き込みのみを有効にします。これにより、アルファチャネルへの書き込みが無効になります。
              ColorMask RGB
              // Pass を定義する残りのコードをここに記述
        }
    }
}
このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
    SubShader
    {
         // この Subshader の RGB チャネルへの書き込みのみを有効にします。これにより、アルファチャネルへの書き込みが無効になります。
         ColorMask RGB
         // SubShader を定義するのころのコードを個々に記述  
        Pass
        {    
          // Pass を定義する残りのコードを個々に記述
        }
    }
}