if_comp - ps

Démarrez un bloc if bool - ps...else - ps...endif - ps, 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 pixels 1_1 1_2 1_3 1_4 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 (src0 comparison src1)
   jump to the corresponding else or endif instruction;

Veillez à utiliser les modes de comparaison égaux et non égaux sur des nombres à virgule flottante. Étant donné que l’arrondi se produit pendant des 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 - ps...endif - ps (ainsi que les blocs prédits if) peuvent avoir 24 couches de profondeur d’imbrication.
  • 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 - ps...endif - ps 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 de boucle.

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

Instructions du nuanceur de pixels