Compartir a través de


Fase del sombreador de píxeles (PS)

La fase Del 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, basada en el modelo de sombreador 4.0 núcleo de sombreador común.

La fase del 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. Los ejemplos 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 usan 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 de 2x2) simultáneamente, de modo que los derivados de cantidades calculadas en el sombreador de píxeles se pueden aproximar razonablemente como diferencias de los valores en el mismo punto de ejecución en píxeles adyacentes.

Entradas

Cuando la canalización está configurada sin un sombreador de geometría, un sombreador de píxeles está limitado 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 entradas de componente.

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 primitivas. Las entradas del sombreador de píxeles se interpolan a partir de los atributos de vértice del primitivo que se está rasterizando, 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. Vea la sección "Muestreo centroide de atributos cuando se suavizan multisample" en reglas de rasterización. La evaluación centroide solo es relevante durante el muestreo múltiple para cubrir 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 de 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 permite 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 opcional de 32 bits, de 1 componente, de punto flotante y de 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 la profundidad de función fija o el sombreador oDepth.

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

Canalización de gráficos