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 的此指示。