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
シェーダー モデル 4
シェーダー モデル 3 (DirectX HLSL)
シェーダー モデル 2 (DirectX HLSL)
シェーダー モデル 1 (DirectX HLSL)

cs_4_0とcs_4_1は、UAV と SRV に対するこの命令をサポートします。

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