Compartilhar via


if (sm4 - asm)

Branch com base no resultado or lógico.

if{_z|_nz} src0.select_component
Item Descrição
src0
[in] Contém o componente no qual testar a condição.

Comentários

O formato de token contém o deslocamento da instrução endif correspondente no Sombreador como uma conveniência.

O exemplo a seguir mostra como usar esta instrução.

                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

Restrições

  • Os operandos de origem (se quatro vetores de componente) devem usar um único seletor de componente.
  • O registro de 32 bits fornecido pelo src0 é testado em um nível de bit. Se qualquer bit não for zero, if_z será verdadeiro. Se todos os bits forem zero, if_nz será verdadeiro.
  • Os blocos de controle de fluxo podem aninhar até 64 profundidades por sub-rotina (e main). O compilador HLSL não gerará sub-rotinas que excedam esse limite. O comportamento das instruções de fluxo de controle além de 64 níveis de profundidade (por sub-rotina) é indefinido.

Esta instrução se aplica aos seguintes estágios de sombreador:

Sombreador de vértice Sombreador de geometria Sombreador de pixel
x x x

Modelo de sombreador mínimo

Essa função tem suporte nos seguintes modelos de sombreador.

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 sim
Modelo de sombreador 4 sim
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 4 (DirectX HLSL)