ラスタライザーの順序ビュー
ラスタライザー順序指定ビュー (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 にも関連します。 次のメソッド、構造体、およびヘルパー クラスはラスタライザーを参照するので注意してください。
- D3D11_RASTERIZER_DESC2 : ラスタライザーの説明を作成するためのCD3D12_RASTERIZER_DESC2 ヘルパー クラスを示す、ラスタライザーの説明を保持する構造体。
-
D3D11_FEATURE_DATA_D3D11_OPTIONS2 : ブール値
ROVsSupported
を保持する 構造体。サポートを示します。 - ID3D11Device::CheckFeatureSupport : サポートされている機能にアクセスするためのメソッド。
関連トピック