ユニティShader-は、キューをレンダリング、ZTEST、ZWRITE

ZTEST(デプステスト)とZWRITE(書き込み深さ)

逆の順番が終わっレンダリングが、対象ブロックとの間の関係が正しいですが、キューの例をレンダリングする前に、これは、zバッファクレジット、我々は適切な咬合関係を維持することができ、まだ、レンダリングの順序どんなにです。そして、我々は、zバッファに呼び出す達成するためにZTESTとZWRITEています。

ZTEST、オブジェクト自体奥行き値をピクセル・キャッシュの現在の深さ値と比較された画素に対応する画面上の現在のオブジェクトのZTESTすなわち深さ試験、いわゆる試験、(より正確にそのフレームバッファを避ける)、初めて目渡された場合、これは、画素に書き込まれ、バッファオブジェクトの色の色になるそうでない場合は、カラーバッファを書き込まないでしょう。その他の状態ZTESTを提供しました。

ZTEST以下(より少ないバッファを流れる電流よりも深さ)
ZTESTグレーター(バッファを流れる電流よりも大きな深さ)
ZTEST LEqual(深さ未満の電流に等しいバッファを介して)
ZTEST GEqual(バッファを通る電流に等しい深さよりも大きいです)
ZTEST等しい(バッファを通る電流に等しい深さ)
ZTEST NOTEQUAL(デプスバッファを流れる電流に等しくありません)
ZTESTは、必ず(関係なく、を介して)
なお、完全深さによって閉じZTEST常にZTESTオフ当量は、試験に等しいです。

ここでのZWRITE、ZWRITEを見て、比較的単純な、たった2つの状態、ZWRITEオン(オープン深い書き込み)とZWRITEオフ(クローズ深さが書かれています)。我々は、書き込みの深度をオンにすると、オブジェクトが画面上のオブジェクトに対してレンダリングされる(より正確には、フレームバッファ)の各画素の深さは、深さバッファに書き込まれ、一方、それはZWRITEオフ、名前オブジェクトである場合深さは、デプスバッファに書き込まれません。しかし、オブジェクトが深さに書き込まれているかどうか、この状態は、それがより重要であるZWRITEに加えて、必要性の深さであるZTESTが合格しなかった場合、通過、それは深さに書き込まれませんZTESTことを通してです。デフォルトのレンダリング状態はZWRITEオンとZTEST LEqualであると同様、現在の深度テストが失敗した場合、対応する画素の位置は、全くのオリジナルが近い上部には存在しない、書かれていても、より適切なものをフロントピットがありました、その後、深さを記述する必要はありません。:したがって、上記2例とすることなく、開口部にZWRITE二つのケースを閉じ、その後、4例合計ZTESTで割った
デプスバッファ書き込み、ライト色、デプステストが渡された1、書き込みオープンの深さバッファと、
前記デプステストパス、ライトオフの深さ、深さバッファに書き込まれていないが、カラーバッファが書き込まれ;
3.デプステストに合格していない、オープンライトの深さ、深さバッファに書き込まれていないが、色は書き込みませんバッファと、
前記デプステストが合格していない、ライトオフの深さ、深さバッファに書き込まれていないが、カラーバッファが書き込まれていない、
ここに画像を挿入説明
小さなルックZTESTのいくつかの簡単な例を記述し、ZWRITEこれらおよびレンダーキュー状態制御結果をレンダリングします。

方法:みましょうキューブの前に緑のオブジェクトがブロックされていない、一つの方法は、書かれたフロントブルーキューブの深さを閉じることです。

ここに画像を挿入説明
実験結果上記により、我々は、まず、深さを試験することにより色の書き込みキャッシュを青いオブジェクト青いオブジェクトをレンダリングするが、深度書き込みを閉じ、前面から背面へのレンダリング順序に従って、それを知って、青色デプスバッファ値は依然としての一部でありますデフォルトマックスは、緑のキューブの後ろにレンダリング、深度テストはまだそれが影青いキューブの役割を果たしていませんでした、ライトカラーバッファ成功すると深さを書き込みます。

方法2:もう一つの方法は、緑がデプステストを通じて強制的にさせることです。

ここに画像を挿入説明
他の例では、デフォルトのキューブシェーダのレンダリング、とにかく言うことです常に緑の意志ZTESTセット、深度テストが渡され、緑のカラーキューブの書き込みキャッシュは、他の範囲ならば、その後、最終的に使用しています出力は緑色です。

赤はまた、ZTEST常にを開いているので、どうなりますか?

ここに画像を挿入説明
またZTEST常に使用赤立方体後、赤、緑部分が赤色で表示するため不明瞭。私たちは私のキューをレンダリングを変更する場合は、その緑、赤をレンダリングする前に、結果は別の問題であること:
ここに画像を挿入説明
レンダリングキューの交換なので、緑がデフォルトのキュージオメトリの後にレンダリングされたキュー1に、レンダリングすることを、最終的には重複する部分が戻って緑に変わりました。目に見える、場合ZTEST色バッファが最終的な出力は、最後のレンダリングされたオブジェクトの色であることを意味し、上書きされる1個の書き込みに、スルー。

グレーターの関連部分で再び見て、私たちの残りの部分はそれ以上に、デフォルトのレンダリング状態、ZTESTで緑のキューブシェーダを使用しているどのような役割、この時間:

この効果は、どこへ行くより楽しく、我々は深さを比較する際に、青、キューブ、青、緑、最終的なカバーの前部を閉塞ことがわかったものの、望ましい結果であるが、それの他の部分ですか?簡単な分析は、順序をレンダリングすることは、手前から奥にある青は最初のレンダリングがあったことを、デフォルトの深さは最大、条件は、それがデプスバッファに書き込まれ、青色のキューブをLEqual、その後の一部を重複し、緑レンダリングするために始めた満たすための深さであります以前は、重複部分を有する赤立方体、そして最終的に赤い立方体をレンダリングする、青色キューブ深度バッファは、書き込まれた緑深い青色の条件を満足する深さ値よりも大きいが、デプステストが渡され、重複部分更新色が緑色であります部分深さテストは、フロント部分は、深さテストは、重複部分が赤更新されず、最終的な重なりの緑色部分に失敗未満です。緑のキューブは、それが消えた理由の残りの部分と一致していませんか?場所のレンダリングに加えて、緑のキューブのレンダリングは、青色のキューブ奥行き情報であるため、実際には、奥行き情報の他の部分には、マックス、グレーターとの判断の青い部分は、確かに色の更新はないであろう、失敗しますされています。

実際には、増加にプレーヤーをレンダリングする際に、実際には、楽しい効果は、プレイヤーは光の一部を遮断し、他のシーンオブジェクトによって隠されたとき、多くの場合、表示されたゲームは、X-の効果を示すことになるが、実現することがZTESTグレーターをテストすることができますがありAパス、パス、通常のデフォルトのレンダリング、大深度テストにパスの使用が増加し、そのプレイヤーが遮断部の他の部分によって隠されているときのストロークをレンダリング、他の部分の影響で、表示されることあなたはまだ、元のパスを使用することができます。
公開された62元の記事 ウォンの賞賛5 ビュー3896

おすすめ

転載: blog.csdn.net/qq_42194657/article/details/104235289