ld_raw (sm5 - asm)
生バッファーからの 1 ~ 4 32 ビット コンポーネントのランダム アクセス読み取り。
ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle] |
---|
Item | 説明 |
---|---|
Dest |
[入力]操作の結果のアドレス。 |
srcByteOffset |
[入力]読み取るオフセットを指定します。 |
src0 |
[入力]読み取るコンポーネント。 |
注釈
src0 は次の値である必要があります。
- 任意のシェーダー ステージ: SRV (t#)ld st
- コンピューティング シェーダーまたはピクセル シェーダー: UAV (u#)
- コンピューティング シェーダー: スレッド グループ共有メモリ (g#)
srcByteOffset は、他のパラメーターのスウィズルとマスクに応じて、データを読み取ることができる 4 つの連続した 32 ビット値のウィンドウに対して、メモリ内の基本 32 ビット値を指定します。
生バッファーから読み取られたデータは、オフセット、アドレス、バッファーの内容へのポインター、ソースのストライド、および線形に格納されたデータがある擬似コードと同じです。
BYTE *BufferContents; // from src0
UINT srcByteOffset; // from srcByteOffset
BYTE *ReadLocation; // value to calculate
ReadLocation = BufferContents
+ 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# での範囲外アドレス指定では、そのコンポーネントに対して 0 が返されます。
指定された 32 ビット コンポーネントに対して、g# でアドレス指定された範囲外 (すべての共有メモリではなく、その特定の g# の境界) は未定義の結果を返します。
cs_4_0とcs_4_1は、UAV と SRV に対するこの命令をサポートします。
この命令は、次のシェーダー ステージに適用されます。
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 に対するこの命令をサポートします。