Archiwum Dziennik twórców Hot News Pillars of Eternity

Grafika i renderowanie

30 maja 2014

W aktualizacji nr 79 Adam Brennecke omawia kwestie związane z grafiką, renderowaniem i rozmaitami efektami, które twórcy stostują dla poprawy wyglądu i atmosfery gry. Można także obejrzeć ciekawy filmik demonstracyjny oraz enigmatyczny screenshot, który ma pojawić się na zamkniętej prezentacji Pillars of Eternity na targach E3.

Dziennik twórców Pillars of Eternity

Aktualizacja nr 79 (28 maja 2014 r.): Graphics and Rendering

Autor: Adam Brennecke, główny programista/producent pomocniczy

Źródło

Ponad rok temu w aktualizacji nr 49 pokazaliśmy Wam pierwszy film z Pillars of Eternity. Filmik prezentował piękne scenerie Dyrwood dopełnione dynamiką światła, okluzją pikseli, dynamiką wody i wodospadu oraz cyklem dnia i nocy. W tej aktualizacji chciałbym spojrzeć na to, jak te obrazy są łączone i renderowane w grze, co obejmuje nowe funkcje renderingu, które dodaliśmy w ciągu ostatniego roku w związku z opiniami naszych darczyńców mówiącymi o tym, jak wyglądają postacie w danej scenie. Ostrzeżenie: może się zrobić technicznie!

E3

Zamierzamy zrobić przerwę w aktualizacjach przez następne trzy tygodnie, ponieważ przygotowujemy się do targów E3 w Los Angeles. Po E3 następna aktualizacja będzie dotyczyć ostatniej pozostałej pary klas, czyli Linii Frontu (barbarzyńców i wojowników).

Na targach E3 zespół zaprezentuje Pillars of Eternity na stanowisku Paradox za zamkniętymi drzwiami. By uniknąć wyjawienia tego, co będziemy prezentować, zachowamy to do momentu, w którym będzie mogli w to zagrać. Będziemy robić zdjęcia na stanowisku, ponieważ Was też chcemy w to wkręcić, a w przyszłej aktualizacji podzielimy się większą ilością screenshotów dema. Być dać Wam tego przedsmak, oto zajawka tego, co pojawi się na E3:

pe-encampment
Obozowisko

 

Renderowanie

Tła

pe-daynight
Cykl dnia i nocy

Jak wspomnieliśmy wcześniej, nasze piękne tła są renderowane z Mayi jako tła 2D. Są to bardzo duże zdjęcia, czasami kilka gigabajtów surowych danych. Zanim obrazy dostaną się do gry, uruchamiamy program kompresujący te dane. Maya renderuje tła w czterech warstwach lub “fazach”: finalnej, głębi, normalnej i albedo. Te fazy są łączone w Unity w celu dokonania okluzji per-pixel obiektów 3D i dynamicznego oświetlenia w czasie rzeczywistym. Gdy wrzucamy tła do gry, wyglądają jak płaska powierzchnia 2D. Patrząc w edytorze Unity, cały świat wygląda dziwnie krzywo. Iluzja powstaje tylko wtedy, gdy kamera prostopadła zostaje umieszczona pod idealnym kątem.

Warstwy tła
Warstwy tła

Postaci

Następnie nakładamy świat 3D na renderowane obrazy 2D. Postaci są dynamicznymi  oczkami 3D, które są animowane, a następnie renderowane do sceny z różnorodnymi materiałami i cieniami. Nasz standardowy materiał, którego używamy dla postaci, zawiera mapę normalną (dodającą drobne różnice w szczegółach powierzchni), mapę lustrzaną (dodającą połysk) i mapę albedo (dodającą podstawowe kolory). Standardowy materiał wspiera także mapę odcieni, która pozwala naszym projektantom i Tobie na dostosowanie koloru pancerza, włosów i skóry.

Istnieją shadery mogące zmieniać wygląd i klimat postaci. Na przykład mamy shader metalu dla zbroi, który dodaje dodatkowy poziom połysku i może odbijać środowisko przez mapę środowiska. Shader ubrania usuwa połysk i umożliwia grafikom postaci tworzenie strojów z bawełny, wełny i satyny. Mamy specjalne materiały jak shader emisyjny, na którego nie wpływa światło, używany dla boskich ognia, duchów, widm i okien widzianych na zdjęciach i filmikach.

Ponieważ postaci są trójwymiarowe, muszą być oświetlone nieco inaczej od obrazu tła. Używamy systemu dwukierunkowego oświetlenia. Pierwsze jest światłem kluczowym o kolorze i intensywności słońca dla scen plenerowych; może być ono modyfikowane przez cykl dnia i nocy, tak by rzucać poświatę księżycową w nocy. Drugie służy jako światło wypełniające, które używamy, by mieć pewność, że „tylna strona” postaci nie jest całkowicie ciemna. Oba światła są ustawiane z osobna dla każdej sceny w zależności od pre-renderowanych ustawień świetlnych, by dopasować kierunek światła słońca, nastrój i pożądaną atmosferę.

Poza oświetleniem kierunkowym używamy dynamicznych świateł opóźnionych, mogących wpływać na postaci i tła. Na przykład jeśli pochodnia zostaje umieszczona w scenie, oświetla ona zarówno środowisko 2D, jak i pobliskie postaci trójwymiarowe. Ponadto stosujemy je w efektach czarów; eksplozja kuli ognia emituje rozbłysk światła rozświetlający ciemne lochy.

Składanie wszystkiego razem

Po pokazaniu naszych pierwszy kilku screenshotów, spostrzegliśmy, tak jak wielu z Was, że trójwymiarowe postaci nie pasowały do renderowanej sceny 2D tak, jak mieliśmy nadzieję. Włączyliśmy więc myślenie i wymyśliliśmy nowe funkcje, włączając w to dynamiczne otoczenie i system kontroli cieniowania.

By upewnić się, że postaci pasują do środowiska, wymyśliliśmy system otoczenia pobierający kolor z teł 2D, symulujący szybki i brudny globalny model oświetlenia. Postaci pobierają subtelne odcienie kolorów w zależności od tego, gdzie stoją oraz w  jakim rodzaju otoczenia się znajdują. Jeśli postać stoi w bujnej zielonej dżungli, to przybierze ona subtelny zielony odcień ze światła odbitego od środowiska. Programiści gry kochają szybkie i łatwe metody, a system otoczenia daje nam świetne rezultaty, wpływając na wydajność renderowania tylko w niewielkim stopniu.

Otoczenie przed i po:

pe-ambient-on

Kolejną funkcją, którą ostatnio dodaliśmy by rozwiązać kwestię zakotwiczenia postaci w scenie, jest system cieniowania postaci trójwymiarowych przemierzających mroczne obszary w obrazie 2D. Nowy system pobiera próbki map niskiej rozdzielczości, która kontroluje wkład kierunkowego oświetlenia słonecznego na postaci, i aby uniknąć podwójnego cieniowania, to samo zdjęcie kontroluje wartość dynamicznej mapy cieni. W końcu dla lepszego dopasowania cieni 2D i 3D, kolorujemy dynamiczne cienie, by dopasować barwę wyrenderowanego cienia 2D (często mającego niebieską barwę).

Shadow Blending przed i po:

pe-shadow-blending-off

By wszystko razem złożyć, możemy dodać efekty post-processingu. W tej scenie dodaliśmy bardzo subtelny efekt poświaty [bloom], która wpływa zarówno na środowisko i postacie.

Mam nadzieję, że nie pogubiliście się w tej technicznej gadaninie! Mamy nadzieję, że podoba Wam się efekt końcowy i to jest dla nas ważne. Jesteśmy zadowoleni z tego, gdzie jesteśmy, ale zawsze mamy parę pomysłów na to, jak ulepszyć wygląd i jakość grafiki. Poprawianie wyglądu gry będzie procesem trwającym do jej wydania… i jeszcze dłużej. Jeśli macie jakieś pytania, zadajcie je na forum. Dzięki za czytanie!