Partager via


if (sm4 - asm)

Branche basée sur le résultat OU logique.

if{_z|_nz} src0.select_component
Élément Description
src0
[in] Contient le composant sur lequel tester la condition.

Notes

Le format de jeton contient le décalage de l’instruction endif correspondante dans le nuanceur par commodité.

L’exemple suivant montre comment utiliser cette instruction.

                if_z r0.x // if all bits in r0.x are zero
                   ...
                else // (optional)
                   ...
                endif
                if_nz r1.x // if any bit in r0.x is nonzero
                   ...
                else // (optional)
                   ...
                endif

Restrictions

  • Les opérandes sources (si 4 vecteurs de composant) doivent utiliser un seul sélecteur de composant.
  • Le registre 32 bits fourni par src0 est testé au niveau du bit. Si un bit est différent de zéro, if_z aura la valeur true. Si tous les bits sont zéro, if_nz aura la valeur true.
  • Les blocs de contrôle de flux peuvent imbriquer jusqu’à 64 profondeurs par sous-routine (et main). Le compilateur HLSL ne génère pas de sous-routines qui dépassent cette limite. Le comportement des instructions de flux de contrôle au-delà de 64 niveaux de profondeur (par sous-routine) n’est pas défini.

Cette instruction s’applique aux étapes suivantes du nuanceur :

Nuanceur de sommets Nuanceur de géométrie Nuanceur de pixels
x x x

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

Modèle de nuanceur Prise en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 Oui
Modèle de nuanceur 4 Oui
Modèle de nuanceur 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Modèle de nuanceur 1 (DirectX HLSL) non

Shader Model 4 Assembly (DirectX HLSL)