ld2dms (sm4.1 - asm)
從 2D 多樣本紋理中讀取個別樣本。
ld2dms[_aoffimmi (u,v) ] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
項目 | 描述 |
---|---|
dest |
[in]作業結果的位址。 |
srcAddress |
[in]執行樣本所需的紋理座標。 |
srcResource |
[in]紋理暫存器 (t#) ,其必須已宣告識別要從中擷取的紋理或緩衝區 |
sampleIndex |
[in]將範例識別為從 srcResource (純量運算元) 讀取。 |
備註
此指示是 範例 指令的簡化替代方案。 它會從指定的紋理擷取資料,而不需篩選 (例如點取樣) 使用提供的整數 srcAddress 和 sampleIndex。
srcAddress 提供以不帶正負號整數形式執行樣本所需的紋理座標集。 如果 srcAddress 超出維度 -1) ] 的範圍[0... (#texels], 則 ld2dms 一律會傳回資源格式的所有元件中的 0,預設值 (為 0,0,0,0,1.0f/0x00000001) 。
sampleIndex 不一定是常值。 多重樣本計數不需要在紋理資源上指定,而且它適用于深度或樣板檢視。
希望對超出範圍位址行為進行更彈性控制的應用程式應該改用範例指令,因為它會接受定義為 取樣 器狀態的位址包裝/鏡像/限制/框線行為。
texture2Ds 會忽略srcAddress.b (swizzle) 後。 如果值超出可用陣列索引的範圍 [0... (陣列大小-1) ], 則 ld2dms 一律會傳回資源格式的所有元件中的 0,預設值 (為 0,0,0,0,1.0f/0x00000001) 。
針對 Texture2D 陣列, srcAddress.b (post-swizzle) 提供陣列索引。 Oherwise 其行為與 Texture2D 相同。
srcAddress.a (後 swizzle) 一律會被忽略。 HLSL 編譯器永遠不會輸出任何內容。
srcResource 是 t# (t#) 的紋理暫存器,必須已宣告 (22.3.11) ,以識別要從中擷取的紋理。
從沒有任何系結的 t# 擷取會傳回所有元件的 0。
位址位移
選擇性 [_aoffimmi (u,v,w) ] 尾碼 (位址位移,以立即整數) 表示 ld2dms 的紋理座標會由一組提供的立即材質空間整數常數值位移。 常值是一組 4 位 2 的補數,具有整數範圍 [-8,7]。
位移會新增至材質空間中的紋理座標。
位址位移不會沿著 Texture1D/2D 陣列的陣列軸套用。
Texture1D 會忽略 _aoffimmi v,w 元件。
Texture2D 會忽略 _aoffimmi w 元件。
由於 ld2dms 的紋理座標是不帶正負號的整數,因此如果位移導致位址低於零,則會換行到大型位址,並導致超出界限存取,例如 ld 傳回資源格式的所有元件中的 0,而預設值 (0,0,0,1.0f/0x00000001) 遺漏元件。
範例編號
ld2dms 可用於任何資源。 ld2dms 的運作方式與 ld 相同,但 2D multsample 資源除外,方法是使用額外的 (0 型) sampleIndex 運算元來識別要從資源讀取的樣本。
指定超過資源中樣本數目的 sampleIndex 結果未定義,但無法傳回裝置內容位址空間以外的資料。
傳回類型控制項
ld2dms傳回至目的地暫存器的資料格式會以與範例指令所述的相同方式來決定。 它是以系結至 srcResource 參數的格式為基礎, (t#) 。
如同 範例 指令, ld2dms 的傳回值為 4 向量,具有格式特定元件的格式預設值。 srcResource上的 swizzle 會決定如何從紋理載入傳回 4 元件結果,之後dest上的 .mask 會決定dest中的哪些元件會更新。
當 ld2dms 將 32 位浮點數讀取到 32 位暫存器時,不會變更位;也就是說,反正規值會維持反正規。 這與 範例 指令不同。
其他詳細資料
由於沒有與此指令相關聯的篩選,因此不會套用 LOD 偏差等概念。 因此沒有 取樣器 s# 參數。
Restrictions
- srcResource 必須是 t# 暫存器,而不是 TextureCube、Texture1D 或 Texture1DArray。 srcResource 不能是 ConstantBuffer,無法系結至 t# 暫存器。
- 不允許 在 srcResource 上進行相對定址。
- srcAddress 和 sampleIndex 必須是 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) | 否 |