ld_raw (sm5 - asm)

從原始緩衝區隨機讀取 1-4 32 位元件。

ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle]
項目 描述
dest
[in]作業結果的位址。
srcByteOffset
[in]指定要從中讀取的位移。
src0
[in]要讀取的元件。

備註

src0 必須是:

  • 任何著色器階段:SRV (t#) ld st
  • 計算著色器或圖元著色器:UAV (u#)
  • 計算著色器:執行緒群組共用記憶體 (g#)

srcByteOffset 會根據其他參數的 swizzle 和 mask,指定 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。

在 g# 上定址超出範圍 (該特定 g# 的界限,相對於任何指定 32 位元件的所有共用記憶體) ,都會傳回未定義的結果。

cs_4_0和cs_4_1支援 UAV 和 SRV 的此指示。

本指示適用于下列著色器階段:

頂點 船體 網域 幾何形狀 像素 計算
X X X X X X

由於 Direct3D 11.1 的所有著色器階段都提供 UAV,因此本指示適用于 Direct3D 11.1 執行時間的 UAV 的所有著色器階段,從 Windows 8 開始提供。

頂點 船體 網域 幾何形狀 像素 計算
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)