if (sm4 - asm)

Ramo basato sul risultato OR logico.

if{_z|_nz} src0.select_component
Elemento Descrizione
src0
[in] Contiene il componente in cui testare la condizione.

Commenti

Il formato del token contiene l'offset dell'istruzione endif corrispondente nello shader per praticità.

Nell'esempio seguente viene illustrato come usare questa istruzione.

                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

Restrizioni

  • Gli operandi di origine (se 4 vettori di componenti) devono usare un singolo selettore componente.
  • Il registro a 32 bit fornito da src0 viene testato a livello di bit. Se un bit è diverso da zero, if_z sarà true. Se tutti i bit sono zero, if_nz sarà true.
  • I blocchi di controllo del flusso possono annidare fino a 64 profondità per subroutine (e main). Il compilatore HLSL non genererà subroutine che superano questo limite. Il comportamento delle istruzioni del flusso di controllo oltre i 64 livelli di profondità (per subroutine) non è definito.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertex shader Geometry shader Pixel shader
x x x

Modello minimo shader

Questa funzione è supportata nei modelli di shader seguenti.

Modello di shader Supportato
Modello shader 5
Modello shader 4.1
Modello shader 4
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Assembly del modello shader 4 (DirectX HLSL)