ユニティシェーダ早期-Z技術

早期-Z技術

伝統的なレンダリングパイプライン、ZTESTは、実際ブレンディング段階で綿密なテストのため、この時点で、ピクセルシェーダのすべてのオブジェクトは、唯一の正しい咬合結果に到着し、履行がない、再びそれを計算します無用の計算の多くの原因となります各ピクセルは、計算の重複の多くは確かにあるからです。したがって現代のGPU技術早期Zの使用、ひいてはフラグメント頂点ステージとの間の位相深さテストが失敗した場合(ラスタライズした後、前断片)デプステストのために、フラグメントの位相を算出する必要はなく、性能上が大幅に改善されます。しかし、最終的ZTESTはまだ閉塞の関係の正しい最終結果ていることを確認する必要がありました。
:Z-カルの前で主に以下のように、確認するために、主にZ-チェックした後、切削を最適化する目的有する
ここに画像を挿入説明
単に、主にZ-プレ通過ディスプレイによりZ実装における初期のすべての不透明なオブジェクト(透明な仕事は、それ自体の深さを書き込まないない)のために、最初のレンダリングのための超簡単なシェーダと、シェーダは、カラーバッファ、書き込み専用デプスバッファに書き込まれ、第2のパスが閉じられていません通常のシェーダでレンダリング深書かれた、オープン・デプステスト、。実際には、この技術は、我々が原因の深書き込みの閉鎖に、透明なオブジェクトをレンダリングする際に、学ぶことができ、そして時には一部を遮断する他の透明及び不透明な領域があるだろうが、我々は実際にはブロックされたく、それらがブロックされないようにします半透性オブジェクトは、その後、我々は2つのレンダリングパス、第二半通常のレンダリングパスのカラーマスク書き込み、書き込みのみ奥行き、ライトオフの深さを用いて、第1パスマスク色を使用することができます。早期-Z技術は、明示的な初期-ZカリングとPPTのATIの論文のアプリケーションを参照することができ、同様にインテルの記事

ユニティレンダリング順序の概要

、および早期-Z技術により、我々は、オブジェクトに近づき、その後、遠くのオブジェクト(のみ不透明なオブジェクト)を描くことができ、我々は最初のオブジェクトの裏を描く場合、オブジェクトの前に描き、それを超える原因と描画されますそうプリエンプションピットの前にあるオブジェクトという、オブジェクトの前にある最初のレンダリングによって、このように、あなたはそれによって、反復フラグメントは、最適化の目的を達成するために計算された削減、テストが失敗したオブジェクトの深さの後ろに取得することができます。Unityがデフォルトでは、最も近い表面の距離に応じて描画されるべきである、我々は表示ユニティ公式ドキュメントを見ることができます:
ここに画像を挿入説明
ここに画像を挿入説明
プロセスの文書化の観点から付与され、深さテストの段階では、頂点とフラグメントのステージとの間で発生しますそれは、前述の早期-Zの最適化です。
ユニティ簡単にのレンダリング順序要約:最初にレンダリングされた不透明なオブジェクトは、順序が手前から奥にあり、その後、透明なオブジェクトをレンダリングする、順序が奥から手前にあります。

モバイルプラットフォームでの大理由アルファテスト(破棄)消費

从本人刚刚开始接触渲染,就开始听说移动平台Alpha Test比较费,当时比较纳闷,直接discard了为什么会费呢,应该更省才对啊?这个问题困扰了我好久,今天来刨根问底一下。还是跟我们上面讲到的Early-Z优化。正常情况下,比如我们渲染一个面片,不管是否是开启深度写入或者深度测试,这个面片的光栅化之后对应的像素的深度值都可以在Early-Z(Z-Cull)的阶段判断出来了;而如果开启了Alpha Test(Discard)的时候,discard这个操作是在fragment阶段进行的,也就是说这个面片光栅化之后对应的像素是否可见,是在fragment阶段之后才知道的,最终需要靠Z-Check进行判断这个像素点最终的颜色。其实想象一下也能够知道,如果我们开了Alpha Test并且还用Early-Z的话,一块本来应该被剃掉的地方,就仍然写进了深度缓存,这样就会造成其他部分被一个完全没东西的地方遮挡,最终的渲染效果肯定就不对了。所以,如果我们开启了Alpha Test,就不会进行Early-Z,Z Test推迟到fragment之后进行,那么这个物体对应的shader就会完全执行vertex shader和fragment shader,造成over draw。有一种方式是使用Alpha Blend代替Alpha Test,虽然也很费,但是至少Alpha Blend虽然不写深度,但是深度测试是可以提前进行的,因为不会在fragment阶段再决定是否可见,因为都是可见的,只是透明度比较低罢了。不过这样只是权宜之计,Alpha Blend并不能完全代替Alpha Test。

关于Alpha Test对于Power VR架构的GPU性能的影响,简单引用一下官方的链接以及一篇讨论帖

ここに画像を挿入説明

公開された62元の記事 ウォンの賞賛5 ビュー3888

おすすめ

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