ld_structured (sm5 - asm)
構造化バッファーからの 1 ~ 4 32 ビット コンポーネントのランダム アクセス読み取り。
ld_structured dest[.mask], srcAddress[.select_component], srcByteOffset[.select_component], src0[.swizzle] |
---|
Item | 説明 |
---|---|
Dest |
[入力]操作の結果のアドレス。 |
srcAddress |
[入力]読み取る構造体のインデックスを指定します。 |
srcByteOffset |
[入力]読み取りを開始する構造体のバイト オフセットを指定します。 |
src0 |
読み取り元のバッファー。 このパラメーターは、SRV (t#)、UAV (u#) である必要があります。 コンピューティング シェーダーでは、スレッド グループ共有メモリ (g#) にすることもできます。 |
注釈
構造体から読み取られたデータは、オフセット、アドレス、バッファーの内容へのポインター、ソースのストライド、および直線的に格納されたデータがある擬似コードと同じです。
BYTE *BufferContents; // from SRV or UAV
UINT BufferStride; // from base resource
UINT srcAddress, srcByteOffset; // from source registers
BYTE *ReadLocation; // value to calculate
ReadLocation = BufferContents
+ BufferStride * srcAddress
+ srcByteOffset;
UINT32 Temp[4]; // used to make code shorter
// apply the source resource swizzle on source data
Temp = read_and_swizzle(ReadLocation, srcSwizzle);
// write the components to the output based on mask
ApplyWriteMask(dstRegister, dstWriteMask, Temp);
この擬似コードは、操作がどのように機能するかを示していますが、実際のデータを直線的に格納する必要はありません。 データが直線的に格納されていない場合、命令の実際の操作は、上記の操作の動作と一致する必要があります。
特定の 32 ビット コンポーネントの u#/t# での範囲外アドレス指定では、 srcByteOffset と swizzle が you#/t# への境界外アクセスの原因である場合を除き、そのコンポーネントに対して 0 が返されます。すべてのコンポーネントの戻り値は未定義です。
指定された 32 ビット コンポーネントに対して、g# でアドレス指定された範囲外 (すべての共有メモリではなく、その特定の g# の境界) は未定義の結果を返します。
srcByteOffset は、一般的にリテラルであるため 、srcAddress とは別の引数です。 このパラメーターの分離は、構造化メモリ上のアトミックに対しては行われていません。
cs_4_0とcs_4_1は、UAV、SRV、TGSM のこの命令をサポートします。
この命令は、次のシェーダー ステージに適用されます。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
UAV は Direct3D 11.1 のすべてのシェーダー ステージで使用できるため、この命令は Direct3D 11.1 ランタイムのすべてのシェーダー ステージに適用されます。これは、Windows 8以降で使用できます。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小シェーダー モデル
この命令は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | X |
シェーダー モデル 4 | X |
シェーダー モデル 3 (DirectX HLSL) | X |
シェーダー モデル 2 (DirectX HLSL) | X |
シェーダー モデル 1 (DirectX HLSL) | X |
cs_4_0とcs_4_1は、UAV、SRV、TGSM のこの命令をサポートします。