dmovc (sm5 - asm)

Komponentenweise bedingte Verschiebung.

dmovc[_sat] dest[.mask], src0[.swizzle], [.swizzle], [_abs][.swizzle], [src2[_abs][.swizzle],
Element Beschreibung
Dest
[in] Das Ziel des Verschiebens.
Wenn src0, dann destsrc1 else destsrc2 = = .
src0
[in] Die Komponenten, um die Bedingung zu testen.
src1
[in] Die Komponenten, die verschoben werden sollen, wenn die Bedingung wahr ist.
src2
[in] Die Komponenten, die verschoben werden sollen, wenn die Bedingung falsch ist.

Hinweise

Im folgenden Beispiel wird gezeigt, wie Sie diese Anweisung verwenden.

                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
                    }
                }

Die gültigen Masken für dest sind .xy, .zw, .xyzw.

Die gültigen Schizzles für src0 sind alles. Die ersten beiden Komponenten nach dem Schwarm werden verwendet, um zwei 32-Bit-Bedingungswerte einzuschließen.

Die gültigen Swizzles für src1 und src2 , die Doppel enthalten, sind .xyzw, .xyxy, .zwxy, .zw. sind .xy, .zw und .xyzw.

Die folgenden src-Zuordnungen unten sind nach dem Schwarm:

  • dest ist ein double vec2 across (x 32LSB, y 32MSB) und (z 32LSB, w 32MSB).
  • src0 ist eine 32bit/Komponente vec2 über x und y (zw ignoriert).
  • src1 ist ein double vec2 across (x 32LSB, y 32MSB) und (z 32LSB, w 32MSB).
  • src2 ist ein double vec2 across (x 32LSB, y 32MSB) und (z 32LSB, w 32MSB).

Die Modifizierer auf src1 und src2, anders als swizzle, gehen davon aus, dass die Daten doppelt sind. Die Abwesenheit von Modifizierern verschiebt Daten, ohne Bits zu ändern.

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Rumpf Domain Geometrie Pixel Compute
X X X X X X

Mindest-Shadermodell

Diese Anweisung wird in den folgenden Shadermodellen unterstützt:

Shadermodell Unterstützt
Shadermodell 5 Ja
Shadermodell 4.1 Nein
Shadermodell 4 Nein
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Shadermodell 5 Assembly (DirectX HLSL)