METAL2新機能:ラスター次群(ROG、ラスター順序グループ)

記事の背景テーマ:[金属分析エンジン(2):伝統的な遅延レンダリングとTBDR]

1.ラスター注文グループの役割

ROGは、それをしているのですか?公式の説明:平行配列フラグメントシェーダスレッドの正確な制御は、同一の画素にアクセスします。

閉塞体フラグメントシェーダオブジェクトが同時に競争、誤った結果を導く、その結果、ピクセル座標と同じデータにアクセスすることができる前と後に、我々は、シーンオブジェクト、一部重なりをレンダリングするときに、人気のある点。ROGは、競争を防ぐために、ピクセルの順序へのアクセスを同期するために使用されています。

このような説明が十分に直感的ではないかもしれないが、関係者はこの観点の例を示します。

このような透明オブジェクトのプロット開発者コードがコールバックであるバック、青色三角形ドローコールから順に描かれている場合は、次のシナリオを検討して、シーン内のレンズは2つの重複三角形を有します緑の三角形の描画呼び出しの前に呼び出す前に、金属が呼び出し命令を描画実行するための我々のコードの順になり、このビューは、これら二つのドローコールは、シリアル実行が続いているようだが、実際にはない場合、GPU上でのコンピューティングCPUが発行した命令が第1の青色の三角形が描かれているが、GPU金属青緑色の三角形フラグメントシェーダは最初の三角形よりも実行することを保証しないが、プロセスは、高度に平行で、金属は、混合の時間を保証による描画をブレンドすることです以下に示すように、呼び出しシーケンスを実行します。

シリアルことを保証するために、重複していないが、しかし、ブレンドは、シリアル読み出しおよび書き込み動作を保証するものではありません前に、画素に書き込まれたブレンドの青い三角フラグメントシェーダの結果ながら、緑色の三角形がフラグメントシェーダを読んでいるかもしれない問題は、ブレンドされるように以下に示すように、競争の結果、ピクセルの色を取ります。

ROGは、上記のデータを読み書きするために、この紛争を解決することです。

2.ラスター注文グループ解決の競合リテラシー

競合を解決するROGの方法は、リードスレッド同期、ピクセル(あたりサンプル着色パターン場合)スレッドのスレッドに対応する点をサンプリングまたは有する即ち、同期です。実現に限り、開発者ROG属性属性フラグデータメモリは、その複数のスレッドが現在のスレッドの同じピクセルデータにアクセスすると、データアクセスの再書き込みが終了するのを待ちます。スレッド1が終了した後、スレッド2待ち時間が書き込みデータがデータを読み取る再開するように、次の図に示すROG 2つのスレッドを同期します:

ラスター注文グループは、あなたが読んで紛争や書き込みを解決するための同期スレッドに使用されるのですか?だけでなく、METAL2 A11でラスター注文グループは、より強力な、より汎用性の高い達成するための新機能として展開、ということ。

3. METAL2 A11の新機能:複数のラスター注文のグループ

METAL2 A11は、ラスター順序グループ​​は、シングルチャネルの同期imageblockに加えて、拡張されているとのThreadGroupメモリデータを達成することができ、また複数の定義ROGの使用をサポートするために始めた、開発者はさらに待機中のスレッドを減らし、よりきめ細かい制御スレッドを同期することができます始めました時間。

:複数のラスター注文のグループの典型的な例は、レンダリングが別の記事のTBDRに記載されている最適化シングルパス遅延レンダリング

紙は、従来のデュアルパスレンダリングの遅延は、最初のG-バッファパスレンダリングシステムメモリに保存し、その後計算を点灯中に第二のパスG-バッファシステムメモリ遅延を読み取る装置しました。タイルメモリはA11はそれによって減少させる、直接計算はパスで遅延レンダリングを完了した点灯遅延進み、GPUのimageblockメモリに記憶され続けるG-バッファがタイルサイズの大きさに分割されているように、タイルベースのシェーディングを達成し、次いでありますデータ帯域幅。

ラスター注文グループは、これは私たちのシングルパスは、それのパフォーマンスを最適化するために、レンダリング延期方法ですか?

我々は、メインアドレス効率の問題は次のようにマルチスレッド一般的なGPUを行うプロセスは、マルチソース点灯遅延が計算される複数の光源のシーンのレンダリングを、レンダリング遅延ことを知っています。

ソースは、G-バッファに対して計算を読み取り、エンドGバッファを書き込み(点灯を開始するために第1の光源計算を待たなければならない、現在のピクセルの照明計算のためのG-バッファを読みたい第二ケース)一緒に。

今、私たちは、複数のラスター順序グループ​​を定義することによって、この問題を最適化することができます。開発者は、第一光照明基、アルベドのGバッファ、通常、深さ及び放出ように、例えば、計算結果ができるリソースをマッピングすることができ、G-バッファの照明計算は、異なるラスタ順序グループ​​に分離されています第二セットにので、これらは、2つの別個のセットA11とすることができる、第二の光源は、第2のグループのG-バッファデータを読み出す準備ができていることときにのみ第1の書き込み光照明グループの演算結果、計算を点灯しています同期は待つことができます。次のように最適化プロセスの後です。

シングル実現デモパスの描画延期公式TBDRは、パフォーマンスの最適化のための複数のラスター順序グループ​​の使用で達成されています。
公開された109元の記事 ウォンの賞賛403 ビュー880 000 +

おすすめ

転載: blog.csdn.net/cordova/article/details/103031716