Zrobiłem uczciwy udział w programowaniu gier 3D dla mojego (byłego) pracodawcy, a także we własnych silnikach niestandardowych dla moich niezależnych gier.
Początkowo zacząłem od Direct3D 9 i D3DX9, które prawie wszystko dla mnie zrobiły i nie wymagały ode mnie myślenia w kategoriach shaderów.
Potem napisałem swoje pierwsze shadery Direct3D 9, ale najczęściej używałem jednego bardzo prostego shadera do wszystkiego, co zrobiłem.
W najnowszej wersji silnika gry przeniosłem się na Direct3D 11 i dzięki temu stworzyłem wiele shaderów. Zrobiłem skórowanie na GPU, cząstki obliczone na GPU, mnóstwo efektów świetlnych i przetwarzania końcowego, wszystko w GPU. Naprawdę fajne rzeczy.
Do tej pory używałem tylko shaderów wierzchołków i pikseli / fragmentów. Chociaż wciąż jest wiele rzeczy, których jeszcze nie zrobiłem, uważam, że mam solidną wiedzę na temat tego, co robią shadery wierzchołków i pikseli / fragmentów oraz jak to wszystko pasuje do całego potoku 3D.
Nadążając za nowszymi wersjami, zainteresowałem się nowszymi etapami shaderów. Oznacza to, że Shadery Geometrii, a nawet nowsze, Shadery Hull i Domain.
Nigdy nie korzystałem z tych etapów, ale z tego, co wiem, moduł cieniujący Geometria, jeśli jest włączony, jest uruchamiany po module cieniującym wierzchołków, raz dla każdego przekształconego wierzchołka (lub raz dla elementu pierwotnego?) I pozwala odrzucić wierzchołki (i elementy podstawowe?) i utwórz nowe (które, jak sądzę, wrócą do początku potoku?).
Domyślam się, że głównym zastosowaniem modułu cieniującego geometrię byłoby programowe generowanie geometrii w GPU. Częstym zastosowaniem byłoby tworzenie quadów billboardowych w oparciu o pojedynczy wierzchołek, ale tak naprawdę nie wizualizuję wielu innych typowych scenariuszy oprócz generowania fraktali i innych rzeczy, które można wygenerować w 100% programowo.
Jeśli chodzi o shadery Hull i Domain, wydaje się, że są one związane z teselacją (tworzenie gładszych powierzchni z szorstkich powierzchni?) I muszą być używane razem, czy wcale. Termin „łatka” również wydaje się tutaj powszechny.
Czy ktoś chciałby mi wyjaśnić w praktyce, do czego służą te nowe moduły cieniujące, jak pasują do potoku 3D iw jakich przypadkach powinienem rozważyć ich użycie?