Se _ comp-PS

Avvia un' if bool-PS... else-PS... il blocco endif-PS , con una condizione basata sui valori che possono essere calcolati in uno shader. Questa istruzione viene usata per ignorare un blocco di codice, in base a una condizione.

Sintassi

Se _ comp src0, src1

 

Dove:

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

    Sintassi Confronto
    _gt Maggiore di
    _lt Minore di
    _GE Maggiore o uguale a
    _le Minore o uguale a
    _EQ Uguale a
    _ne Diverso da

     

  • src0 è un registro di origine. Per selezionare un componente, è necessario replicare Swizzle.

  • src1 è un registro di origine. Per selezionare un componente, è necessario replicare Swizzle.

Commenti

Versioni pixel shader 1_1 1_2 1 _ 3 1_4 2 _ 0 2 _ x 2 _ SW 3 _ 0 3 _ SW
Se _ comp x x x x

 

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

if (src0 comparison src1)
   jump to the corresponding else or endif instruction;

Prestare attenzione a usare le modalità di confronto uguale a e non uguale per i numeri a virgola mobile. Poiché l'arrotondamento si verifica durante i calcoli a virgola mobile, il confronto può essere eseguito su un valore Epsilon (un numero diverso da zero) per evitare errori.

Tali restrizioni includono:

  • Se _ comp... else-PS... i blocchi endif-PS (insieme ai blocchi if predicati) possono essere annidati fino a 24 livelli di profondità.
  • i registri src0 e src1 richiedono una replica Swizzle.
  • Se i _ blocchi comp devono terminare con un'istruzione else-vs o endif-vs .
  • Se _ comp... else-PS... i blocchi endif-PS non possono risiedere in un blocco di ciclo. Il _ blocco If comp deve trovarsi completamente all'interno o all'esterno del blocco del ciclo.

Esempio

Questa istruzione fornisce il controllo di flusso dinamico condizionale.

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

else
// Instructions to run otherwise

endif

Istruzioni pixel shader