Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Démarrez un bloc if bool - vs...else - vs...endif - vs, avec une condition basée sur des valeurs qui peuvent être calculées dans un nuanceur. Cette instruction est utilisée pour ignorer un bloc de code, en fonction d’une condition.
Syntaxe
| if_comp src0, src1 |
|---|
Où :
_comp est une comparaison entre les deux registres sources. Les valeurs possibles sont les suivantes :
Syntaxe Comparaison _gt Supérieur(e) à _lt Inférieur(e) à _ge Supérieur ou égal à _le Inférieur ou égal à _eq Égal à _ne Non égal à src0 est un registre source. Une réplication swizzle est nécessaire pour sélectionner un composant.
src1 est un registre source. Une réplication swizzle est nécessaire pour sélectionner un composant.
Notes
| Versions du nuanceur de vertex | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|---|
| if_comp | x | x | x | x |
Cette instruction est utilisée pour ignorer un bloc de code, en fonction d’une condition.
if_lt src0, src1
jump to the corresponding else or endif instruction;
Veillez à utiliser les modes de comparaison égaux et non égaux sur les nombres à virgule flottante. Étant donné que l’arrondi se produit pendant les calculs à virgule flottante, la comparaison peut être effectuée sur une valeur epsilon (petit nombre différent de zéro) pour éviter les erreurs.
Les restrictions sont les suivantes :
- Les blocs if_comp...else - vs...endif - vs (ainsi que les blocs prédits if) peuvent être imbriqués jusqu’à 24 couches de profondeur.
- Les registres src0 et src1 nécessitent une réplication swizzle.
- Les blocs if_comp doivent se terminer par une instruction else - vs ou endif - vs.
- Les blocs if_comp...else - vs...endif - vs ne peuvent pas chevaucher un bloc de boucle. Le bloc if_comp doit être complètement à l’intérieur ou à l’extérieur du bloc loop - vs.
Exemple
Cette instruction fournit un contrôle de flux dynamique conditionnel.
if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y
else
// Instructions to run otherwise
endif
Rubriques connexes