Compartilhar via


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

O estágio DS (Sombreador de Domínio) calcula a posição do vértice de um ponto subdividido no patch de 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 do mosaico e tem acesso somente leitura ao patch de saída do sombreador do casco e às constantes do patch de saída do sombreador e às coordenadas UV de saída do estágio do mosaico.

Finalidade e usos

O estágio Domain Shader (DS) gera a posição do vértice de um ponto subdividido no patch de saída, com base na entrada do estágio Hull Shader (HS) e do estágio Tessellator (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 HS (Sombreador de Casco). As saídas do sombreador de casco incluem:
    • Pontos de controle.
    • Corrigir dados constantes.
    • Fatores de mosaico. Os fatores de mosaico podem incluir os valores usados pelo mosaico de função fixa, bem como os valores brutos (antes do arredondamento por mosaico inteiro, por exemplo), o que facilita a geomorfoseação, por exemplo.
  • Um sombreador de domínio é invocado uma vez por coordenada de saída do estágio TS (Tessellator).

Saída

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

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

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