Compartilhar via


Estágio de sombreador de domínio (DS)

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.

Finalidade e usos

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, com base na entrada a partir do estágio de Sombreador Hull (HS) e o estágio de Mosaico (TS).

diagrama do estágio do sombreador de domínio

Entrada

  • Um sombreador de domínio consome pontos de controle de saída do estágio de Sombreador Hull (HS). As saídas de sombreador hull incluem:
    • Pontos de controle.
    • Dados da constante do patch.
    • 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 de números inteiros, por exemplo), 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.

Depois que o sombreador de domínio é concluído, o mosaico é concluído e os dados de pipeline continuam para o próximo estágio de pipeline, como o estágio do Sombreador de Geometria (GS) e o estágio do Sombreador de Pixel (PS). Um sombreador de geometria que espera primitivos com adjacência (por exemplo, 6 vértices por triângulo) não é válido quando mosaico está ativo (isso resulta em um comportamento indefinido, sobre o qual a camada de depuração emitirá um aviso).

Exemplo

void main( out    MyDSOutput result, 
           float2 myInputUV : SV_DomainPoint, 
           MyDSInput DSInputs,
           OutputPatch<MyOutPoint, 12> ControlPts, 
           MyTessFactors tessFactors)
{
     ...

     result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}

Pipeline de elementos gráficos