Version: 2020.3
言語: 日本語
ShaderLab コマンド: ZClip
ShaderLabコマンド: ZWrite

ShaderLab コマンド: ZTest

ジオメトリの深度テストの合格/不合格の条件を設定します。

深度テストは、“Early-Z” 機能を持つ GPU がパイプラインの早い段階でジオメトリを拒否することを可能にし、また、ジオメトリの正しい順序付けを保証します。また、深度テストの条件を変更することで、オブジェクトオクルージョンなどの視覚効果を実現します。

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

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

使用法

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

シグネチャ 構文例 機能
ZTest [operation] ZTest Less ジオメトリの深度テストの合格/不合格の条件を設定します。

有効なパラメーター値

パラメーター   機能
operation Less 既存のジオメトリの前にあるジオメトリを描画します。既存のジオメトリと同じ距離、または後ろにあるジオメトリは描きません。
LEqual 既存のジオメトリの前にあるジオメトリ、または既存のジオメトリと同じ距離にあるジオメトリを描画します。既存のジオメトリの後ろにあるジオメトリを描きません。

これはデフォルト値です。
Equal 既存のジオメトリの前にあるジオメトリを描画します。既存のジオメトリの前、または後ろにあるジオメトリは描きません。
GEqual 既存のジオメトリの後ろ、または同じ距離にあるジオメトリを描画します。既存のジオメトリの前にあるジオメトリは描きません。
Greater 既存のジオメトリの後ろにあるジオメトリを描画します。既存のジオメトリと同じ距離、または前にあるジオメトリは描きません。
NotEqual 既存のジオメトリと同じ距離にないジオメトリを描画します。既存のジオメトリと同じ距離にあるジオメトリは描きません。
Always 深度テストは行われません。距離に関係なく、すべてのジオメトリを描画します。

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

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

        Pass
        {    
              // この Pass のすべてのピクセルについて、深度テスト操作を Equal に設定します
              // すでにレンダリングされているジオメトリと正確に同じ場所にジオメトリをレンダリングする場合は、通常、このようにします
              ZTest Equal
            
              // Pass を定義するコードの残りをここに記述
        }
    }
}

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

Shader "Examples/CommandExample"
{
    SubShader
    {
        // この Pass のすべてのピクセルについて、深度テスト操作を Equal に設定します
        // すでにレンダリングされているジオメトリと正確に同じ場所にジオメトリをレンダリングする場合は、通常、このようにします
        ZTest Equal

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

        Pass
        {    
          // Pass を定義するコードの残りをここに記述
        }
    }
}
ShaderLab コマンド: ZClip
ShaderLabコマンド: ZWrite