Tessellation vs Geometry Shader


11

Correggimi se sbaglio, ma sia i lavori Geometry Shader che Tessellation Shader devono generare vertici nella pipeline grafica. Quello che vorrei sapere è come sono diversi e quando dovrei usarne uno rispetto all'altro?


6
Mi sento troppo pigro per scrivere una risposta completa, ma l'essenza di ciò è che Geometry Shader è per un livello di amplificazione fisso molto piccolo, in cui gli stadi di Tessellation sono per un'amplificazione poligonale massiccia e dinamica
MickLH,

Risposte:


14

In realtà no, il "lavoro" dello geometria shader (GS) è una valutazione primitiva.

Gli shader di geometria possono tessere, ma sono limitati da a) un limite superiore in-process sul numero di elementi di output, e b) esecuzione all'interno di un singolo shader ... ovviamente lo shader che istanzia alvia il secondo problema, ma gli shader di geometria complessivi sono più efficace nella valutazione primitiva e / o nell'interpolazione di valore di quanto non lo siano alla tassellatura.

In confronto, gli shader di tassellatura (TS) sono stati introdotti specificamente per eseguire la densificazione della geometria in modo che funzionino bene, siano robusti a una gamma sempre più ampia di algoritmi (inteso gioco di parole) e siano meno limitati dai buffer limitati all'output.

Daniel Rákos ha pubblicato un buon articolo sull'evoluzione GS / TS: Storia della tassellatura hardware

Quando applicare ciascuno è un caso di "utilizzare lo strumento giusto per il lavoro" ed ecco come: Costruire una bozza di conduttura approssimativa senza un tassellatore per ottenere una valutazione corretta dei primitivi in ​​VS / GS / FS. Scorri separatamente la tassellatura basata sulla vista o sulla scena, quindi inserisci il TS davanti al GS per densificare le primitive che vengono quindi passate al tuo GS già progettato. Se vuoi provare un TS diverso, crea un'alternativa e scambialo nella pipeline ... puoi persino usare un GS istanziato per selezionare in modo dinamico il TS giusto in base alle proprietà di una primitiva!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.