vs_3_0

Un sombreador de vértices programable se compone de un conjunto de instrucciones que operan en los datos de vértices. Registra la transferencia de datos dentro y fuera de la ALU. Se puede aplicar un control adicional para modificar la instrucción, los resultados o los datos que se escriben.

La versión del sombreador de vértices vs_3_0 amplía el conjunto de características admitido por vs_2_x. Cada una de las características de vs_2_X que requiere que se establezca un límite, está disponible en vs_3_0 sin necesidad del límite.

Características nuevas

En las secciones siguientes se enumeran las nuevas características de la versión del sombreador de vértices vs_3_0.

Registros de indexación

En los modelos de sombreador anteriores, solo se podría indexar el banco de registro constante. En este modelo, se pueden indexar los siguientes bancos de registro mediante el registro del contador de bucles (aL):

  • Registro de entrada (v#)
  • Registro de salida (o#)

Texturas de vértices

Este modelo de sombreador admite la búsqueda de texturas en el sombreador de vértices mediante texldl. El motor de vértices tiene cuatro fases del muestreador de texturas (distintas del muestreador de mapa de desplazamiento y los muestreadores de textura del motor de píxeles) que se pueden usar para muestrear texturas establecidas en esas fases. Consulte Texturas de vértices en vs_3_0 (DirectX HLSL).

Frecuencia de flujo de vértices

Esta característica permite inicializar un subconjunto de los registros de entrada a una velocidad diferente de una vez por vértice. Consulte Dibujo de geometría no indizada.

Salida del sombreador

De forma similar a vs_2_0, la salida del sombreador puede variar con el control de flujo estático. Tenga cuidado con la bifurcación dinámica, ya que esto puede hacer que las salidas del sombreador varían por vértice. Esto generará resultados impredecibles en diferentes hardware.

Control de flujo dinámico

Se admiten todas las instrucciones de control de flujo dinámico. El valor máximo de profundidad de anidamiento permitido es 24. (Consulte Límites de anidamiento de control de flujo para obtener más información).

Registros temporales

Se admite un total de 32 registros temporales (r#).

Control de flujo estático

La profundidad de anidamiento máxima del bucle - vs/rep - vs es 4. Profundidad de anidamiento máxima para la llamada - vs/callnz bool - vs/callnz pred - vs es 4. Para si bool: frente a, el valor máximo de profundidad de anidamiento permitido es 24. (Consulte Límites de anidamiento de control de flujo para obtener más información).

Predicación

Se admite la predicación de instrucciones. Use setp_comp : frente a para establecer el registro de predicado.

Recuento de instrucciones

Cada sombreador de vértices se permite desde 512 hasta el número de ranuras de MaxVertexShader30InstructionSlots en D3DCAPS9. El número de instrucciones ejecutadas puede ser mucho mayor debido a la compatibilidad con bucles o representantes; Sin embargo, maxVShaderInstructionsExecuted en D3DCAPS9, que debe ser al menos 0xFFFF.

Límites de dispositivos

Si se admite el sombreador de vértices 3_0, se admiten los siguientes límites en hardware (como mínimo):

Tapa Capacidad
Tapones de sombreador
  • DynamicFlowControlDepth es 24
  • NumTemps es 32
  • StaticFlowControlDepth es 4
  • Se admite la predicación.
GuardBandLeft, GuardBandTop, GuardBandRight, GuardBandBottom 8 K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
Compatibilidad con niebla D3DPRASTERCAPS_FOGVERTEX
VertexTexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET Los elementos de vértice de una declaración de vértice pueden compartir el mismo desplazamiento de flujo.
Formatos de vértice
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

Sombreadores de vértices