2014-08-29 13 views
11

Próbuję opracować zrozumienie potoku grafiki na wysokim poziomie. Jedną z rzeczy, która nie ma dla mnie większego sensu, jest to, dlaczego istnieje moduł cieniujący Geometry. Zarówno shadery Tesselacja, jak i geometria wydają się robić to samo. Czy ktoś może mi wytłumaczyć, co robi moduł cieniujący Geometry inaczej niż shader teselacji, który usprawiedliwia jego istnienie?Różnica między programami cieniującymi tesselacją a modułami cieniowania Geometry

Odpowiedz

18

Moduł cieniujący Tesselacja służy do zmiennej podziału na części. Ważną częścią jest informacja o sąsiedztwie, dzięki czemu można zrobić wygładzenie prawidłowo i nie likwidować luk. Możesz wykonać ograniczoną dzielność za pomocą shadera geometrii, ale to nie jest to, na co ją stać.

Szczypce do geometrii działają jako prymitywne. Na przykład, jeśli chcesz zrobić coś dla każdego trójkąta (takiego jak this), zrób to w module cieniującym geometrii. Słyszałem o wytłaczaniu objętości cienia. Istnieje również "konserwatywna rasteryzacja", w której można rozszerzyć granice trójkątów, aby każdy przecięty piksel uzyskał fragment. Przykłady są dość specyficzne dla aplikacji.

Tak, mogą również generować więcej geometrii niż dane wejściowe, ale mają też dobrą skalą , a nie. Działają świetnie, jeśli chcesz narysować cząstki i zmienić punkty w bardzo prostą geometrię. Wiele razy zaimplementowałem maszerujące kostki za pomocą shaderów geometrii. Działa wspaniale ze sprzężeniem zwrotnym transformacji, aby zapisać wynikową siatkę.

Informacje zwrotne dotyczące transformacji zostały również użyte w module cieniującym geometrii do wykonywania kolejnych operacji obliczeniowych. Jednym szczególnie użytecznym mechanizmem jest to, że kompresuje strumień dla ciebie (pakuje swoją zmienną moc wyjściową tak, że nie ma żadnych przerw w wynikowej tablicy).

Inną bardzo ważną rzeczą, którą zapewnia moduł cieniujący geometrii, jest kierowanie do warstwowych obiektów renderujących (tablic tekstur, powierzchni sześcianu, wielu rzutni), co musi zostać wykonane jako prymitywne. Na przykład możesz renderować mapy cienia dla świateł punktowych w jednym przejściu, duplikując i rzutując geometrię 6 razy na każdą z powierzchni sześcianu.

Niezupełnie pełna odpowiedź, ale miejmy nadzieję, że zawiera istotę różnic.

Zobacz także:

+1

To na pewno pomaga. Jestem też pewna, że ​​kiedy będę coraz częściej zagłębiać się w grafikę, ta odpowiedź będzie coraz bardziej sensowna, więc odniosę się do niej ponownie. Dzięki! –

Powiązane problemy