Compartir a través de


dmovc (sm5 - asm)

Movimiento condicional basado en componentes.

dmovc[_sat] dest[.mask], src0[.swizzle], **src1[_abs][.swizzle], **src2[_abs][.swizzle],
Elemento Descripción
Dest
[in] Destino de movimiento.
Si es src0, dest = src1 else dest = src2.
src0
[in] Componentes con los que se va a probar la condición.
src1
[in] Componentes que se van a mover si la condición es verdadera.
src2
[in] Componentes que se van a mover si la condición es false.

Comentarios

En el ejemplo siguiente se muestra cómo usar esta instrucción.

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

Las máscaras válidas para dest son .xy, .zw, .xyzw.

Los swizzles válidos para src0 son cualquier cosa. Los dos primeros componentes posteriores a swizzle se usan para indentificar dos valores de condición de 32 bits.

Los swizzles válidos para src1 y src2 que contienen doubles son .xyzw, .xyxy, .zwxy, .zwzw. son .xy, .zw y .xyzw.

Las siguientes asignaciones de src son posteriores a swizzle:

  • dest es un doble vec2 en (x 32LSB, y 32MSB) y (z 32LSB, w 32MSB).
  • src0 es un vec2 de 32 bits/componente en x e y (zw omitido).
  • src1 es un doble vec2 a través de (x 32LSB, y 32MSB) y (z 32LSB, w 32MSB).
  • src2 es un doble vec2 entre (x 32LSB, y 32MSB) y (z 32LSB, w 32MSB).

Los modificadores de src1 y src2, distintos de swizzle, asumen que los datos son dobles. La ausencia de modificadores mueve los datos sin modificar bits.

Esta instrucción se aplica a las siguientes fases del sombreador:

Vértice Casco Domain Geometría Píxel Compute
x x x x x x

Modelo de sombreador mínimo

Esta instrucción se admite en los siguientes modelos de sombreador:

Modelo de sombreador Compatible
Modelo de sombreador 5
Modelo de sombreador 4.1 no
Modelo de sombreador 4 no
Modelo de sombreador 3 (DirectX HLSL) no
Modelo de sombreador 2 (DirectX HLSL) no
Modelo de sombreador 1 (DirectX HLSL) no

Ensamblado del modelo de sombreador 5 (DirectX HLSL)