Share via


dmovc (sm5 - asm)

以元件為基礎的條件式移動。

dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle],
項目 描述
dest
[in]移動目的地。
如果src0,則dest = src1 else dest = src2
src0
[in]要測試條件的元件。
src1
[in]如果條件為 true,要移動的元件。
src2
[in]如果條件為 false,則為要移動的元件。

備註

下列範例示範如何使用這個指示。

                if(the dest mask contains .xy)
                {
                    if(the first 32-bit component of src0, post-swizzle, 
                       has any bit set)
                    {
                        copy the first double from src1 (post swizzle)
                        into dest.xy
                    }
                    else
                    {
                        copy the first double from src2 (post swizzle)
                        into dest.xy
                    }
                }
                if(the dest mask contains .zw)
                {
                    if(the second 32-bit component of src0, post-swizzle, 
                       has any bit set)
                    {
                        copy the second double from src1 (post swizzle)
                        into dest.zw
                    }
                    else
                    {
                        copy the second double from src2 (post swizzle)
                        into dest.zw
                    }
                }

dest 的有效遮罩為 .xy、.zw、.xyzw。

src0的有效 Swizzles 是任何專案。 前兩個元件會在 swizzle 後用來縮排兩個 32 位條件值。

src1src2包含雙精度浮點的有效 swizzles 為 .xyzw、.xyxy、.zwxy、.zwzw。 為 .xy、.zw 和 .xyzw。

下列 src 對應是後置 swizzle:

  • dest 是跨 (x 32LSB、y 32MSB) 和 (z 32LSB、w 32MSB) 的雙 vec2。
  • src0 是跨 x 和 y (zw 忽略的 32 位/元件 vec2) 。
  • src1 是跨 (x 32LSB、y 32MSB) 和 (z 32LSB、w 32MSB) 的雙 vec2。
  • src2 是跨 (x 32LSB、y 32MSB) 和 (z 32LSB 的雙 vec2,w 32MSB) 。

src1src2上的修飾詞,除了 swizzle 之外,假設資料為 double。 缺少修飾詞會移動資料而不改變位。

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

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

最小著色器模型

下列著色器模型支援此指示:

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

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