Dlaczego mapowanie cieni jest standardem?

41

Chociaż z zawodu jestem programistą, prawie wcale nie dotknąłem rozwoju gier. Od jakiegoś czasu mam to pytanie, a teraz, gdy zastanawiam się nad rozwojem gier, pomyślałem, że to dobry moment, aby zapytać.

Dlaczego mapowanie cieni wydaje się być wyłącznym sposobem, w jaki gry wykorzystują cienie? Mówiąc wprost, wygląda okropnie. Nawet nowoczesne gry z maksymalnymi ustawieniami cienia mają postrzępione cienie blokowe, które są bardzo rozpraszające.

Doom 3, stworzony 11 lat temu, wykorzystywał woluminy cienia, które wyglądały znacznie lepiej niż jakakolwiek implementacja mapy cienia, jaką kiedykolwiek widziałem, w tym gry AAA wydane w tym samym tygodniu, w którym zamieszczane jest to pytanie. Mody innych producentów do Doom 3 nawet złagodziły krawędzie cieni, czyniąc je jeszcze bardziej imponującymi wizualnie.

Czy są jakieś problemy techniczne lub ograniczenia związane z wdrażaniem takich rzeczy, jak woluminy cienia? Czy mapy cienia są tak łatwe do wdrożenia, że ​​deweloperzy nawet nie biorą pod uwagę niczego innego?

Jedyne informacje, jakie udało mi się znaleźć na ten temat, to to, że wielokąty, które składają się na objętości, mogą być dość duże, stając się coraz bardziej wymagające. Być może woluminy cienia mają znacznie wyższe wymagania systemowe, ale jeśli tak, to w jaki sposób udało im się ich użyć w 2004 roku?

To pytanie nie jest specyficzne dla mapowania cienia w porównaniu do objętości cienia, są to po prostu jedyne 2, które widziałem w pełnych produktach i po prostu nie byłem w stanie znaleźć wielu informacji na temat innych technik.

gnoblin
źródło
3
Tylko uwaga - Doom 3 był wyjątkowo intensywny jak na swój dzień i nadal jest niepewny nawet na niektórych nowoczesnych systemach (i nie mówię o zintegrowanych procesorach graficznych, nawet jeśli nie byłoby to tutaj niewłaściwe; jasne, najprawdopodobniej ze względu na swój wiek, ale ...). Widziałem, jak działa na wielu komputerach, na których cienie i oświetlenie po prostu nie działały . Oczywiście w grze występuje wiele zawiłości, a gra Doom 3 jest dobrym przykładem tego, jak trudna jest realistyczna grafika w stosunku do wielu konfiguracji komputerowych.
Luaan
1
Doom 3 wyprzedzał lata, gdy zaczął się rozwój (przynajmniej biorąc pod uwagę wybór graficznego interfejsu API). Miał kilka backendów do obsługi generacji generacji sprzętu przed Shaderem Model 2.0, co oznaczało, że około 1/4 silnika jest ledwo przenośna (poprzedza nawet GLSL), a pozostałe 3/4 to ścieżki kodowe dla starożytnych rozszerzeń sprzętowych NV i ATI które były nieistotne do czasu wydania gry. Wybór tomów wzornikowych był chyba najmniejszym z jego problemów.
Andon M. Coleman,

Odpowiedzi:

48

Mapowanie cienia i cienie matrycowe (objętości cieni) są zdecydowanie dużymi dwoma, jak już wspomniałeś, więc pozostanę przy porównywaniu tych dwóch. A ponieważ wskazałeś najbardziej oczywiste wady mapowania cieni i zalety cieni wzorniczych, zrobię coś przeciwnego.

Niedociągnięcia szablonu

  1. Cienie pasują do kształtu siatki odlewniczej. Jest to bardzo ograniczające i jest prawdopodobnie największym technicznym powodem, aby nie używać szablonów . Liście drzew, krzewy, ogrodzenia z drutu, rozdarcia w tkaninie i inne popularne elementy rzucające cienie używają przezroczystości alfa do definiowania kształtu obiektu. Ale ponieważ cienie szablonów pasują do siatki, a nie ściśle do widocznych części tekstury na siatce, nie można ich używać do takich obiektów. Na przykład kępka liści na drzewie będzie zwykle teksturą klastra liści na quadzie. Cienie szablonów byłyby w stanie pokazać cień samego kwadratu (i będzie miał z tym problemy, ponieważ quad nie jest zamkniętą siatką, ale jest to drobny szczegół, który pominę w tej odpowiedzi, ponieważ jest to ogólnie można obejść).
  2. Nie można robić dokładnych miękkich cieni. Zauważyłeś, że Doom 3 został zmodyfikowany, aby umożliwić miękkie cienie. Ta wersja przynajmniej używa mapowania cieni dla miękkich cieni. Widziałem również techniki ekranowania przestrzeni dla zmiękczania twardych cieni, ale są one podatne na różnego rodzaju problemy.
  3. Nie można robić cieni na obiektach przezroczystych. Istnieją obejścia tego problemu - renderowanie cieni dla obiektów przezroczystych w osobnych przejściach, a następnie ich komponowanie. Ale oprócz trudnych obejścia, charakter matryca cieni jest taka, że każdy piksel na ekranie jest zarówno w cieniu, czy nie. Jest to również powód braku miękkich cieni, jak wspomniano wcześniej.
  4. Ogólnie preferowana i najsolidniejsza implementacja cieni szablonów, często nazywana „odwróceniem Carmacka”, jest faktycznie opatentowana, jak zauważył Angew w komentarzach. (Nie opatentowany przez Carmacka; musiał go obejść dla otwartej wersji Doom 3)

Na rzecz mapowania cieni

Oprócz tego, że nie mam ograniczeń wymienionych specjalnie dla cieni wzorników, istnieje kilka dodatkowych zalet mapowania cieni:

  1. Skalowalność Chociaż mapowanie cieni nie jest ani tanie, ani idealne ( ed: ale cieniowanie szablonów też nie jest tanie ), stosunkowo łatwo jest wymienić wierność wydajności, zmieniając rozdzielczość map cieni lub zmieniając filtrowanie cieni. Ułatwia to dostrojenie jakości / wydajności cienia dla różnych systemów. Jak zauważyłeś, często nie jest to idealne, ale wiele z tego będzie zależeć od spostrzegawczości gracza i rozdzielczości, w którą grają (wyższa rozdzielczość ekranu ułatwi dostrzeżenie blokowania cienia mapowanie). Niektóre gry AAA (np. Fracture ) wykonują niesamowitą robotę z mapowaniem cieni, po prostu wybierając odpowiednie filtry i dostrajając odpowiednie pokrętła, podczas gdy wiele po prostu uderza go i mówi „wystarczająco dobrze”.
  2. Ciasteczka (teksturowane cienie): Dodaj teksturę reflektora lub witraży, a będziesz mógł emulować wszystkie rodzaje prawdziwych źródeł światła. Nawiasem mówiąc, jest to również możliwe w przypadku cieni wzornikowych, ale i tak obejmuje prawie całą konfigurację odwzorowywania cieni (te same matryce projekcji, które są używane do rzutowania tekstury światła na obiekty, są tymi używanymi do odwzorowywania cieni).
  3. Przejrzyste cienie: Większość gier nie próbuje tego zbyt wiele, ale przezroczyste cienie są możliwe przy mapowaniu cienia. Nie mam na myśli tylko wycinków alfa, takich jak drzewa i ogrodzenia, jak wspomniałem wcześniej, ale mam na myśli częściowo przezroczyste cienie, takie jak dym i kurz.

Żadna z tych list nie jest wyczerpująca.

Tak więc, chociaż twoje obserwacje dotyczące mapowania cieni i cieni wzorników są prawidłowe, niedociągnięcia cieni wzorcowych stanowią przeszkodę dla wielu pożądanych efektów, a mapowanie cieni ma kilka zalet.

Jibb Smart
źródło
1
Ahhh, nie wziąłem pod uwagę większości tych rzeczy, a przezroczyste tekstury, takie jak liście, są dość dużym problemem. Dziękuję za odpowiedź!
gnoblin
1
Nie ma problemu :) Niektóre z nich łatwo przeoczyć!
Jibb Smart
8
Powiedziałbym, że jednym dodatkowym problemem związanym z woluminami cieni jest to, że przejście przez głębokość nie lubi aparatu znajdującego się w cieniu, a funkcja zaniku głębokości jest opatentowana.
Przywróć Monikę
Dobra uwaga, Angew. Dodałem to do powodów, aby nie używać cieni wzorcowych, i wyjaśniłem główny powód, aby nie używać cieni wzorcowych jako „największy techniczny powód”, aby ich nie używać, ponieważ problem patentowy mógłby sam w sobie stanowić przeszkodę.
Jibb Smart