1

Unity3Dで開発しています。

ここで定義されている深度マスク シェーダを使用すると、シェーダを使用したマスクの背後にあるオブジェクトは描画されません (マスクの前にあるオブジェクトのみが描画されます)。参照されているコードを使用して、逆の深度マスクを作成しようとしました。これは、カメラがその背後にあるオブジェクトのみを描画することを目的としています。

私がしたことは変化でした

ZTest LEqual

の中へ

ZTest GEqual

私も試しました

ZTest Greater

ただし、何が起こるかというと、カメラはマスクの後ろまたは前にあるすべてのオブジェクトを描画します。逆深度マスクを実装するにはどうすればよいですか?

4

1 に答える 1

0

ZTest GEqualマスク自体ではなく、マスクされたオブジェクトのシェーダーで使用する必要があります。また、深度マスクとマスクされたオブジェクトは、他のすべてのオブジェクトの前にレンダリングする必要があることに注意してください。したがって、次のレンダー キューを使用する必要があります。

  • 深度マスク:Geometry - 20または2080
  • マスクされたオブジェクト:Geometry - 10または2090

(デプス マスクの詳細については、Unity Wikiを参照してください。)

また、マスクされたオブジェクトの z-buffer 書き込みを無効にする必要があります ( ZWrite Off)。これは、マスクされたオブジェクトがオーバーラップすると、正しくレンダリングされないことを意味します。ジオメトリの残りの部分でも問題が発生する可能性があります。より良いアプローチは、Unity 4.2 の Pro バージョンで利用可能なステンシル バッファーを使用することです。

于 2014-03-25T20:27:56.933 に答える