Como indexar vários fluxos de saída
No modelo de sombreador 5, um sombreador de geometria pode dar suporte a até 4 fluxos separados. Isso significa que um único sombreador pode gerar entre um e quatro fluxos de saída, dependendo do número de fluxos declarados.
Para indexar vários fluxos de saída
Defina um fluxo de dados usando um tipo de modelo de fluxo.
inout PointStream<OutVertex1> myStream1,
Defina um segundo fluxo de dados usando um tipo de modelo de fluxo.
inout PointStream<OutVertex2> myStream2 )
Gerar dados para fluxos (ou ambos) usando as funções intrínsecas do objeto de saída de fluxo (como Append ou RestartStrip).
void MyGS( InVertex verts[2], inout PointStream<OutVertex1> myStream1, inout PointStream<OutVertex2> myStream2 ) { OutVertex1 myVert1 = TransformVertex1( verts[0] ); OutVertex2 myVert2 = TransformVertex2( verts[1] ); myStream1.Append( myVert1 ); myStream2.Append( myVert2 ); }
Ao usar um único fluxo de saída, você pode emitir faixas de triângulo, faixas de linha ou listas de pontos. Quando você armazena faixas de triângulo e linha no buffer de fluxo, elas são expandidas para listas de triângulos e linhas, respectivamente. Você também pode rasterizar um fluxo e não enviá-lo para um buffer de memória.
Ao usar vários fluxos de saída, todos os fluxos devem conter pontos e até um fluxo de saída pode ser enviado para o rasterizador. Mais comumente, um aplicativo não rasterizará nenhum fluxo.
Depois de transmitir dados para um buffer, você pode usar esses dados para renderizar qualquer tipo primitivo, não apenas o tipo primitivo que você usou para preencher o buffer.
A saída total do sombreador de geometria é limitada a 1024 escalares. Quando existem vários fluxos, o número de escalares é calculado do maior tipo de fluxo multiplicado pela contagem máxima de vértice.
Diferenças entre o modelo de sombreador 4 e o modelo de sombreador 5:
Modelo de sombreador 4:
- O número máximo de escalares para saída de fluxo é 64.
- A máscara de registro por componente deve corresponder ao intervalo de índice.
- O número máximo de escalares para saída de fluxo é 128.
- A máscara de registro por componente não precisa corresponder ao intervalo de índice.
- A indexação dinâmica de saídas deve ser legal em todos os fluxos.
- Os modos de interpolação não precisam corresponder aos fluxos.