次の方法で共有


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

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

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