Estágio de saída de fluxo(SO)

O estágio de 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 recirculados de volta para o pipeline como dados de entrada ou lidos da CPU.

Finalidade e usos

Diagrama da localização do estágio de saída de fluxo no pipeline

O estágio de saída de fluxo transmite dados primitivos do pipeline para a memória em seu caminho para o rasterizador. Os dados do estágio anterior podem ser transmitidos para a memória e/ou passados para o rasterizador. Os dados transmitidos para a memória podem ser recirculados de volta para o pipeline como dados de entrada ou lidos da CPU.

Os dados transmitidos para a memória podem ser lidos de volta no pipeline em uma passagem de renderização subsequente ou podem ser copiados para um recurso de preparo (para que possam ser lidos pela CPU). A quantidade de dados transmitidos pode variar; O Direct3D foi projetado para lidar com os dados sem a necessidade de consultar (a GPU) sobre a quantidade de dados gravados.>

Há duas maneiras de alimentar dados de saída de fluxo no pipeline:

  • Os dados de saída de fluxo podem ser realimentados no estágio IA (Input Assembler).
  • Os dados de saída de fluxo podem ser lidos por sombreadores programáveis usando funções Load .

Entrada

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

Saída

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

Quando uma faixa de triângulo ou linha é vinculada ao estágio IA (Assembler de Entrada), cada faixa é convertida em uma lista antes de ser transmitida. Os vértices são sempre escritos como primitivos completos (por exemplo, 3 vértices de cada vez para triângulos); primitivos incompletos nunca são transmitidos. Os tipos primitivos com adjacência descartam os dados de adjacência antes de transmitir os dados para fora.

O estágio de saída de fluxo suporta até 4 buffers simultaneamente.

  • Se você estiver transmitindo dados para vários buffers, cada buffer só poderá capturar um único elemento (até 4 componentes) de dados por vértice, com um passo de dados implícito igual à largura do elemento em cada buffer (compatível com a maneira como buffers de elemento único podem ser associados para entrada em estágios de sombreador). Além disso, se os buffers tiverem tamanhos diferentes, a gravação será interrompida assim que qualquer um dos buffers estiver cheio.
  • Se você estiver transmitindo dados em um único buffer, o buffer poderá capturar até 64 componentes escalares de dados por vértice (256 bytes ou menos) ou o passo de vértice poderá ter até 2048 bytes.

Pipeline de elementos gráficos