Share via


dmovc (sm5 - asm)

Spostamento condizionale a livello di componente.

dmovc[_sat] dest[.mask], src0[.swizzle], |src1[_abs][.swizzle], |src2[_abs][.swizzle],
Elemento Descrizione
Dest
[in] Destinazione di spostamento.
Se src0, dest = src1 else dest = src2.
src0
[in] Componenti per testare la condizione su.
src1
[in] Componenti da spostare se la condizione è true.
src2
[in] Componenti da spostare se la condizione è false.

Commenti

Nell'esempio seguente viene illustrato come usare questa istruzione.

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

Le maschere valide per il più dest sono .xy, .zw, .xyzw.

I swizzles validi per src0 sono qualsiasi cosa. I primi due componenti post-swizzle vengono usati per indentificare due valori di condizione a 32 bit.

I swizzles validi per src1 e src2 contenenti double sono .xyzw, .xyxy, .zwxy, .zwzw. sono .xy, .zw e .xyzw.

I mapping src seguenti sono post-swizzle:

  • dest è un double vec2 su (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).
  • src0 è un vec vec2 bit/componente su x e y (zw ignorato).
  • src1 è un doppio vec2 tra (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).
  • src2 è un doppio vec2 tra (x 32LSB, y 32MSB) e (z 32LSB, w 32MSB).

I modificatori su src1 e src2 , diverso da swizzle, presuppongono che i dati siano double. L'assenza di modificatori sposta i dati senza modificare i bit.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
X X X X X X

Modello di shader minimo

Questa istruzione è supportata nei modelli shader seguenti:

Modello di shader Supportato
Modello shader 5
Modello shader 4.1 no
Modello shader 4 no
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Shader Model 5 Assembly (DirectX HLSL)