Estágios de pipeline (Direct3D 10)

O pipeline programável do Direct3D 10 foi projetado para gerar gráficos para aplicativos de jogos em tempo real. O diagrama a seguir mostra o fluxo de dados da entrada para a saída por meio de cada uma das fases programáveis.

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

Todos os estágios podem ser configurados usando a API. Estágios com núcleos de sombreador comuns (os blocos retangulares arredondados) são programáveis usando a linguagem de programação HLSL. Como você verá, isso torna o pipeline extremamente flexível e adaptável. A finalidade de cada uma das fases está listada abaixo.

  • Estágio Input-Assembler – o estágio de assembler de entrada é responsável por fornecer dados (triângulos, linhas e pontos) para o pipeline.
  • Estágio do sombreador de vértice – Esse estágio processa vértices, normalmente realizando operações como transformações, aplicação de capas e iluminação. Um sombreador de vértice sempre usa um único vértice de entrada para produzir um vértice de saída.
  • Estágio geometry-shader – o estágio de sombreador de geometria processa primitivos inteiros. Sua entrada é uma primitiva completa (que é três vértices para um triângulo, dois vértices para uma linha ou um único vértice para um ponto). Além disso, cada primitivo também pode incluir os dados de vértice para quaisquer primitivos adjacentes à borda. Isso pode incluir no máximo três vértices adicionais para um triângulo ou dois vértices adicionais para uma linha. O sombreador de geometria também dá suporte à amplificação e cancelamento de amplificação de geometria. Dado um primitivo de entrada, o sombreador de geometria pode descartar o primitivo ou emitir um ou mais primitivos novos.
  • Estágio de saída de fluxo – o estágio de saída de fluxo foi projetado para transmitir dados primitivos do pipeline para a memória a caminho do rasterizador. Os dados podem ser transmitidos para fora do rasterizador e/ou passados para ele. Os dados transmitidos para a memória podem ser reenviados para o pipeline como dados de entrada ou lidos pela CPU.
  • Estágio do rasterizador – o rasterizador é responsável por recortar primitivos, preparar primitivos para o sombreador de pixel e determinar como invocar sombreadores de pixel.
  • Estágio do sombreador de pixel – Esse estágio recebe dados interpolados para uma primitiva e gera dados por pixel, como cor.
  • Estágio de fusão de saída – o estágio de fusão de saída é responsável por combinar vários tipos de dados de saída (valores de sombreador de pixel, informações de profundidade e estêncil) com o conteúdo dos buffers de destino e profundidade/estêncil de renderização para gerar o resultado final do pipeline.

Guia de programação para Direct3D 10