Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As instruções de controle de fluxo do sombreador de vértice têm duas restrições especiais. As profundidades de aninhamento restringem o número de instruções que podem ser chamadas dentro umas das outras. Além disso, cada instrução tem uma contagem de slots de instrução que se aplica ao número máximo de instruções que um sombreador pode suportar.
Observação
Ao usar os perfis de sombreador HLSL *_4_0_level_9_x, você usa implicitamente os perfis de do Shader Model 2.x para oferecer suporte a hardware compatível com Direct3D 9. Os perfis Shader Model 2.x suportam um comportamento de controle de fluxo mais limitado do que os perfis Shader Model 4.x e posteriores.
Contagem de profundidade por instrução para vs_2_0
Cada instrução conta em relação a um ou mais limites de profundidade de aninhamento. Esta tabela mostra a contagem de profundidade que cada instrução adiciona ou subtrai da profundidade existente:
| Instruções | Aninhamento estático | Aninhamento dinâmico | aninhamento de loop/rep | Aninhamento de chamadas | Contagem de fluxo estático |
|---|---|---|---|---|---|
| se bool - vs | 0 | 0 | 0 | 0 | 1 |
| if_comp - vs | n/a | n/a | n/a | n/a | n/a |
| se pred - vs | n/a | n/a | n/a | n/a | n/a |
| mais - vs | 0 | 0 | 0 | 0 | 1(se bool - vs apenas) |
| endif - vs | -1 | 0 | 0 | 0 | 0 |
| rep - vs | 0 | 0 | 1 | 0 | 1 |
| endrep - vs | 0 | 0 | -1 | 0 | 0 |
| loop - vs | 0 | 0 | 1 | 0 | 1 |
| endloop - vs | 0 | 0 | -1 | 0 | 0 |
| intervalo - vs | n/a | n/a | n/a | n/a | n/a |
| break_comp - vs | n/a | n/a | n/a | n/a | n/a |
| quebra - vs | n/a | n/a | n/a | n/a | n/a |
| chamada - vs | 0 | 0 | 0 | 1 | 1 |
| Callnz Bool - contra | 0 | 0 | 0 | 1 | 1 |
| Callnz Pred - vs | n/a | n/a | n/a | n/a | n/a |
| ret - vs | 0 | 0 | 0 | -1 | 0 |
| setp_comp - vs | n/a | n/a | n/a | n/a | n/a |
Profundidade de aninhamento
A profundidade de aninhamento define quantas instruções podem ser chamadas dentro umas das outras. Cada tipo de instrução tem um ou mais limites de aninhamento:
| Tipo de Instrução | Máximo |
|---|---|
| Aninhamento estático | Apenas limitado pela contagem de fluxo estático |
| Aninhamento dinâmico | n/a |
| aninhamento de loop/rep | 1 |
| Aninhamento de chamadas | 1 |
| Contagem de fluxo estático | 16 |
Contagem de profundidade por instrução para vs_2_x
Cada instrução conta em relação a um ou mais limites de profundidade de aninhamento. Esta tabela mostra a contagem de profundidade que cada instrução adiciona ou subtrai da profundidade existente:
| Instruções | Aninhamento estático | Aninhamento dinâmico | aninhamento de loop/rep | Aninhamento de chamadas | Contagem de fluxo estático |
|---|---|---|---|---|---|
| se bool - vs | 1 | 0 | 0 | 0 | 1 |
| if_comp - vs | 0 | 1 | 0 | 0 | 0 |
| se pred - vs | 0 | 1 | 0 | 0 | 0 |
| mais - vs | 0 | 0 | 0 | 0 | 1(se bool - vs apenas) |
| endif - vs | -1(se bool - vs) | -1(se pred - vs ou if_comp - vs) | 0 | 0 | 0 |
| rep - vs | 0 | 0 | 1 | 0 | 1 |
| endrep - vs | 0 | 0 | -1 | 0 | 0 |
| loop - vs | 0 | 0 | 1 | 0 | 1 |
| endloop - vs | 0 | 0 | -1 | 0 | 0 |
| intervalo - vs | 0 | 0 | 0 | 0 | 0 |
| break_comp - vs | 0 | 1, -1 | 0 | 0 | 0 |
| quebra - vs | 0 | 0 | 0 | 0 | 0 |
| chamada - vs | 0 | 0 | 0 | 1 | 1 |
| Callnz Bool - contra | 0 | 0 | 0 | 1 | 1 |
| Callnz Pred - vs | 0 | 1 | 0 | 1 | 0 |
| ret - vs | 0 | -1 (Callnz Pred - vs) | 0 | -1 | 0 |
| setp_comp - vs | 0 | 0 | 0 | 0 | 0 |
Profundidade de aninhamento
A profundidade de aninhamento define quantas instruções podem ser chamadas dentro umas das outras. Cada tipo de instrução tem um ou mais limites de aninhamento:
| Tipo de Instrução | Máximo |
|---|---|
| Aninhamento estático | Apenas limitado pela contagem de fluxo estático |
| Aninhamento dinâmico | 0 ou 24, ver D3DCAPS9. VS20Caps.DynamicFlowControlProfundidade |
| aninhamento de loop/rep | 1 a 4, ver D3DCAPS9. VS20Caps.StaticFlowControlProfundidade |
| Aninhamento de chamadas | 1 a 4, ver D3DCAPS9. VS20Caps.StaticFlowControlDepth (independente do limite de loop/rep) |
| Contagem de fluxo estático | 16 |
Contagem de profundidade por instrução para vs_2_sw
Cada instrução conta em relação a um ou mais limites de profundidade de aninhamento. Esta tabela mostra a contagem de profundidade que cada instrução adiciona ou subtrai da profundidade existente:
| Instruções | Aninhamento estático | Aninhamento dinâmico | aninhamento de loop/rep | Aninhamento de chamadas | Contagem de fluxo estático |
|---|---|---|---|---|---|
| se bool - vs | 1 | 0 | 0 | 0 | n/a |
| if_comp - vs | 0 | 1 | 0 | 0 | n/a |
| se pred - vs | 0 | 1 | 0 | 0 | n/a |
| mais - vs | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(se bool - vs) | -1(se pred - vs ou if_comp - vs) | 0 | 0 | n/a |
| rep - vs | 0 | 0 | 1 | 0 | n/a |
| endrep - vs | 0 | 0 | -1 | 0 | n/a |
| loop - vs | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| intervalo - vs | 0 | 0 | 0 | 0 | n/a |
| break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
| quebra - vs | 0 | 0 | 0 | 0 | n/a |
| chamada - vs | 0 | 0 | 0 | 1 | n/a |
| Callnz Bool - contra | 0 | 0 | 0 | 1 | n/a |
| Callnz Pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (Callnz Pred - vs) | 0 | -1 | n/a |
| setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profundidade de aninhamento
A profundidade de aninhamento define quantas instruções podem ser chamadas dentro umas das outras. Cada tipo de instrução tem um ou mais limites de aninhamento:
| Tipo de Instrução | Máximo |
|---|---|
| Aninhamento estático | 24 |
| Aninhamento dinâmico | 24 |
| aninhamento de loop/rep | 4 |
| Aninhamento de chamadas | 4 |
| Contagem de fluxo estático | Sem limite |
Contagem de profundidade por instrução para vs_3_0
Cada instrução conta em relação a um ou mais limites de profundidade de aninhamento. Esta tabela mostra a contagem de profundidade que cada instrução adiciona ou subtrai da profundidade existente:
| Instruções | Aninhamento estático | Aninhamento dinâmico | aninhamento de loop/rep | Aninhamento de chamadas | Contagem de fluxo estático |
|---|---|---|---|---|---|
| se bool - vs | 1 | 0 | 0 | 0 | n/a |
| if_comp - vs | 0 | 1 | 0 | 0 | n/a |
| se pred - vs | 0 | 1 | 0 | 0 | n/a |
| mais - vs | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(se bool - vs) | -1(se pred - vs ou if_comp - vs) | 0 | 0 | n/a |
| rep - vs | 0 | 0 | 1 | 0 | n/a |
| endrep - vs | 0 | 0 | -1 | 0 | n/a |
| loop - vs | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| intervalo - vs | 0 | 0 | 0 | 0 | n/a |
| break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
| quebra - vs | 0 | 0 | 0 | 0 | n/a |
| chamada - vs | 0 | 0 | 0 | 1 | n/a |
| Callnz Bool - contra | 0 | 0 | 0 | 1 | n/a |
| Callnz Pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (Callnz Pred - vs) | 0 | -1 | n/a |
| setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profundidade de aninhamento
A profundidade de aninhamento define quantas instruções podem ser chamadas dentro umas das outras. Cada tipo de instrução tem um ou mais limites de aninhamento:
| Tipo de Instrução | Máximo |
|---|---|
| Aninhamento estático | 24 |
| Aninhamento dinâmico | 24 |
| aninhamento de loop/rep | 4 |
| Aninhamento de chamadas | 4 |
| Contagem de fluxo estático | Sem limite |
Contagem de profundidade por instrução para vs_3_sw
Cada instrução conta em relação a um ou mais limites de profundidade de aninhamento. Esta tabela mostra a contagem de profundidade que cada instrução adiciona ou subtrai da profundidade existente:
| Instruções | Aninhamento estático | Aninhamento dinâmico | aninhamento de loop/rep | Aninhamento de chamadas | Contagem de fluxo estático |
|---|---|---|---|---|---|
| se bool - vs | 1 | 0 | 0 | 0 | n/a |
| if_comp - vs | 0 | 1 | 0 | 0 | n/a |
| se pred - vs | 0 | 1 | 0 | 0 | n/a |
| mais - vs | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(se bool - vs) | -1(se pred - vs ou if_comp - vs) | 0 | 0 | n/a |
| rep - vs | 0 | 0 | 1 | 0 | n/a |
| endrep - vs | 0 | 0 | -1 | 0 | n/a |
| loop - vs | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| intervalo - vs | 0 | 0 | 0 | 0 | n/a |
| break_comp - vs | 0 | 1, -1 | 0 | 0 | n/a |
| quebra - vs | 0 | 0 | 0 | 0 | n/a |
| chamada - vs | 0 | 0 | 0 | 1 | n/a |
| Callnz Bool - contra | 0 | 0 | 0 | 1 | n/a |
| Callnz Pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (Callnz Pred - vs) | 0 | -1 | n/a |
| setp_comp - vs | 0 | 0 | 0 | 0 | n/a |
Profundidade de aninhamento
A profundidade de aninhamento define quantas instruções podem ser chamadas dentro umas das outras. Cada tipo de instrução tem um ou mais limites de aninhamento:
| Tipo de Instrução | Máximo |
|---|---|
| Aninhamento estático | 24 |
| Aninhamento dinâmico | 24 |
| aninhamento de loop/rep | 4 |
| Aninhamento de chamadas | 4 |
| Contagem de fluxo estático | Sem limite |
Tópicos relacionados