Technologie

Technologia Voxel Global Illumination
divider

Technologia VXGI

Technologia Voxel Global Illumination (VXGI) to niesamowite osiągnięcie, umożliwiające zastosowanie w grach PC i silnikach gamingowych kolejnej generacji niezwykle realistycznego oświetlenia, cieniowania oraz efektów refleksów świetlnych.

Poprawne modelowanie oświetlenia jest pod względem obliczeń jednym z najbardziej złożonych problemów w dziedzinie grafiki. Tworząc architekturę Maxwell, naszym celem było postawienie ogromnego kroku naprzód w kwestii możliwości układu GPU na polu przeprowadzania w czasie rzeczywistym obliczeń związanych z renderowaniem niemal fotorealistycznego oświetlenia.

W prawdziwym świecie wszystkie obiekty oświetlane są przez kombinację bezpośrednich źródeł światła (fotony podróżujące bezpośrednio ze źródła światła i oświetlające dany obiekt) oraz pośrednich źródeł światła (fotony podróżujące ze źródła światła, odbijające się od jednego obiektu, a następnie padające na drugi obiekt, oświetlając go pośrednio). "Global ilumination" (GI) to określenie dla systemów oświetlenia symulujących ten efekt. Bez oświetlenia pośredniego, sceny mogą wydawać się surowe i sztuczne. Jednak, choć obliczenia związane ze światłem bezpośrednio padającym na obiekt są dosyć proste, to obliczenia związane z oświetleniem pośrednim są niezwykle złożone i wymagające pod względem przetwarzania.

 

Scena renderowana z wykorzystaniem wyłącznie oświetlenia bezpośredniego

Scena renderowana z wykorzystaniem wyłącznie oświetlenia bezpośredniego.

 

Scena renderowana z użyciem technologii NVIDIA VXGI

Ta sama scena z włączoną funkcją GI, proszę zwrócić uwagę na oświetlenie pośrednie oraz lustrzane odbicia na podłodze.

 

Technika GI, ze względu na fakt, iż jest ona obciążająca pod względem obliczeniowym (zwłaszcza w przypadku bardzo szczegółowych scen), była wykorzystywana głównie do renderowania złożonych scen w filmach wykorzystujących grafikę komputerową, a za obliczenia z tym związane odpowiedzialne były oparte na układach GPU redner farmy pracujące w trybie offline. Choć niektóre formy techniki GI zostały wykorzystane w wielu z dzisiejszych najpopularniejszych gier, to implementacja tego rozwiązania opierała się na wstępnie przetworzonych obliczeniach związanych z oświetleniem. Te "wstępnie spreparowane" techniki wykorzystywane są ze względu na wydajność; niemniej jednak, wymagają one zastosowania dodatkowych grafik, gdyż obliczenia związane z pożądanymi efektami oświetlenia muszą zostać przeprowadzone wcześniej. Ponieważ wstępnie spreparowane oświetlenie nie jest dynamiczne, często trudne lub niemożliwe jest zaktualizowanie źródeł oświetlenia pośredniego, gdy w grze nastąpią zmiany; przykładowo, gdy dodane zostanie źródło światła lub jakiś element sceny się poruszy, bądź też zostanie zniszczony. Wstępnie spreparowane oświetlenie pośrednie modeluje obiekty statyczne sceny ale nie działa poprawnie w przypadku animowanych postaci lub poruszających się obiektów.

W 2011 roku, inżynierowie z firmy NVIDIA opracowali i zademonstrowali nowe, innowacyjne podejście do obliczeń umożliwiających szybką, bliską rzeczywistej formie symulację oświetlenia globalnego, przeprowadzaną na układzie GPU dynamicznie i w czasie rzeczywistym. Ta nowa technologia oświetlenia globalnego (GI) wykorzystuje siatkę wokseli do przechowywania danych związanych ze sceną i oświetleniem oraz nową technikę voxel cone tracing do gromadzenia w oparciu o siatkę wokseli informacji związanych z oświetleniem rozproszonym. Cyril Crassin z firmy NVIDIA opisuje tę technikę w swojej pracy, natomiast materiał wideo z konferencji GTC 2012 dostępny jest tutaj. Podobna technika wykorzystana była w stworzonym w 2012 roku przez firmę Epic materiale "Elemental" będącym demonstracją technologii silnika Unreal Engine 4.

 

W materiale

W materiale "Elemental", demonstrującym technologię silnika Unreal Engine 4 firmy Epic wykorzystano technikę voxel cone tracing do symulacji oszałamiającego oświetlenia globalnego (GI).

 

Od tego czasu, firma NVIDIA pracowała nad kolejną generacją tej technologii - VXGI - która łączy nowe algorytmy oprogramowania ze specjalną akceleracją sprzętową na architekturze Maxwell.

Pudełko Cornella

W 1984 roku naukowcy z Uniwersytetu Cornella stworzyli prostą scenę eksperymentalną, którą wykorzystywali do renderowania grafiki. Scena z założenia miała być prosta, aby generowane przez nich obrazy komputerowe można było w łatwy sposób porównać do zdjęć.

 

Obraz wygenerowany z użyciem technologii renderowania NVIDIA iray

 

Powyższy obraz wygenerowany został z użyciem naszej najnowocześniejszej technologii renderingu iray, która wykorzystuje moc przetwarzania równoległego w chmurze wielu układów GPU do renderowania fotorealistycznych obrazów niemal w czasie rzeczywistym. Obraz ten jest bardzo zbliżony do rzeczywistego wyglądu pudełka cornella.

Celem technologii VXGI jest jednak obsługa obliczeń w czasie rzeczywistym, a zastosowanie techniki ray tracing w całej scenie jest zbyt wymagające pod względem obliczeniowym, dlatego konieczne są aproksymacje.

 

Ta sama scena z uwidocznionymi wokselami

 

Powyższy obraz przedstawia tę samą scenę z uwidocznionymi wokselami. Każdy sześcian to surowy widok podstawowej geometrii, które możemy wykorzystać do przyspieszenia obliczeń związanych z oświetleniem.

 

Obliczanie koloru i intensywności padającego na woksele światła z wykorzystaniem istniejących już, bardzo szybkich technik oświetlenia bezpośredniego

 

Magia zaczyna się w momencie, gdy spojrzymy na widok wokseli emitujących światło. Wyobraź sobie, że każdy sześcian (woksel) jest bezpośrednio oświetlany przez jakiekolwiek bezpośrednie źródło światła będące częścią sceny. Jesteśmy w stanie poprawnie określić kolor i intensywność padającego na woksele światła z wykorzystaniem istniejących już, bardzo szybkich technik oświetlenia bezpośredniego. Nowością jest jednak to, że w kolejnym etapie te oświetlone woksele zaczną zachowywać się jak źródła światła, generując światło rozproszone.

 

Widok światła odbitego od powierzchni oświetlonych przez bezpośrednie źródło światła

 

Kolory widoczne na tym obrazie mogą być nieco mylące. Na początek skoncentruj się na ścianach. Na ścianie, która była czerwona widoczna jest teraz jasnozielona poświata, natomiast na zielonej ścianie widać bladoczerwoną poświatę. Powoduje to fakt, że każda ściana przyjmuje teraz nieco koloru emitowanego przez ścianę po przeciwległej stronie pokoju. Czerwona ściana delikatnie oświetla również znajdującą się najbliżej kulę i tak dalej. W efekcie widzimy światło odbite od powierzchni oświetlonych przez bezpośrednie źródło światła.

 

Połączenie wszystkich źródeł światła, tworzące niezwykle realistyczne sceny

 

Gdy połączymy ze sobą wszystkie źródła światła, możemy wygenerować niezwykle realistyczne sceny. Kluczową rzeczą jest jednak to, że korzystając z technologii VXGI możemy robić to wszystko w czasie rzeczywistym.