Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os vários tipos de registros de saída foram recolhidos em doze registros de saída (dois para cor, oito para textura, um para posição e outro para neblina e tamanho do ponto). Elas podem ser usadas para qualquer coisa que o usuário queira interpolar para o sombreador de pixels: coordenadas de textura, cores, neblina e assim por diante.
Os registros de saída exigem declarações que incluem semântica. Por exemplo, os registros antigos de posição e tamanho de ponto são substituídos declarando um registro de saída com uma posição ou semântica de tamanho de ponto.
Dos doze registros de saída, qualquer dez (não necessariamente o0 a o9) têm quatro componentes (xyzw), outro deve ser declarado como posição (e também deve incluir todos os quatro componentes) e, opcionalmente, mais um pode ser um tamanho de ponto escalar.
Sintaxe
A sintaxe para declarar registros de saída é semelhante às declarações do registro de entrada:
- dcl_semantics o[.write_mask]
Onde:
- dcl_semantics pode usar o mesmo conjunto de semântica que para a declaração de entrada. Nomes semânticos vêm de D3DDECLUSAGE (e são emparelhados com um índice, como position3). Sempre deve haver um registro de saída com a semântica positiont0 quando não é usado para processar vértices. A semântica positiont0 e a semântica pointsize0 são as únicas que têm significado além de simplesmente permitir a vinculação de sombreadores de vértice a pixel. Para sombreadores com controle de fluxo, supõe-se que a saída de pior caso seja declarada. Não haverá padrões se um sombreador não gerar de fato o que ele declara que deve (devido ao controle de fluxo).
- o é um registro de saída. Consulte Output_Registers.
- write_mask indica o mesmo registro de saída que pode ser declarado várias vezes (portanto, a semântica diferente pode ser aplicada a componentes individuais), cada vez com uma máscara de gravação exclusiva. No entanto, a mesma semântica não pode ser usada várias vezes em uma declaração. Isso significa que os vetores devem ser quatro componentes ou menos e não podem passar por limites de registro de quatro componentes (registros individuais). Quando a semântica de tamanho de ponto é usada, ela deve ter uma máscara de gravação completa porque é considerada escalar. Quando a semântica de posição é usada, ela deve ter uma máscara de gravação completa porque todos os quatro componentes precisam ser gravados.
Comentários
Versões do sombreador de vértice | 3_0 | 3_sw |
---|---|---|
dcl_usage | x | x |
Todas as instruções dcl_usage devem aparecer antes da primeira instrução executável.
Exemplos de declaração
vs_3_0
dcl_color4 o3.x // color4 is a semantic name.
dcl_texcoord3 o3.yz // Different semantics can be packed into one register.
dcl_fog o3.w
dcl_tangent o4.xyz
dcl_position o7.xyzw // position must be declared to some unique register
// in a vertex shader, with all 4 components.
dcl_psize o6 // Pointsize cannot have a mask
// (that is, mask is full .xyzw)
// This is an implied scalar register.
// No other semantics can be assigned to any components
// of this register.
// If pointsize declaration is not used (typical),
// only 11 "out" registers are available, not 12.
// Pixel shaders cannot see this value.
Tópicos relacionados