Share via


Fase del sombreador de píxeles (PS)

La fase Sombreador de píxeles (PS) recibe datos interpolados para un primitivo y genera datos por píxel, como el color.

Se trata de una fase de sombreador programable; se muestra como un bloque redondeado en el diagrama de canalización de gráficos . Esta fase del sombreador expone su propia funcionalidad única, creada en el modelo de sombreador 4.0 núcleo de sombreador común.

La fase sombreador de píxeles (PS) permite técnicas de sombreado enriquecidas, como la iluminación por píxel y el procesamiento posterior. Un sombreador de píxeles es un programa que combina variables constantes, datos de textura, valores interpolados por vértice y otros datos para generar salidas por píxel. La fase rasterizador (RS) invoca un sombreador de píxeles una vez para cada píxel cubierto por un primitivo, pero es posible especificar un sombreador NULL para evitar ejecutar un sombreador.

Cuando se realiza un muestreo múltiple de una textura, se invoca un sombreador de píxeles una vez por píxel cubierto mientras se produce una prueba de profundidad/galería de símbolos para cada multimple cubierto. Las muestras que pasan la prueba de profundidad/galería de símbolos se actualizan con el color de salida del sombreador de píxeles.

Las funciones intrínsecas del sombreador de píxeles producen o utilizan derivados de cantidades con respecto al espacio de pantalla x e y. El uso más común para derivados es calcular cálculos de nivel de detalle para el muestreo de texturas y, en el caso del filtrado anisotrópico, seleccionando muestras a lo largo del eje de anisotropía. Normalmente, una implementación de hardware ejecuta un sombreador de píxeles en varios píxeles (por ejemplo, una cuadrícula 2x2) simultáneamente, de modo que los derivados de cantidades calculadas en el sombreador de píxeles se pueden aproximar razonablemente como deltas de los valores en el mismo punto de ejecución en píxeles adyacentes.

Entradas

Cuando la canalización se configura sin un sombreador de geometría, un sombreador de píxeles se limita a entradas de 16, 32 bits y 4 componentes. De lo contrario, un sombreador de píxeles puede tardar hasta 32, 32 bits y 4 componentes.

Los datos de entrada del sombreador de píxeles incluyen atributos de vértice (que se pueden interpolar con o sin corrección de perspectiva) o se pueden tratar como constantes por primitivo. Las entradas del sombreador de píxeles se interpolan a partir de los atributos de vértice del primitivo que se rasteriza, en función del modo de interpolación declarado. Si se recorta un primitivo antes de la rasterización, también se respeta el modo de interpolación durante el proceso de recorte.

Los atributos de vértice se interpolan (o evalúan) en ubicaciones del centro del sombreador de píxeles. Los modos de interpolación de atributos del sombreador de píxeles se declaran en una declaración de registro de entrada, por elemento, en un argumento o en una estructura de entrada. Los atributos se pueden interpolar linealmente o con muestreo centroide. Consulte la sección "Muestreo centroide de atributos cuando el suavizado multisample" en reglas de rasterización. La evaluación centroide solo es relevante durante el muestreo múltiple para cubrir los casos en los que un píxel está cubierto por un primitivo, pero un centro de píxeles puede no ser; La evaluación centroide se produce lo más cerca posible del centro de píxeles (no cubierto).

Las entradas también se pueden declarar con una semántica de valor del sistema, que marca un parámetro consumido por otras fases de canalización. Por ejemplo, una posición de píxel debe marcarse con la semántica de SV_Position. La fase ensamblador de entrada (IA) puede producir un escalar para un sombreador de píxeles (mediante SV_PrimitiveID); La fase rasterizador (RS) también puede generar un escalar para un sombreador de píxeles (mediante SV_IsFrontFace).

Salidas

Un sombreador de píxeles puede generar hasta 8, 32 bits, colores de 4 componentes o ningún color si se descarta el píxel. Los componentes de registro de salida del sombreador de píxeles deben declararse antes de poder usarse; cada registro tiene permitido una máscara de escritura de salida distinta.

Use el estado depth-write-enable (en la fase de fusión de salida (OM) para controlar si los datos de profundidad se escriben en un búfer de profundidad (o usan la instrucción de descarte para descartar los datos de ese píxel). Un sombreador de píxeles también puede generar un valor de profundidad opcional de 32 bits, de 1 componente, punto flotante y profundidad para las pruebas de profundidad (mediante la semántica de SV_Depth). El valor de profundidad se genera en el registro de oDepth y reemplaza el valor de profundidad interpolado para las pruebas de profundidad (suponiendo que las pruebas de profundidad están habilitadas). No hay ninguna manera de cambiar dinámicamente entre el uso de profundidad o sombreador de función fija.

Un sombreador de píxeles no puede generar un valor de galería de símbolos.

Canalización de gráficos