ジオメトリの深度テストの合格/不合格の条件を設定します。
深度テストは、“Early-Z” 機能を持つ GPU がパイプラインの早い段階でジオメトリを拒否することを可能にし、また、ジオメトリの正しい順序付けを保証します。また、深度テストの条件を変更することで、オブジェクトオクルージョンなどの視覚効果を実現します。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
ZTest | 可 | 可 | 可 | 可 |
このコマンドは、レンダー状態の変更を行います。Pass
ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader
ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。
シグネチャ | 構文例 | 機能 |
---|---|---|
ZTest [operation] | ZTest Less | ジオメトリの深度テストの合格/不合格の条件を設定します。 |
パラメーター | Value | 機能 |
---|---|---|
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 を定義するコードの残りをここに記述
}
}
}