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 |