Compartilhar via


Estágio de tessellator (TS)

O estágio Tessellator (TS) cria um padrão de amostragem do domínio que representa o patch de geometria e gera um conjunto de objetos menores (triângulos, pontos ou linhas) que conectam essas amostras.

Finalidade e usos

O diagrama a seguir destaca os estágios do pipeline de gráficos Direct3D.

Diagrama do pipeline do Direct3D 11 que destaca os estágios de sombreador de casco, mosaico e sombreador de domínio

O diagrama a seguir mostra a progressão pelos estágios de mosaico.

Diagrama de progressão de mosaico

A progressão começa com a superfície de subdivisão de baixo detalhe. Em seguida, a progressão destaca o patch de entrada com o patch de geometria correspondente, amostras de domínio e triângulos que conectam essas amostras. A progressão finalmente destaca os vértices que correspondem a essas amostras.

O runtime do Direct3D dá suporte a três estágios que implementam o mosaico, que converte superfícies de subdivisão de baixo detalhe em primitivos de mais detalhes na GPU. A mosaico de mosaico (ou quebra) superfícies de alta ordem em estruturas adequadas para renderização.

Os estágios de mosaico trabalham juntos para converter superfícies de ordem superior (que mantêm o modelo simples e eficiente) em muitos triângulos para renderização detalhada dentro do pipeline de gráficos do Direct3D.

O mosaico usa a GPU para calcular uma superfície mais detalhada a partir de uma superfície construída a partir de patches quad, patches triangulares ou isolinhas. Para aproximar a superfície de alta ordem, cada patch é subdividido em triângulos, pontos ou linhas usando fatores de mosaico. O pipeline de gráficos Direct3D implementa o mosaico usando três estágios de pipeline:

  • Estágio HS (Sombreador de Casco) - Um estágio de sombreador programável que produz um patch de geometria (e constantes de patch) que correspondem a cada patch de entrada (quad, triângulo ou linha).
  • Estágio de tesselador (TS) - Um estágio de pipeline de função fixa que cria um padrão de amostragem do domínio que representa o patch de geometria e gera um conjunto de objetos menores (triângulos, pontos ou linhas) que conectam essas amostras.
  • Estágio DS (Sombreador de Domínio) – um estágio de sombreador programável que calcula a posição do vértice que corresponde a cada exemplo de domínio.

Ao implementar o mosaico no hardware, um pipeline de gráficos pode avaliar modelos de detalhes mais baixos (menor contagem de polígonos) e renderizar com mais detalhes. Embora o mosaico de software possa ser feito, o mosaico implementado pelo hardware pode gerar uma quantidade incrível de detalhes visuais (incluindo suporte para mapeamento de deslocamento) sem adicionar detalhes visuais aos tamanhos do modelo e paralisar as taxas de atualização.

Benefícios da tesselação:

  • O mosaico economiza muita memória e largura de banda, o que permite que um aplicativo renderize superfícies mais detalhadas de modelos de baixa resolução. A técnica de mosaico implementada no pipeline de gráficos do Direct3D também dá suporte ao mapeamento de deslocamento, que pode produzir quantidades impressionantes de detalhes de superfície.
  • O mosaico dá suporte a técnicas de renderização escalonável, como níveis de detalhes contínuos ou dependentes de exibição, que podem ser calculados em tempo real.
  • A tesselação melhora o desempenho executando cálculos caros com frequência mais baixa (fazendo cálculos em um modelo de menor detalhe). Isso pode incluir cálculos de mistura usando formas de mesclagem ou alvos de transformação para animação realista ou cálculos físicos para detecção de colisão ou dinâmica de corpo mole.

O pipeline de gráficos Direct3D implementa o mosaico no hardware, que descarrega o trabalho da CPU para a GPU. Isso pode levar a melhorias de desempenho muito grandes se um aplicativo implementar um grande número de destinos de transformação e/ou modelos de skinning/deformação mais sofisticados.

O mosaico é um estágio de função fixa inicializado pela associação de um sombreador de casco ao pipeline. (ver Como inicializar o estágio do mosaico). O objetivo do estágio de mosaico é subdividir um domínio (quad, tri ou linha) em muitos objetos menores (triângulos, pontos ou linhas). O mosaico de mosaico de um domínio canônico em um sistema de coordenadas normalizado (zero para um). Por exemplo, um domínio quad é tesselado para um quadrado unitário.

Fases no estágio Tessellator (TS)

O estágio Tessellator (TS) opera em duas fases:

  • A primeira fase processa os fatores de mosaico, corrigindo problemas de arredondamento, lidando com fatores muito pequenos, reduzindo e combinando fatores, usando aritmética de ponto flutuante de 32 bits.

  • A segunda fase gera listas de pontos ou topologias com base no tipo de particionamento selecionado. Essa é a tarefa principal do estágio de mosaico e usa frações de 16 bits com aritmética de ponto fixo. A aritmética de ponto fixo permite a aceleração de hardware, mantendo uma precisão aceitável. Por exemplo, dado um patch de 64 metros de largura, essa precisão pode colocar pontos em uma resolução de 2 mm.

    Tipo de particionamento Intervalo
    Fractional_odd [1...63]
    Fractional_even Intervalo de TessFactor: [2..64]
    Inteiro Intervalo de TessFactor: [1..64]
    Pow2 Intervalo de TessFactor: [1..64]

     

O mosaico é implementado com dois estágios de sombreador programáveis: um sombreador de casco e um sombreador de domínio. Esses estágios de sombreador são programados com código HLSL definido no modelo de sombreador 5. Os destinos do sombreador são: hs_5_0 e ds_5_0. O título cria o sombreador e, em seguida, o código do hardware é extraído de sombreadores compilados passados para o runtime quando os sombreadores são associados ao pipeline.

Ativar/desativar o mosaico

Habilite o mosaico criando um sombreador de casco e vinculando-o ao estágio do sombreador de casco (isso configura automaticamente o estágio do sombreador). Para gerar as posições finais de vértice dos patches tesselados, você também precisará criar um sombreador de domínio e associá-lo ao estágio do sombreador de domínio. Depois que o mosaico estiver habilitado, a entrada de dados para o estágio IA (Input Assembler) deverá ser dados de patch. A topologia do assembler de entrada deve ser uma topologia constante de patch.

Para desabilitar o mosaico, defina o sombreador de casco e o sombreador de domínio como NULL. Nem o estágio GS (Sombreador de Geometria) nem o estágio SO (Saída de Fluxo) podem ler pontos de controle de saída do sombreador de casco ou dados de patch.

Entrada

O mosaico opera uma vez por patch usando os fatores de mosaico (que especificam a precisão com que o domínio será mosaico) e o tipo de particionamento (que especifica o algoritmo usado para dividir um patch) que são passados do estágio do sombreador de casco.

Saída

O mosaico gera coordenadas uv (e, opcionalmente, w) e a topologia de superfície para o estágio do sombreador de domínio.

Pipeline de elementos gráficos