Condividi tramite


if_comp - vs

Avviare un valore bool if - vs...else - vs...endif - vs block, con una condizione basata su valori che possono essere calcolati in uno shader. Questa istruzione viene usata per ignorare un blocco di codice, in base a una condizione.

Sintassi

if_comp src0, src1

 

Dove:

  • _comp è un confronto tra i due registri di origine. I possibili valori sono i seguenti:

    Sintassi Confronto
    _Gt Maggiore di
    _Tenente Minore di
    _Ge Maggiore di o uguale a
    _le Minore di o uguale a
    _Eq Uguale a
    _ne Diverso da

     

  • src0 è un registro di origine. Per selezionare un componente, è necessario eseguire la replica swizzle.

  • src1 è un registro di origine. Per selezionare un componente, è necessario eseguire la replica swizzle.

Osservazioni:

Versioni del vertex shader 1_1 2_0 2_x 2_sw 3_0 3_sw
if_comp x x x x

 

Questa istruzione viene usata per ignorare un blocco di codice, in base a una condizione.

if_lt src0, src1
   jump to the corresponding else or endif instruction;

Prestare attenzione usando le modalità di confronto uguali e non uguali ai numeri a virgola mobile. Poiché l'arrotondamento si verifica durante i calcoli a virgola mobile, è possibile eseguire il confronto con un valore epsilon (numero diverso da zero) per evitare errori.

Tali restrizioni includono:

  • if_comp...else - vs...endif - vs blocchi (insieme al predicato se blocchi) possono essere annidati fino a 24 livelli profondi.
  • I registri src0 e src1 richiedono uno swizzle replicato.
  • if_comp blocchi devono terminare con un'istruzione else - vs o endif - vs .
  • if_comp...else - vs...endif: i blocchi e i blocchi non possono creare un blocco ciclo. Il blocco if_comp deve trovarsi completamente all'interno o all'esterno del ciclo , rispetto al blocco.

Esempio

Questa istruzione fornisce il controllo del flusso dinamico condizionale.

if_lt r3.x, r4.y
// Instructions to run if r3.x < r4.y

else
// Instructions to run otherwise

endif

Istruzioni per vertex shader