Compartir a través de


Canalización de gráficos

La canalización de gráficos de Direct3D está diseñada para generar gráficos para aplicaciones de juegos en tiempo real. Los datos fluyen de la entrada a la salida por cada una de las fases configurables o programables.

Todas las fases se pueden configurar mediante la API de Direct3D. Las fases que presentan núcleos comunes del sombreador (los bloques rectangulares redondeados) se pueden programar mediante el lenguaje de programación HLSL . Esto hace que la canalización sea extremadamente flexible y adaptable.

Los más usados son la fase Sombreador de vértices (VS) y la fase sombreador de píxeles (PS). Si no proporcionas ni estas fases del sombreador, se usa un sombreador de vértices y píxeles de paso a través predeterminados.

diagrama del flujo de datos en la canalización programable direct3d 11

Fase del ensamblador de entrada

La fase ensamblador de entrada (IA) proporciona datos primitivos y adyacentes a la canalización, como triángulos, líneas y puntos, incluidos los identificadores semánticos para ayudar a que los sombreadores sean más eficaces al reducir el procesamiento a primitivos que aún no se han procesado.

  • Entrada

    Datos primitivos (triángulos, líneas o puntos), desde búferes rellenados por el usuario en memoria. Y posiblemente datos de adyacencia. Un triángulo sería 3 vértices para cada triángulo y posiblemente 3 vértices para los datos de adyacencia por triángulo.

  • Output

    Primitivos con valores generados por el sistema adjuntos (como un identificador primitivo, un identificador de instancia o un identificador de vértice).

Fase del sombreador de vértices

La fase sombreador de vértices (VS) procesa vértices, normalmente realizando operaciones como transformaciones, skinning e iluminación. Un sombreador de vértices toma un único vértice de entrada y genera un único vértice de salida. Operaciones individuales por vértice, como Transformaciones, Skinning, Morfing y iluminación por vértice.

  • Entrada

    Un solo vértice, con valores generados por el sistema VertexID e InstanceID. Cada vértice de entrada de vértices se puede componer de hasta 16 vectores de 32 bits (hasta 4 componentes cada uno).

  • Output

    Un solo vértice. Cada vértice de salida se puede componer de hasta 16 vectores de 4 componentes de 32 bits.

Fase del sombreador de casco

La fase del sombreador de casco (HS) es una de las fases de teselación, que divide eficazmente una sola superficie de un modelo en muchos triángulos. Un sombreador de casco se invoca una vez por revisión y transforma los puntos de control de entrada que definen una superficie de orden bajo en puntos de control que componen una revisión. También realiza algunos cálculos por revisión para proporcionar datos para la fase de teselador (TS) y la fase del sombreador de dominio (DS).

  • Entrada

    Entre 1 y 32 puntos de control de entrada, que definen una superficie de bajo orden.

  • Output

    Entre 1 y 32 puntos de control de salida, que juntos componen una revisión. El sombreador de casco declara el estado de la fase de teselador (TS), incluido el número de puntos de control, el tipo de cara de revisión y el tipo de particionamiento que se va a usar al teselar.

Fase de Tessellator

La fase de Tessellator (TS) crea un patrón de muestreo del dominio que representa la revisión de geometría y genera un conjunto de objetos más pequeños (triángulos, puntos o líneas) que conectan estos ejemplos.

  • Entrada

    El teselador funciona una vez por revisión mediante los factores de teselación (que especifican la precisión de la teselación del dominio) y el tipo de creación de particiones (que especifica el algoritmo utilizado para segmentar una revisión) que se pasan desde la fase del sombreador de casco.

  • Output

    El tesellador genera coordenadas uv (y opcionalmente w) y la topología expuesta a la fase del sombreador de dominio.

Fase del sombreador de dominio

La fase del sombreador de dominio (DS) calcula la posición del vértice de un punto subdividido en la revisión de salida; calcula la posición del vértice que corresponde a cada muestra de dominio. Un sombreador de dominio se ejecuta una vez por punto de salida de fase de teselador y tiene acceso de solo lectura a las constantes de revisión de salida del sombreador de casco y de revisión de salida, y las coordenadas UV de la fase de teselador.

  • Entrada

    Un sombreador de dominio consume puntos de control de salida de la fase Sombreador de casco (HS). Las salidas del sombreador de casco incluyen: puntos de control, datos constantes de revisión y factores de teselación (los factores de teselación pueden incluir los valores utilizados por el teselador de función fija, así como los valores sin procesar , antes de redondear por teselación de enteros, lo que facilita la geomorfización, por ejemplo). Se invoca un sombreador de dominio una vez por coordenada de salida desde la fase de Tessellator (TS).

  • Output

    La fase Del sombreador de dominio (DS) genera la posición del vértice de un punto subdividido en la revisión de salida.

Fase del sombreador de geometría

La fase del sombreador de geometría (GS) procesa primitivos completos: triángulos, líneas y puntos, junto con sus vértices adyacentes. Admite la amplificación de geometría y la desamplificación. Es útil para algoritmos como la expansión de sprite de puntos, los sistemas dinámicos de partículas, la generación de fur/fin, la generación de volumen de sombras, el mapa de representación de un solo paso a cubo, el intercambio de materiales por primitivo y la configuración de material por primitivo, incluida la generación de coordenadas barícéntricas como datos primitivos para que un sombreador de píxeles pueda realizar la interpolación de atributos personalizados.

  • Entrada

    A diferencia de los sombreadores de vértices, que operan en un solo vértice, las entradas del sombreador de geometría son los vértices de un primitivo completo (tres vértices para triángulos, dos vértices para líneas o un solo vértice para el punto).

  • Output

    La fase del sombreador de geometría (GS) es capaz de generar varios vértices que forman una sola topología seleccionada. Las topologías de salida del sombreador de geometría disponibles son tristrip, linestrip y pointlist. El número de primitivos emitidos puede variar libremente dentro de cualquier invocación del sombreador de geometría, aunque el número máximo de vértices que se podrían emitir debe declararse estáticamente. Las longitudes de franja emitidas a partir de una invocación del sombreador de geometría pueden ser arbitrarias y se pueden crear nuevas tiras a través de la función HLSL RestartStrip .

Fase de salida de flujo

La fase De salida de flujo (SO) genera continuamente datos de vértices (o secuencias) de la fase activa anterior a uno o varios búferes en memoria. Los datos transmitidos a la memoria se pueden volver a recircular en la canalización como datos de entrada o leerlos desde la CPU.

  • Entrada

    Datos de vértices de una fase de canalización anterior.

  • Output

    La fase de salida de flujo (SO) genera continuamente datos de vértices (o secuencias) de la fase activa anterior, como la fase sombreador de geometría (GS), en uno o varios búferes en memoria. Si la fase del sombreador de geometría (GS) está inactiva y la fase salida de flujo (SO) está activa, genera continuamente datos de vértices de la fase del sombreador de dominio (DS) en búferes en memoria (o si el DS también está inactivo, desde la fase sombreador de vértices (VS).

Fase de rasterizador

La fase rasterizador (RS) clips primitivos que no están en la vista, prepara primitivos para la fase sombreador de píxeles (PS) y determina cómo invocar sombreadores de píxeles. Convierte la información vectorial (compuesta de formas o primitivos) en una imagen ráster (compuesta por píxeles) para mostrar gráficos 3D en tiempo real.

  • Entrada

    Se supone que los vértices (x,y,z,w) entran en la fase de rasterizador en un espacio de clip homogéneo. En este espacio de coordenadas, el eje X apunta a la derecha, Y apunta hacia arriba y Z puntos de la cámara.

  • Output

    Píxeles reales que deben representarse. Incluye algunos atributos de vértice para su uso en interpolación por parte del sombreador de píxeles.

Fase del sombreador de píxeles

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

  • Entrada

    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.

  • Output

    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.

Fase de fusión de salida

La fase fusión de salida (OM) combina varios tipos de datos de salida (valores del sombreador de píxeles, información de profundidad y galería de símbolos) con el contenido del destino de representación y los búferes de profundidad y galería de símbolos para generar el resultado final de la canalización.

  • Entrada

    Las entradas de fusión de salida son el estado canalización, los datos de píxeles generados por los sombreadores de píxeles, el contenido de los destinos de representación y el contenido de los búferes de profundidad y galería de símbolos.

  • Output

    Color de píxel representado final.