ld (sm4 - asm)
使用提供的整數位址,從指定的緩衝區或紋理擷取資料,而不需篩選任何篩選(例如點取樣)。 來源資料可能來自 TextureCube 以外的任何資源類型。
ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle] |
---|
項目 | 說明 |
---|---|
dest |
[in]作業結果的位址。 |
srcAddress |
[in]執行樣本所需的紋理座標。 |
srcResource |
[in]必須宣告要從中擷取哪一個紋理或緩衝區的紋理暫存器 (t#)。 |
備註
此指令是範例 指令的 簡化替代方案。 不同于 sample,ld 也能夠從緩衝區擷取資料。 ld 也可以從多重樣本資源擷取 (僅限圖元著色器上)。
srcAddress 提供一組紋理座標,以不帶正負號整數的形式執行樣本。 如果 srcAddress 超出範圍[0...(在維度 -1)中 #texels],則會叫用超出界限的行為,其中 ld 會以 srcResource 格式 的所有非遺漏元件傳回 0,以及遺漏元件的預設值。 希望對超出範圍位址行為進行更彈性控制的應用程式應該改用 範例指令,因為它接受定義為取樣 器狀態的位址包裝/鏡像/夾板/框線行為。
srcAddress.a (POS-swizzle) 一律提供不帶正負號的整數 mipmap 層級。 如果值超出範圍 [0...(resource-1)中的 num 錯誤,然後叫用超出範圍的行為。 如果資源是緩衝區,不能有任何 mipmap,則會 忽略 srcAddress.a
srcAddress.gb (POS-swizzle) 會忽略緩衝區和 texture1D (非陣列)。 srcAddress.b (POS-swizzle) 會忽略 texture1D 陣列和 texture2D。
對於 texture1D 陣列, srcAddress.g (POS-swizzle) 會提供陣列索引作為不帶正負號的整數。 如果值超出可用陣列索引的範圍 [0...(陣列 size-1)],然後叫用超出界限的行為。
對於 texture2D 陣列, srcAddress.b (POS-swizzle) 會提供陣列索引,否則具有與 texture1D 相同的語意。
從 沒有任何系結的 t# 擷取會針對所有元件傳回 0。
位址位移
選擇性 [_aoffimmi(u,v,w)] 尾碼(位址位移為即時整數)表示 ld 的紋理座標 要由一組提供的即時紋素空間整數常數值位移。 常值是一組 4 位 2 的補數,具有整數範圍 [-8,7]。 這個修飾詞只針對 texture1D/2D/3D 定義,包括陣列,而不是用於緩衝區。
位移會新增至紋理座標,在紋素空間中,相對於 ld 存取的 Miplevel。
位址位移不會沿著 texture1D/2D 陣列的陣列軸套用。
紋理 1D 會忽略 _aoffimmi v、w 元件。
紋理 2D 會忽略 _aoffimmi w 元件。
由於 ld 的 紋理座標是不帶正負號的整數,如果位移導致位址低於零,它會包裝成大型位址,並導致界限外存取。
傳回型別控制項
ld 傳回 至目的地暫存器的資料格式會以與範例 指令所述的 相同方式來決定;其以系結至 srcResource 參數的格式為基礎( t# )。
如同範例 指令,ld 的傳回值 是 4 向量,其格式為格式中不存在之元件的格式特定預設值。 srcResource 上的 swizzle 會決定如何從紋理載入傳回的 4 元件結果,之後 dest 上的 .mask 會決定 dest 中的 哪些元件 更新。
當 ld 將 32 位浮點數讀入 32 位暫存器時,位不會受到觸控;也就是說,反正規值會保持反正規值。 這與範例 指令不同 。
其他詳細資料
由於沒有與 ld 指令相關聯的篩選,因此 LOD 偏差等概念不適用於 ld 。 因此沒有取樣器 s# 參數。
限制
- srcResource 必須是 t# 暫存器,而不是 TextureCube。 srcResource 不能是常數緩衝區,無法系結至 t# 暫存器。
- 不允許 srcResource 上的 相對定址。
- srcAddress 必須是 temp (r#/x#), 常數 (cb#) 或輸入 (v#) 暫存器。
- dest 必須是 temp (r#/x#) 或輸出 (o*#) 暫存器。
此指示適用于下列著色器階段:
頂點著色器 | 幾何著色器 | 像素著色器 |
---|---|---|
x | x | x |
最小著色器模型
下列著色器模型中支援此函式。
著色器模型 | 支援 |
---|---|
著色器模型 5 | 是 |
著色器模型 4.1 | 是 |
著色器模型 4 | 是 |
著色器模型 3 (DirectX HLSL) | 否 |
著色器模型 2 (DirectX HLSL) | 否 |
著色器模型 1 (DirectX HLSL) | 否 |