次の方法で共有


ラスタライザー順序指定ビュー

ラスタライザー順序指定ビュー (ROV) により、ピクセル シェーダー コードで、順序指定されていないアクセス ビュー (UAV) のバインディングに対して、UAV のグラフィックス パイプライン結果の順序に関する通常の要件を変更する宣言をマークできます。 これにより、順序非依存の透明性 (OIT) アルゴリズムを動作させることができ、それにより、複数の透明オブジェクトがビュー内で互いに並んでいる場合にレンダリング結果を向上させることができます。

概要

標準グラフィックス パイプラインでは、透明性を含む複数のテクスチャを正しく合成するのに問題がある可能性があります。 ワイヤー フェンス、煙、火、植物、色付きガラスなどのオブジェクトでは、目的の効果を得るために透明性が使用されます。 透明性を含む複数のテクスチャが互いに並んでいると、問題が発生します (たとえば、植物を含むガラスの建物の前のフェンスの前の煙)。 ラスタライザー順序指定ビュー (ROV) を使用すると、基になる OIT アルゴリズムにより、ハードウェアの機能を使用して透明性の順序を正しく解決しようと試みることができます。 透明性はピクセル シェーダーによって処理されます。

ラスタライザー順序指定ビュー (ROV) により、ピクセル シェーダー コードで、UAV のバインディングに対して、UAV のグラフィックス パイプライン結果の順序に関する通常の要件を変更する宣言をマークできます。

ROV により、重複するピクセル シェーダー呼び出しのペアへの UAV アクセスの順序が保証されます。 この場合、"重複する" とは、呼び出しが同じ描画呼び出しによって生成され、ピクセル周波数実行モードの場合に同じピクセル座標を共有し、サンプル周波数モードの場合に同じピクセルと同じ座標を共有することを意味します。

ピクセル シェーダー呼び出しの重複する ROV アクセスが実行される順序は、ジオメトリが送信される順序と同じです。 つまり、重複するピクセル シェーダー呼び出しでは、ピクセル シェーダー呼び出しによって実行される ROV 書き込みを、後続の呼び出しで読み取ることができるようにする必要があり、また前の呼び出しによる読み取りに影響が及ばないようにする必要があります。 ピクセル シェーダー呼び出しによって実行される ROV 読み取りには、前の呼び出しによる書き込みを反映させる必要があり、また後続の呼び出しによる書き込みは反映させないようにする必要があります。 これは UAV にとって重要です。固定順序のグラフィックス パイプライン結果によって通常設定される出力不変の保証から明示的に外されるためです。

実装の詳細

ラスタライザー順序指定ビュー (ROV) は、次の新しい上位レベルシェーダー言語 (HLSL) オブジェクトを使用して宣言し、ピクセル シェーダーでのみ使用できます。

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

これらのオブジェクトは、他の UAV オブジェクト (RWBuffer など) と同じ方法で使用します。

API の概要

ROV は、各種の動作セマンティクスを UAV に適用する HLSL のみの構築物です。 UAV に関連するすべての API は、ROV にも関連します。 次のメソッド、構造体、およびヘルパー クラスはラスタライザーを参照するので注意してください。