次の方法で共有


dcl_uav_structured (sm5 - asm)

シェーダーで使用する順序なしのアクセス ビュー (UAV) を宣言します。

dcl_uav_structured[_glc] dstUAV, structByteStride
Item 説明
dstUAV
[入力]UAV。
structByteStride
[入力]構造体のサイズ (バイト単位)。

注釈

dstUAV は、API で UAV スロット # にバインドする必要がある、指定されたストライドを持つ構造化バッファーの UnorderedAccessView への参照として宣言された u# レジスタです。

構造体の内容には型がありません。メモリに対して実行される操作では、データが型を持つものとして暗黙的に解釈される場合があります。

structByteStride は、宣言されるバッファー内の構造体のサイズ (バイト単位) です。 これは、0 より大きい値である必要があります。 structByteStride は uint 型であり、4 の倍数である必要があります。

構造化 u# を参照する命令は 2D アドレスを受け取ります。ここで、最初のコンポーネントは [構造体] を選択し、2 番目のコンポーネントは [struct 内のオフセット (アラインされたバイト数)] を選択します。

_glc フラグは、"グローバルに一貫性のある" を意味します。 _glcが存在しないということは、UAV がコンピューティング シェーダーで "グループコヒーレント" としてのみ宣言されているか、単一ピクセル シェーダー呼び出しで "ローカルに一貫性がある" として宣言されていることを意味します。

_opc フラグは、順序保持カウンターです。 これは、UAV がスロット # (u#) にバインドされている場合は、COUNTER フラグを使用して作成されている必要があることを示します。 つまり、シェーダー のimm_atomic_alloc 操作または imm_atomic_consume 操作は、UAV 内の場所への永続的な参照としてシェーダーで使用できる値を持つカウンターを操作します。 シェーダーが終了した後は、データの順序を変更できません。

_opc フラグがないということは、シェーダーがimm_atomic_alloc または imm_atomic_consume 命令を使用し、UAV がスロット # (u) にバインドされている場合は、APPEND フラグを使用して作成されている必要があります。これにより、シェーダー呼び出し後に順序が保持されることを保証しないカウンターが提供されます。

_opc フラグが存在せず、シェーダーに imm_atomic_alloc または imm_atomic_consume 命令が含まれていない場合、スロット # (u) にバインドされた UAV が COUNTER フラグ (このシェーダーでは使用されません)、フラグなし (カウンターなし) で作成できますが、APPEND フラグは使用されません。

Note

cs_4_0とcs_4_1では dcl_tgsm_structuredがサポートされますが、 dcl_tgsm_rawはサポートされていません。

この命令は、次のシェーダー ステージに適用されます。

Vertex Hull Domain ジオメトリ ピクセル Compute
X X

UAV は Direct3D 11.1 のすべてのシェーダー ステージで使用できるため、この命令は Direct3D 11.1 ランタイムのすべてのシェーダー ステージに適用されます。これは、Windows 8以降で使用できます。

Vertex Hull Domain ジオメトリ ピクセル Compute
X X X X X X

最小シェーダー モデル

この命令は、次のシェーダー モデルでサポートされています。

シェーダー モデル サポートされています
シェーダー モデル 5 はい
シェーダー モデル 4.1 no
シェーダー モデル 4 no
シェーダー モデル 3 (DirectX HLSL) no
シェーダー モデル 2 (DirectX HLSL) no
シェーダー モデル 1 (DirectX HLSL) no

Note

この命令は、cs_4_0とcs_4_1でサポートされています。

シェーダー モデル 5 アセンブリ (DirectX HLSL)