Share via


Pipeline de elementos gráficos

O pipeline de gráficos do Direct3D foi projetado para a geração de elementos gráficos para aplicativos de jogos em tempo real. Os dados fluem da entrada para a saída por meio de cada um dos estágios configuráveis ou programáveis.

Todos os estágios de podem ser configurados usando a API do Direct3D. Estágios que apresentam núcleos comuns de sombreador (os blocos retangulares arredondados) são programáveis usando a linguagem de programação HLSL. Isso torna o pipeline extremamente flexível e adaptável.

Os mais utilizados são o estágio de sombreador de vértice (VS) e o estágio de sombreador de Pixel (PS). Se você não fornecer esses estágios de sombreador, um sombreador de pixel e vértice de passagem no-op padrão será utilizado.

diagrama do fluxo de dados no pipeline programável do direct3d 11

Estágio do Assembler de Entrada

O estágio do Assembler de Entrada (IA) fornece dados primitivos e de adjacência para o pipeline, como triângulos, linhas e pontos, incluindo IDs de semântica para ajudar a tornar os sombreadores mais eficientes, reduzindo o processamento para primitivos que ainda não foram processados.

  • Entrada

    Dados primitivos (triângulos, linhas, e/ou pontos), de buffers preenchidos pelo usuário na memória. E possivelmente dados de adjacência. Um triângulo seria 3 vértices para cada triângulo e possivelmente 3 vértices para dados de adjacência por triângulo.

  • Saída

    Primitivos com valores anexados gerados pelo sistema (como uma ID de primitivo, uma ID de instância ou uma ID de vértice).

Estágio do Sombreador de Vértice

O estágio do Sombreador de Vértice (VS) processa vértices, normalmente realizando operações como transformações, aplicação de capas e iluminação. Um sombreador de vértice usa um único vértice de entrada para produzir um vértice de saída. Operações por vértice individuais, como Transformações, Aplicação de Capa, Metamorfose e Iluminação por Vértice.

  • Entrada

    Um único vértice, com valores VertexID e InstanceID gerados pelo sistema. Cada vértice de entrada de sombreador de vértice pode ser composto de até 16 vetores de 32 bits (até 4 componentes cada).

  • Saída

    Um único vértice. Cada vértice de saída pode ser composto de até 16 vetores de 4 componentes de 32 bits.

Estágio do Sombreador de Envoltória

O estágio de Sombreador Hull (HS) é um dos estágios de mosaico, que divide uma única superfície de um modelo em vários triângulos com eficiência. Um sombreador hull é chamado uma vez por patch e transforma os pontos de controle de entrada que definem uma superfície de ordem baixa em pontos de controle que formam um patch. Ela também faz alguns cálculos por patch para fornecer dados para o estágio Tessellator (TS) e o estágio do sombreador de domínio (DS).

  • Entrada

    Entre 1 e 32 pontos de controle de entrada, que juntos definem uma superfície de ordem baixa.

  • Saída

    Entre 1 e 32 pontos de controle de saída, que juntos formam um patch. O sombreador hull declara o estado para o estágio de Mosaico (TS), incluindo o número de pontos de controle, o tipo da face do patch e o tipo de particionamento a ser usado ao criar o mosaico.

Estágio do Mosaico

O estágio de Mosaico (TS) cria um padrão de amostragem do domínio que representa o patch de geometria e gera um conjunto de objetos menores (triângulos, os pontos ou linhas) que se conectam a essas amostras.

  • Entrada

    O mosaico opera uma vez por patch usando os fatores de mosaico (que especificam o quão delicadamente o domínio será transformado em mosaico) e o tipo de particionamento (que especifica o algoritmo usado para dividir um patch) que são transmitidos do estágio de sombreador hull.

  • Saída

    O mosaico gera coordenadas uv (e, opcionalmente, w) e a topologia de superfície para o estágio do sombreador de domínio.

Estágio do Sombreador de Domínio

O estágio do Sombreador de Domínio (DS) calcula a posição de vértice de um ponto subdividido no patch saída; ele calcula a posição do vértice que corresponde a cada amostra de domínio. Um sombreador de domínio é executado uma vez por ponto de saída do estágio de mosaico e tem acesso somente leitura às constantes do patch de saída, ao patch de saída do sombreador e às coordenadas UV de saída do estágio de mosaico.

  • Entrada

    Um sombreador de domínio consome pontos de controle de saída do estágio de Sombreador Hull (HS). As saídas do sombreador hull incluem: pontos de controle, dados da constante de patch, e fatores de mosaico (os fatores de mosaico podem incluir os valores usados pelo gerador de mosaico de função fixa, bem como os valores brutos, antes do arredondamento por mosaico inteiro, o que facilita o geomorfismo, por exemplo). Um sombreador de domínio é chamado uma vez por coordenadas de saída do estágio de Mosaico (TS).

  • Saída

    O estágio de Sombreador de Domínio (DS) gera a posição de vértice de um ponto subdividido no patch de saída.

Estágio do Sombreador de Geometria

O estágio do Sombreador de Geometria (GS) processa primitivos inteiros: triângulos, linhas e pontos, juntamente com seus vértices adjacentes. Ele suporta amplificação e cancelamento de amplificação de geometria. Ele é útil para algoritmos incluindo expansão de sprites de ponto, sistemas de partículas dinâmicas, geração de pele/barbatanas, geração de volume de sombra, passagem única de renderização para Cubemap, troca de material por primitivo, a configuração de material por primitivo — incluindo geração de coordenadas baricêntricas como dados primitivos para que um sombreador de pixel possa executar a interpolação de atributo personalizada.

  • Entrada

    Ao contrário de sombreadores de vértice que operam em um único vértice, as entradas do sombreador de geometria são os vértices de um primitivo completo (três vértices para triângulos, dois vértices para linhas ou um único vértice para ponto).

  • Saída

    O estágio de sombreador de geometria (GS) é capaz de gerar vários vértices formando uma única topologia selecionada. As topologias de saída do sombreador de geometria disponíveis são tristrip, linestrip, e pointlist. O número de primitivos emitidos pode variar livremente dentro de qualquer chamada do sombreador de geometria, embora o número máximo de vértices que podem ser emitidos deva ser declarado estaticamente. Os tamanhos de faixa emitidos a partir de uma chamada de sombreador de geometria podem ser arbitrários, e novas faixas podem ser criadas por meio da função HLSL RestartStrip.

Estágio da Saída de Fluxo

O estágio saída de fluxo (SO) gera continuamente (ou transmite) dados de vértice do estágio ativo anterior para um ou mais buffers na memória. Os dados transmitidos para a memória podem ser reenviados para o pipeline como dados de entrada ou lidos pela CPU.

  • Entrada

    Dados de vértice de um estágio de pipeline anterior.

  • Saída

    O estágio de Saída de Fluxo (SO) emite continuamente (ou transmite) dados de vértice do estágio ativo anterior, como o estágio de Sombreador de Geometria (GS), para um ou mais buffers na memória. Se o estágio de Sombreador de Geometria (GS) estiver inativo, e o estágio de Saída de Fluxo (SO) estiver ativo, ele gera continuamente dados de vértice do estágio de Sombreador de Domínio (DS) para buffers na memória (ou se o DS também estiver inativo, do estágio do Sombreador de Vértice (VS)).

Estágio do Rasterizador

O estágio do Rasterizador (RS) recorta primitivos que não estão em exibição, prepara-os para o estágio de Sombreador de Pixel (PS) e determina como chamar os sombreadores de pixel. Converte informações de vetor (compostas de formas ou primitivos) em uma imagem de rasterização (composta de pixels) para fins de exibição de gráficos 3D em tempo real.

  • Entrada

    Presume-se que os vértices (x, y, z, w) que estão entrando no estagio de rasterizador estejam o espaço de recorte homogêneo. Nesse espaço de coordenadas, o eixo X aponta para a direita, Y aponta para cima, Z aponta para longe da câmera.

  • Saída

    Os pixels reais que precisam ser renderizados. Inclui alguns atributos de vértice para uso em interpolação pelo sombreador de pixel.

Estágio do Sombreador de Pixel

O estágio de Sombreador de Pixel (PS) recebe dados interpolados para uma primitiva e gera dados por pixel, como cor.

  • Entrada

    Quando o pipeline é configurado sem um sombreador de geometria, um sombreador de pixel é limitado a 16 entradas de 32 bits de 4 componentes. Caso contrário, um sombreador de pixel pode levar até 32 entradas de 32 bits de 4 componentes. Os dados de entrada de sombreador de pixel incluem atributos de vértice (que podem ser interpolados com ou sem correção de perspectiva) ou podem ser tratados como constantes por primitivo. As entradas do sombreador de pixel são interpoladas dos atributos de vértice do primitivo que está sendo rasterizado, com base no modo de interpolação declarado. Se um primitivo for recortado antes da varredura, o modo de interpolação também será aplicado durante o processo de recorte.

  • Saída

    Um sombreador de pixel pode gerar até 8 cores de 4 componentes de 32 bits, ou nenhuma cor se o pixel for descartado. Os componentes de registro de saída de sombreador de pixel devem ser declarados antes que possam ser usados; uma máscara de gravação de saída distinta é permitida para cada registro.

Estágio da Fusão de Saída

O estágio de OM (Fusão de Saída) combina vários tipos de dados de saída (valores de sombreador de pixel, informações de profundidade e estêncil) com o conteúdo do destino de renderização e buffers de profundidade/estêncil para gerar o resultado final do pipeline.

  • Entrada

    As entradas de fusão de saída são o estado do pipeline, os dados de pixel gerados pelos sombreadores de pixel, o conteúdo dos destinos de renderização e o conteúdo dos buffers de profundidade/estêncil.

  • Saída

    A cor do pixel renderizado final.