Popraw mnie, jeśli się mylę, ale zarówno zadania modułu cieniowania geometrii, jak i modułu cieniowania teselacji mają generować wierzchołki na potoku graficznym. Chciałbym wiedzieć, czym się różnią i kiedy powinienem używać jednego nad drugim?
shaders
hlsl
geometry
tessellation
Cezar
źródło
źródło
Odpowiedzi:
Właściwie nie, „zadaniem” modułu cieniującego geometrię (GS) jest ocena pierwotna.
Programy cieniujące geometrię mogą być mozaikowane, ale są one ograniczone przez a) górne granice wewnątrz procesu dotyczące liczby elementów wyjściowych oraz b) wykonanie w ramach jednego modułu cieniującego ... oczywiście wystąpienie modułu cieniującego rozwiązuje drugi problem, ale ogólne moduły cieniujące geometrię są bardziej skuteczne w pierwotnej ocenie i / lub interpolacji wartości niż w teselacji.
Dla porównania, shadery teselacji (TS) zostały wprowadzone specjalnie do wykonywania zagęszczenia geometrii, dzięki czemu działają dobrze, są odporne na coraz szerszą gamę algorytmów (zamierzone) i są mniej ograniczone przez bufory ograniczone wyjściami.
Daniel Rákos ma dobry artykuł na temat ewolucji GS / TS: Historia teselacji sprzętu
Kiedy zastosować, jest to przypadek „użyj odpowiedniego narzędzia do zadania”, a oto jak: Zbuduj rurociąg wstępny bez tesselatora, aby uzyskać prymitywy poprawnie oceniające w VS / GS / FS. Rozdziel zakres teselacji opartej na widoku lub scenie, a następnie wstaw TS przed GS, aby zagęścić prymitywy, które są następnie przekazywane do już zaprojektowanego GS. Jeśli chcesz wypróbować inny TS, zbuduj alternatywę i zamień ją na potok ... możesz nawet użyć instancji GS, aby dynamicznie wybrać odpowiedni TS na podstawie właściwości prymitywu!
źródło