レンダリング時に深度バッファのコンテンツを更新するかどうかを設定します。通常、不透明なオブジェクトには ZWrite が有効で、半透明なオブジェクトには無効です。
ZWrite を無効にすると、深度の順序付けが正しく行われないことがあります。このような場合は、CPU でジオメトリをソートする必要があります。
| 機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP | 
|---|---|---|---|---|
| ZWrite | 可 | 可 | 可 | 可 | 
このコマンドは、レンダー状態の変更を行います。Pass ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。
| シグネチャ | 構文例 | 機能 | 
|---|---|---|
| ZWrite [state] | ZWrite Off | 深度バッファへの書き込みを有効または無効にします。 | 
| パラメーター | Value | 機能 | 
|---|---|---|
| state | On | 深度バッファへの書き込みを有効にします。 | 
| Off | 深度バッファへの書き込みを無効にします。 | 
このコードサンプルでは、Pass ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
    SubShader
    {
         // SubShader を定義するコードの残りをここに記述。
        Pass
        {    
              // この Pass の深度バッファへの書き込みを無効にします。
              ZWrite Off
            
              // Pass を定義するコードの残りをここに記述。
        }
    }
}
このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
    SubShader
    {
         // この SubShader の深度バッファへの書き込みを無効にします。
         ZWrite Off
         //  SubShader を定義するコードの残りをここに記述。   
        Pass
        {    
         // Pass を定義するコードの残りをここに記述。
        }
    }
}