共用方式為


ld2dms (sm4.1 - asm)

從二維多樣本紋理中讀取個別樣本。

ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex
項目 說明
dest
[in]作業結果的位址。
srcAddress
[in]執行樣本所需的紋理座標。
srcResource
[in]必須宣告要從中擷取哪一個紋理或緩衝區的紋理緩存器 (t#)
sampleIndex
[in]識別要從 srcResource 讀取的範例(純量作數)。

備註

此指令是 範例 指令的簡化替代方案。 它會使用提供的整數 srcAddresssampleIndex,從指定的紋理擷取數據,而不需要篩選任何篩選(例如點取樣)。

srcAddress 提供一組紋理座標,以不帶正負號整數的形式執行樣本。 如果 srcAddress 超出範圍[0...(#texels 維度 -1)], ld2dms 一律會傳回資源格式的所有元件中的0,而遺漏元件的預設值為0,0,0,0,1.0f/0x00000001。

sampleIndex 不一定是常值。 多重樣本計數不需要在紋理資源上指定,而且它適用於深度或樣板檢視。

希望對超出範圍位址行為進行更彈性控制的應用程式應該改用範例指令,因為它接受定義為 取樣 器狀態的位址包裝/鏡像/夾板/框線行為。

srcAddress.b (post-swizzle) 會忽略 Texture2Ds。 如果值超出可用陣列索引的範圍 [0...(array size-1)],然後 ld2dms 一律會以資源格式傳回 0,而遺漏元件的預設值 (0,0,0,0,1.0f/0x00000001)。

若為 Texture2D 陣列, srcAddress.b (post-swizzle) 會提供數位索引。 否則,它的行為與 Texture2D 相同。

srcAddress.a (post-swizzle) 一律會被忽略。 HLSL 編譯程序永遠不會輸出任何內容。

srcResource 是紋理緩存器 (t#) ,必須已宣告為 (22.3.11),可識別要從中擷取的紋理。

從沒有任何系結的 t# 擷取會針對所有元件傳回 0。

位址位移

選擇性 [_aoffimmi(u,v,w)] 後綴(位址位移為即時整數)表示 ld2dms 的紋理座標要由一組提供的直接紋素空間整數常數位移。 常值是一組 4 位 2 的補碼,具有整數範圍 [-8,7]。

位移會新增至材質空間中的紋理座標。

位址位移不會沿著 Texture1D/2D 陣列的陣列軸套用。

紋理 1D 會忽略 _aoffimmi v,w 元件。

Texture2D 會忽略 _aoffimmi w 元件。

由於 ld2dms 的紋理座標是無符號整數,如果位移導致地址低於零,則會包裝成大型位址,並導致超出界限的存取,例如 ld 會傳回資源格式中所有元件中的 0,以及遺漏元件的預設值 (0,0,0,0,0,1.0f/0x00000001)。

範例編號

ld2dms 可用於任何資源。 ld2dms 的運作方式與 ld 相同,但 2D 多重取樣資源除外,方法是使用額外的 (0 型) sampleIndex 作數來識別要從資源讀取的樣本。

指定超過資源中樣本數目的 sampleIndex 的結果未定義,但無法傳回裝置內容位址空間以外的數據。

傳回型別控件

ld2dms 傳回至目的地緩存器的數據格式,與範例指令所述的方式相同。 它是以系結至 srcResource 參數 (t#) 的格式為基礎。

如同 範例 指令, ld2dms 的傳回值是 4 向量,具有格式特定元件的格式預設值,但格式不存在。 srcResource 上的 swizzle 會決定如何從紋理載傳回的 4 元件結果,之後 dest 上的 .mask 會決定 dest 中的哪些元件更新。

ld2dms 將 32 位浮點數讀取到 32 位緩存器時,位會不受影響;也就是說,反正規值仍然是反正規值。 這與 範例 指令不同。

其他詳細數據

由於沒有與此指令相關聯的篩選,因此LOD偏差等概念不適用。 因此沒有 取樣器 s# 參數。

限制

  • srcResource 必須是 t# 快取器,而不是 TextureCube、Texture1D 或 Texture1DArray。 srcResource 不能是 ConstantBuffer,無法繫結至 t# 快取器。
  • 不允許 srcResource 上的相對尋址。
  • srcAddresssampleIndex 必須是 temp (r#/x#), 常數 (cb#) 或 input (v#) 快存器。
  • dest 必須是 temp (r#/x#) 或輸出 (o*#) 快取器。

這個指示適用於下列著色器階段:

頂點著色器 幾何著色器 圖元著色器
x x x

最小著色器模型

以下著色器模型支援此函數。

著色器模型 支持
著色器模型 5 是的
著色器模型 4.1 是的
著色器模型 4
著色器模型 3 (DirectX HLSL)
著色器模型 2 (DirectX HLSL)
著色器模型 1 (DirectX HLSL)

著色器模型 4 元件 (DirectX HLSL)