メインコンテンツまでスキップ

ZWrite_ZTest

はい、Render Queueの設定だけで、オブジェクトが描画される順番を制御することはできますが、ZWriteZTestの設定も重要な役割を果たします。それぞれの設定の目的と使い方を説明します。

1. Render Queue

Render Queueは、シーン内での描画順序を制御します。レンダリングパイプラインで複数のオブジェクトが描画されるとき、Render Queueの値が小さいものから順番に描画されます。

  • 値が小さいほど早く描画されます。
  • 通常、Render Queueは以下のような順番で設定されます:
    • Background (1000)
    • Geometry (2000)
    • AlphaTest (2450)
    • Overlay (3000)
    • Transparent (4000)

例えば、Render Queue3100に設定すると、そのオブジェクトはOverlayとして描画され、他のオブジェクトより後に描画されます。

注意点:

  • Render Queueを設定することで描画順番を制御できますが、深度(Zバッファ)の影響を受けるため、ZWriteZTestが重要になってきます。

2. ZWrite

ZWriteは、オブジェクトが描画される際にZバッファ(深度バッファ)への書き込みを制御する設定です。

  • ZWrite = On(1): オブジェクトが描画された場合、Zバッファにもその深度情報が書き込まれます。これにより、オブジェクトの奥行きが計算され、他のオブジェクトとの重なりが適切に処理されます。
  • ZWrite = Off(0): オブジェクトが描画されてもZバッファへの書き込みが行われません。これにより、他のオブジェクトとの深度比較が行われなくなり、オブジェクトが他のオブジェクトの前に表示されることを防ぎます。

ZWriteを無効化するケース

  • アウトラインエフェクトなど、深度の影響を受けずに描画したい場合にZWriteを無効にします。これにより、アウトラインがオブジェクトの後ろに隠れず、他のオブジェクトに影響を与えることなく描画されます。

3. ZTest

ZTestは、オブジェクトが描画される際にZバッファと比較する方法を指定する設定です。Zバッファは、カメラに最も近いオブジェクトの深度情報を記録しており、オブジェクトが他のオブジェクトよりも手前に描画されるべきかどうかを決定します。

主なZTestオプション

  • Always: すべてのピクセルが描画される。深度の比較は行われません。
  • Less: 深度値が現在のZバッファの値よりも小さい場合に描画されます。
  • Greater: 深度値が現在のZバッファの値よりも大きい場合に描画されます。
  • Equal: 深度値が現在のZバッファの値と等しい場合に描画されます。

ZTestの用途

  • Always: Zバッファを無視して常に描画する場合に使います。例えば、アウトラインやエフェクトの描画時にZバッファの影響を受けず、他のオブジェクトに隠れないようにしたい場合に使用します。
  • Less/Greater: Zバッファを利用して、奥行きに基づいた描画を行う場合に使います。

Render Queue、ZWrite、ZTestの関係

  • Render Queueで描画順序を制御する一方、ZWriteZTestでオブジェクトが他のオブジェクトとどのように交差するかを制御します。
  • **Render Queue**で描画順序を決めても、ZWriteZTestが適切に設定されていないと、オブジェクトが隠れてしまう場合があります。

例えば、アウトラインを描画する場合は:

  1. Render Queue を高い値(例:3100)に設定して後ろに描画させる。
  2. ZWrite を無効にする(Off)ことで、深度バッファを書き換えずに他のオブジェクトに隠れないようにする。
  3. ZTestAlways に設定することで、深度テストを無視して常に描画させる。

まとめ

  • Render Queue は描画順序を制御しますが、深度(Zバッファ)の影響を受けます。
  • ZWrite はZバッファへの書き込みを制御し、オブジェクトの描画が他のオブジェクトに隠れないようにするために使います。
  • ZTest はZバッファと比較して描画を行う方法を決定します。アウトラインやエフェクトなどの場合、Alwaysに設定して深度テストを無視することがあります。

Render Queueだけでは十分ではない場合があるので、ZWriteZTestを適切に設定することが、意図した描画結果を得るために重要です。