switch (sm4 - asm)
Transfere o controle para um bloco de instrução diferente dentro do corpo do comutador, dependendo do valor de um seletor.
alternar src0.select_component |
---|
Item | Descrição |
---|---|
src0 |
[in] O seletor para a instrução switch. |
Comentários
Um constructo switch/endswitch se comporta exatamente como um constructo de comutador na linguagem C, com a seguinte exceção: para instruçõespadrão de caso/ D3D11 que se enquadram nopróximo padrãode caso/ sem uma interrupção não podem ter nenhum código nelas. É permitido que várias instruções case , incluindo padrão, apareçam sequencialmente, compartilhando o mesmo bloco de código.
A condição deve ser um componente de registro de 32 bits ou uma quantidade imediata. A comparação de igualdade é bit a bit (inteiro).
Assim como acontece com qualquer instrução de sombreador no D3D11, o hardware pode ou não implementar o constructo do comutador diretamente.
As instruções switch podem ser aninhadas. Cada bloco de comutador conta como 1 nível em relação ao limite de profundidade de aninhamento de controle de fluxo de 64 por sub-rotina e principal, independentemente do número de instruções case. 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.
O exemplo a seguir mostra como usar esta instrução.
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
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 modelos de sombreador a seguir.
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 |