Share via


registros de ps_1_1__ps_1_2__ps_1_3__ps_1_4

Los sombreadores de píxeles dependen de los registros para obtener datos de vértices, para generar datos de píxeles, para contener resultados temporales durante los cálculos e identificar las fases de muestreo de texturas. Hay varios tipos de registros, cada uno con una funcionalidad única. Esta sección contiene información de referencia para los registros de entrada y salida implementados por la versión del sombreador de píxeles 1_X.

Los registros contienen datos para que los use el sombreador de píxeles. Los registros se describen por completo en las secciones siguientes.

  • Tipos de registro describe los cuatro tipos de registros disponibles y sus fines.
  • Lea El límite de puertos detalla las restricciones sobre el uso de varios registros en una sola instrucción.
  • Read only Read Write describe qué registros se pueden usar para leer, escribir o ambos.
  • El intervalo detalla el intervalo de los datos del componente.

Tipos de registro

Nombre Tipo Versión 1_1 Versión 1_2 Versión 1_3 Versión 1_4
c# Registro constante 8 8 8 8
R # Registro temporal 2 2 2 6
T # Registro de texturas 4 4 4 6
V # Registro de colores 2 2 2 2 en la fase 2

 

  • Los registros constantes contienen datos constantes. Los datos se pueden cargar en un registro constante mediante SetPixelShaderConstantF o se pueden definir mediante def - ps. Los registros constantes no se pueden usar mediante las instrucciones de dirección de textura. La única excepción es la instrucción texm3x3spec - ps , que usa un registro constante para proporcionar un vector de rayos oculares.

  • Los registros temporales se usan para almacenar los resultados intermedios. r0 también actúa como salida del sombreador de píxeles. El valor de r0 al final del sombreador es el color de píxel del sombreador.

    La validación del sombreador producirá un error en CreatePixelShader en cualquier sombreador que intente leer desde un registro temporal que no haya sido escrito por una instrucción anterior. D3DXAssembleShader producirá un error de forma similar, suponiendo que la validación esté habilitada (no use D3DXSHADER_SKIPVALIDATION).

  • Registros de texturas

    Para la versión del sombreador de píxeles 1_1 a 1_3, los registros de textura contienen datos de textura o coordenadas de textura. Los datos de textura se cargan en un registro de textura cuando se muestrea una textura. El muestreo de texturas usa coordenadas de textura para buscar, o muestrear, un valor de color en las coordenadas especificadas (u,v,w,q) mientras se tienen en cuenta los atributos de estado de fase de textura. Los datos de coordenadas de textura se interpolan a partir de los datos de coordenadas de textura de vértices y están asociados a una fase de textura específica. Hay una asociación uno a uno predeterminada entre el número de fase de textura y el orden de declaración de coordenadas de textura. De forma predeterminada, el primer conjunto de coordenadas de textura definidas en el formato de vértice está asociado a la fase de textura 0.

    Para estas versiones de sombreador de píxeles, los registros de textura se comportan igual que los registros temporales cuando se usan en instrucciones aritméticas.

    Para la versión 1_4 del sombreador de píxeles, los registros de texturas (t#) contienen datos de coordenadas de textura de solo lectura. Esto significa que el conjunto de coordenadas de textura y el número de fase de textura son independientes entre sí. El número de fase de textura (del que se va a muestrear una textura) viene determinado por el número de registro de destino (r0 a r5). Para la instrucción texld, el conjunto de coordenadas de textura viene determinado por el registro de origen (t0 a t5), por lo que el conjunto de coordenadas de textura se puede asignar a cualquier fase de textura. Además, el registro de origen (especificando coordenadas de textura) para texld también puede ser un registro temporal (r#), en cuyo caso el contenido del registro temporal se usa como coordenadas de textura.

  • Los registros de color contienen valores de color por píxel. Los valores se obtienen por iteración por píxel de los valores de color difuso y especular en los datos de vértice. En el caso de los sombreadores de la versión 1_4 del sombreador de píxeles, los registros de colores solo están disponibles durante la segunda fase.

    Si el modo de sombra se establece en D3DSHADE_FLAT, se deshabilita la iteración de ambos colores de vértice (difuso y especular). Independientemente del modo de sombra, la niebla seguirá siendo iterada por la canalización si está habilitada la niebla de píxeles. Tenga en cuenta que la niebla se aplica más adelante en la canalización que los píxeleshader.

    Es habitual cargar el registro v0 con los datos de color difuso de vtex. También es habitual cargar el registro v1 con los datos de color especular de vértices.

    Los valores de datos de color de entrada están restringidos (saturados) al intervalo de 0 a 1 porque este es el intervalo de entrada válido para los registros de color en el sombreador de píxeles.

    Los sombreadores de píxeles tienen acceso de solo lectura a los registros de colores. El contenido de estos registros son valores iterados, pero la iteración se puede realizar con una precisión mucho menor que las coordenadas de textura.

Límite de puerto de lectura

El límite de puertos de lectura especifica el número de registros diferentes de cada tipo de registro que se puede usar como registro de origen en una sola instrucción.

Nombre Tipo Versión 1_1 Versión 1_2 Versión 1_3 Versión 1_4
c# Registro constante 2 2 2 2
R # Registro temporal 2 2 2 3
T # Registro de texturas 2 3 3 1
V # Registro de colores 2 2 2 2 en la fase 2

 

Por ejemplo, los registros de color de casi todas las versiones tienen un límite de puerto de lectura de dos. Esto significa que una sola instrucción puede usar un máximo de dos registros de colores diferentes (v0 y v1 por ejemplo) como registros de origen. En este ejemplo se muestran dos registros de color que se usan en la misma instrucción:

mad r0, v1, c2, v0

Solo lectura, lectura y escritura

Los tipos de registro se identifican según la funcionalidad de solo lectura (RO) o la funcionalidad de lectura y escritura (RW) en la tabla siguiente. Los registros de solo lectura solo se pueden usar como registros de origen en una instrucción; nunca se pueden usar como registro de destino.

Nombre Tipo Versión 1_1 Versión 1_2 Versión 1_3 Versión 1_4
Nombre Tipo 1_1 1_2 1_3 1_4
c# Registro constante RO RO RO RO
R # Registro temporal RW RW RW RW
T # Registro de texturas RW RW RW Consulte la nota siguiente.
V # Registro de colores RO RO RO RO

 

Los registros que son compatibles con RW se pueden usar para almacenar los resultados intermedios. Esto incluye los registros temporales y los registros de textura para algunas de las versiones del sombreador.

Nota

  • Para la versión 1_4 del sombreador de píxeles, los registros de textura son RO para las instrucciones de direccionamiento de texturas y los registros de texturas no se pueden leer ni escribir en mediante instrucciones aritméticas. Además, dado que los registros de textura se han convertido en registros de coordenadas de textura, tener acceso de RO no es una regresión de la funcionalidad anterior.

 

Intervalo

El intervalo es el valor máximo y mínimo de los datos de registro. Los intervalos varían en función del tipo de registro. Los intervalos de algunos de los registros se pueden consultar desde los límites del dispositivo mediante GetDeviceCaps.

Nombre Tipo Intervalo Versiones
c# Registro constante -1 a +1 Todas las versiones
R # Registro temporal - PixelShader1xMaxValue a + PixelShader1xMaxValue Todas las versiones
T # Registro de texturas - MaxTextureRepeat a + MaxTextureRepeat Todas las versiones
V # Registro de colores De 0 a 1 Todas las versiones

 

El hardware del sombreador de píxeles temprano representa los datos de los registros mediante un número de punto fijo. Esto limita la precisión a un máximo de aproximadamente ocho bits para la parte fraccionaria de un número. Tenga esto en cuenta al diseñar un sombreador.

Para la versión del sombreador de píxeles 1_1 a 1_3, MaxTextureRepeat debe ser un mínimo de uno. Para 1_4, MaxTextureRepeat debe ser un mínimo de ocho.

Consulte D3DCAPS9 para obtener más información sobre PixelShader1xMaxValue.

Registros