dmovc (sm5 - asm)

Komponentenweise bedingte Verschiebung.

dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [src2[_abs][.swizzle],
Element Beschreibung
Dest
[in] Das Verschiebungsziel.
Wenn src0, dann dest = src1 else dest = src2.
src0
[in] Die Komponenten, anhand derer die Bedingung getestet werden soll.
src1
[in] Die Komponenten, die verschoben werden sollen, wenn die Bedingung wahr ist.
src2
[in] Die Komponenten, die verschoben werden sollen, wenn die Bedingung false ist.

Bemerkungen

Das folgende Beispiel zeigt, 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 Swizzles für src0 sind alles. Die ersten beiden Komponenten nach dem Swizzle werden verwendet, um zwei 32-Bit-Bedingungswerte einzurücken.

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

Die folgenden src-Zuordnungen unten sind post-swizzle:

  • dest ist ein Double vec2 across (x 32LSB, y 32MSB) und (z 32LSB, w 32MSB).
  • src0 ist ein 32-Bit-/Komponenten-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 für src1 und src2, mit Ausnahme von swizzle, gehen davon aus, dass die Daten doppelt sind. Das Fehlen von Modifizierern verschiebt Daten, ohne Bits zu ändern.

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Minimales 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)