vs_3_0

Um sombreador de vértice programável é composto por um conjunto de instruções que operam em dados de vértice. Registra dados de transferência dentro e fora da ALU. Controle adicional pode ser aplicado para modificar a instrução, os resultados ou quais dados são gravados.

A versão do sombreador de vértice vs_3_0 estende o conjunto de recursos compatível com vs_2_x. Cada um dos recursos em vs_2_X que requer um limite a ser definido, está disponível em vs_3_0 sem a necessidade do limite.

Novos recursos

Novos recursos da versão do sombreador de vértice vs_3_0 estão listados nas seções a seguir.

Registros de indexação

Nos modelos de sombreador anteriores, somente o banco de registro constante poderia ser indexado. Nesse modelo, os bancos de registro a seguir podem ser indexados usando o registro do contador de loop (aL):

  • Registro de entrada (v#)
  • Registro de saída (o#)

Texturas de vértice

Esse modelo de sombreador dá suporte à pesquisa de textura no sombreador de vértice usando texldl. O mecanismo de vértice tem quatro estágios de amostragem de textura (diferentes do amostrador de mapa de deslocamento e dos amostradores de textura no mecanismo de pixel) que podem ser usados para amostrar texturas definidas nesses estágios. Consulte Texturas de vértice em vs_3_0 (DirectX HLSL).

Frequência de fluxo de vértice

Esse recurso permite que um subconjunto dos registros de entrada seja inicializado a uma taxa diferente de uma vez por vértice. Consulte Desenho de geometria não indexada.

Saída do sombreador

Semelhante a vs_2_0, a saída do sombreador pode variar com o controle de fluxo estático. Tenha cuidado com a ramificação dinâmica, pois isso pode fazer com que as saídas do sombreador variem por vértice. Isso produzirá resultados imprevisíveis em hardwares diferentes.

Controle de fluxo dinâmico

Há suporte para todas as instruções de controle de fluxo dinâmico. O valor máximo de profundidade de aninhamento permitido é 24. (Consulte Limites de aninhamento de controle de fluxo para obter detalhes.)

Registros Temporários

Há suporte para um total de 32 registros temporários (r#).

Controle de fluxo estático

A profundidade máxima de aninhamento para loop - vs/rep - vs é 4. A profundidade máxima de aninhamento para chamada - vs/callnz bool - vs/callnz pred - vs é 4. Para se bool - vs, o valor máximo de profundidade de aninhamento permitido é 24. (Consulte Limites de aninhamento de controle de fluxo para obter detalhes.)

Predicação

Há suporte para a pré-indicação de instrução. Use setp_comp - vs para definir o registro de predicado.

Contagem de instruções

Cada sombreador de vértice é permitido em qualquer lugar de 512 até o número de slots em MaxVertexShader30InstructionSlots em D3DCAPS9. O número de instruções executadas pode ser muito maior devido ao suporte a loop/rep; no entanto, isso é limitado por MaxVShaderInstructionsExecuted em D3DCAPS9, que deve ser pelo menos 0xFFFF.

Tampas de dispositivo

Se houver suporte para o Sombreador de Vértice 3_0, as seguintes tampas serão compatíveis com o hardware (no mínimo):

Tampa Funcionalidade
Tampas do sombreador
  • DynamicFlowControlDepth é 24
  • NumTemps é 32
  • StaticFlowControlDepth é 4
  • Há suporte para a pré-indicação.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8 K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Suporte à neblina D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Elementos de vértice em uma declaração de vértice podem compartilhar o mesmo deslocamento de fluxo.
Formatos de vértice
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

Sombreadores de vértice