GPU の深度バイアスを設定します。
深度バイアス (深度オフセットとも呼ばれます) は、ジオメトリを描画する深度を決定する GPU の設定です。深度バイアスを調整すると、GPU は同じ深さにある他のジオメトリの上にジオメトリを描画するようになります。これにより、Z ファイティングやシャドウアクネなどの好ましくない視覚効果を避けることができます。
特定のジオメトリの深度バイアスを設定するには、このコマンドまたはRenderStateBlock を使用します。すべてのジオメトリに影響を与えるグローバルの深度バイアスを設定するには、CommandBuffer.SetGlobalDepthBias を使用します。GPU は、グローバルの深度バイアスに加えて、特定のジオメトリの深度バイアスを適用します。
シャドウアクネを軽減するには、ライトバイアス を設定すると同様の視覚効果を得ることができます。ただし、この設定は違う方法で動作し、GPU の状態を変更するものではありません。詳細については、影のトラブルシューティング を参照してください。
機能名 | ビルトインレンダーパイプライン | ユニバーサルレンダーパイプライン (URP) | HD レンダーパイプライン (HDRP) | カスタム SRP |
---|---|---|---|---|
Offset | あり | あり | あり | あり |
このコマンドは、レンダー状態の変更を行います。Pass
ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader
ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。
シグネチャ | 構文例 | 機能 |
---|---|---|
Offset <factor>, <units> |
Offset 1, 1 |
指定された値に基づいて、ジオメトリをカメラの近く、または遠くに描画します。 |
パラメーター | 値 | 機能 |
---|---|---|
factor | Float (範囲は –1 から 1) | 深度勾配とも呼ばれる最大 Z の勾配をスケールして、各ポリゴンの可変深度オフセットを生成します。 ニアクリップ面とファークリップ面に平行でないポリゴンには Z スロープがあります。そのようなポリゴンの視覚的なアーティファクトを避けるために、この値を調整します。 |
units | Float (範囲は –1 から 1) | 一定の深度オフセットを生成するために、最小解決可能深度バッファ値をスケールします。解決可能な最小深度バッファ値 (1 unit) は、デバイスによって異なります。 負の値は、GPU がポリゴンをカメラに近づけて描画することを意味します。正の値は、GPU がポリゴンをカメラから遠くに描画することを意味します。 |
このコードサンプルでは、Pass ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
SubShader
{
// SubShader を定義する残りのコードをここに記述します
Pass
{
// GPU がこのジオメトリをカメラに近くに描画するように、このジオメトリの深度オフセットを設定します
// 通常、 Z ファイティングを避けるためにこれを行います
Offset -1, -1
// パスを定義する残りのコードをここに記述します
}
}
}
このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。
Shader "Examples/CommandExample"
{
SubShader
{
// GPU がこのジオメトリをカメラに近くに描画するように、このジオメトリの深度オフセットを設定します
// 通常、 Z ファイティングを避けるためにこれを行います
Offset -1, -1
// SubShader を定義する残りのコードをここに記述します
Pass
{
// パスを定義する残りのコードをここに記述します
}
}
}