Tessellation vs Geometry Shader

11

Corrija-me se estiver errado, mas os trabalhos Geometry Shader e Tessellation Shader devem gerar vértices no Pipeline gráfico. O que eu gostaria de saber é como elas são diferentes e quando devo usar uma sobre a outra?

César
fonte
6
Estou me sentindo muito preguiçoso para escrever uma resposta completa, mas a essência do que é que Geometry Shader é para, a nível de amplificação fixo muito pequeno, onde os estágios Tessellation são para maciça, amplificação polígono dinâmico
MickLH

Respostas:

14

Na verdade não, o 'trabalho' do sombreador de geometria (GS) é uma avaliação primitiva.

Os shaders de geometria podem tesselar, mas são limitados por a) limites superiores em processo do número de elementos de saída eb) execução em um único shader ... é claro que o instanciador de shader alivia a 2ª questão, mas os shaders de geometria geral são mais eficazes na avaliação primitiva e / ou na interpolação de valor do que no mosaico.

Por comparação, os shaders de mosaico (TS) foram introduzidos especificamente para realizar a densificação da geometria, para que eles tenham um bom desempenho, sejam robustos a uma matriz cada vez maior de algoritmos (trocadilhos) e são menos limitados pelos buffers de saída.

Daniel Rákos tem um bom artigo sobre a evolução do GS / TS: História do mosaico de hardware

Quando aplicar cada um é um caso de 'use a ferramenta certa para o trabalho' e aqui está como: Construa um pipeline de rascunho bruto sem um tesselator para obter avaliações primitivas avaliando corretamente no VS / GS / FS. Escopo separadamente o mosaico baseado em exibição ou cena e insira o TS à frente do GS para densificar as primitivas que são passadas para o GS já projetado. Se você quiser experimentar um TS diferente, crie uma alternativa e troque-a no pipeline ... você pode até usar um GS instanciado para selecionar dinamicamente o TS correto, com base nas propriedades de uma primitiva!

JasonInVegas
fonte