Nvidia na ostatniej konferencji GDC 2018 odświeżyła w pamięci wielu osób pojęcie raytracingu, kiedy to poinformowała, że poświęci mu więcej uwagi. Warto więc wiedzieć, czym jest raytracing i czego można się spodziewać po Nvidii.
Raytracing jest techniką dynamicznego oświetlenia w grafice komputerowej. Do tej pory był wykorzystywany głównie przez profesjonalistów do tworzenia fotorealistycznej grafiki komputerowej w produkcjach filmowych i wizualizacjach architektonicznych. W grach, ze względu na bardzo duże zapotrzebowanie na moc obliczeniową, nie był dotychczas stosowany. Preferowano prostsze oświetlenie, w którym cienie, odbicia oraz światła były wyliczane statycznie.
Do generowania sceny 3D wykorzystuje się śledzenie dróg światła z kamery i na tej podstawie generuje płaski obraz, wyświetlany później na ekranie komputera.
Diagram na górze pokazuje, jak tworzona jest scena z użyciem raytracingu. Jest to pełny model, w którym zastosowano algorytm rekurencyjny.
- Promienie główne (czerwone) zawsze są prowadzone jako pierwsze z punktu, w którym obserwujemy scenę.
- Następnie wyszukiwane są najbliższe punkty przecięcia tych promieni z obiektami w scenie.
- Dla każdego źródła światła zdefiniowanego w scenie wyznaczana jest jasność w punkcie padania, zgodnie z określonym modelem oświetlenia (np. Warda czy Phonga; o modelach oświetlenia powiemy w dalszej części, przy czym uwzględnimy tylko te najpopularniejsze).
- Określa się także cienie. W tym celu jest sprawdzana widoczność źródła światła w danym punkcie, tj. czy światło nie jest przesłaniane przez jakiś obiekt (w celu sprawdzenia, czy obiekt jest zacieniony, z punktów odbicia promieni głównych prowadzone są promienie zacienienia w stronę źródeł światła), i jeśli nie, dopiero wtedy obliczana jest jasność punktu dla tego źródła.
W algorytmie rekurencyjnym dochodzi jeszcze jeden warunek:
Jeśli punkt przecięcia należy do obiektu odbijającego światło lub przezroczystego, wysyłane są z tego punktu promienie wtórne. Są to, odpowiednio, promień odbity (na wykresie ciemnozielony), wyliczany na podstawie kąta padania światła i różnego rodzaju odbić, np. Fresnela, jak również na podstawie parametru IOR (ang. index of refraction), oraz promień załamany (na wykresie ciemnoniebieski), wyliczany tylko na podstawie parametru IOR. Dodatkowo dla tych punktów wyliczana jest połyskliwość, blask (na wykresie małe strzałki zielone i niebieskie; im większe rozproszenie strzałek tym większa połyskliwość).
Raytracing jest bardzo kosztowny obliczeniowo. Liczba promieni, które są obliczane, zależy od rozdzielczości wyświetlanego obrazu. Jeszcze bardziej jednak na stopień skomplikowania obliczeń wpływa złożoność sceny, tj. liczba obiektów oraz ich budowa.
Oczywiście, raytracing ma wady. Ponieważ operuje na pojedynczych promieniach, ma problemy z poprawnym modelowaniem rozproszenia światła (dyfrakcji), jak i rozszczepienia, np. na pryzmacie. Nie uzyskamy też efektów zjawisk falowych, takich jak aberracja fotochromatyczna. Na potrzeby tych efektów stworzono dodatkowe techniki, które współdziałają z technikami śledzenia promieni i uzupełniają brakujące efekty. Do tych rozwiązań należą: metoda energetyczna (ang. radiosity), w której wykorzystuje się mapy wypromieniowania (ang. irradiance map – patrz opis poniżej), śledzenie ścieżek (ang. path tracing), metoda map fotonowych (ang. photon map) i tzw. forward raytracing, który jest odwrotnością algorytmu raytracingu.
Jakich technik oświetlenia użyła Nvidia w demie RTX
Najnowsze demo technologiczne Nvidii rzuca bardzo dużo światła na przyszłość grafiki komputerowej i na to, co inżynierowie firmy chcą wprowadzić w swoich najnowszych kartach graficznych. Skupiono się głównie na wiernym odtworzeniu cieniowania i odbić na różnych powierzchniach oraz oświetleniu globalnym. Poniżej opiszemy techniki oświetlenia globalnego oraz modele oświetlenia i powierzchni odbijających światło.
Najpierw zajmiemy się oświetleniem globalnym, które określa oświetlenie w scenie
Do tej pory najczęściej używanymi technikami oświetlenia globalnego były dwie metody. Metoda energetyczna (ang. radiosity), która wykorzystuje do obliczeń mapy irradiancji, i mapa fotonów (ang. photon map), która do obliczeń wykorzystuje najmniejsze cząstki światła, czyli fotony. Obie te techniki mogą występować pojedynczo i wyświetlać naszą oświetloną scenę. Obraz będzie jednak wyglądał najlepiej dopiero wtedy, gdy silnik renderujący uwzględni oba te rozwiązania.
Obydwie metody bardzo dobrze się uzupełniają. Metoda energetyczna uwzględnia wyłącznie oświetlenie rozproszone. Nie uwzględnia natomiast efektów świetlnych takich, jak rozbłyski i załamania światła. Te z kolei zapewnia technika mapowania fotonów. Dlatego warto je połączyć.
Technika energetyczna
Technika energetyczna (ang. radiosity), czyli irradiancja, jest funkcją definiującą dowolny punkt (piksel) w scenie 3D i reprezentuje sumę światła dochodzącego w tym punkcie ze wszystkich kierunków. Generalnie irradiancja jest inna w każdym punkcie sceny. Możemy więc założyć, że irradiancja (wypromieniowanie) to zbiór punktów w scenie 3D. Kiedy więc chcemy wyliczyć irradiancję w danym punkcie podczas obliczania oświetlania globalnego, nasz silnik renderujący przeszukuje mapę punktów irradiancji, porównuje ją z sąsiadującymi punktami i sprawdza, czy są one podobne pod względem położenia i kierunku. Na tej podstawie wyliczane są miejsca, z których algorytm renderujący może uzyskać dokładne informacje o tym, co znajduje się w scenie i w jakiej jest relacji z resztą otoczenia. Na podstawie tych miejsc tworzona jest mapa irradiancji.
Sprawdź aktualne ceny kart graficznych – może to dobra okazja do zakupu?
Trzeba wiedzieć, że taka mapa wyliczana jest na samym początku w bardzo niskiej rozdzielczości; często jest to jedna czwarta oryginalnej rozdzielczości, przy czym nie jest to wartość jednakowa dla poszczególnych obiektów w scenie. W scenie są miejsca, które wymagają bardziej precyzyjnych obliczeń, np. kiedy obiekty są bardzo blisko siebie lub miejsce wymaga bardzo dokładnego wyliczenia cieniowania. Z drugiej strony mamy niezbyt wymagające fragmenty sceny 3D, np. duże równo oświetlone powierzchnie.
W przykładowej scenie jest to powierzchnia blatu. Jest oświetlona jednorodnie i nie wymaga skomplikowanych obliczeń. Tak więc mapa irradiancji może być budowana adaptacyjnie. Odbywa się to przez renderowanie sceny kilkukrotnie (każdy taki rendering nazywa się przejściem i zwiększa liczbę szczegółów w finalnej scenie). Oczywiście, można określić, ile takich renderingów (przejść) ma nastąpić. Komu więc nie zależy na idealnej definicji obszaru, ten może ograniczyć liczbę przejść do minimum.
Jak dokładnie przebiega obliczanie mapy irradiancji, pokazuje diagram powyżej.
Ponieważ działanie tej metody zależy od tego, co widać na ekranie, pierwsze śledzone są promienie główne (czarne), wyprowadzane z naszej kamery na scenę. To one określają punkty, z których będziemy próbkować mapę irradiancji (wypromieniowania). Kiedy punkty rozproszenia zostają wyznaczone, przechodzimy do drugiej fazy. Z tych punktów prowadzone są w stronę sceny promienie światła (czerwone), które zbierają dane o jej całkowitym oświetleniu. Liczba tych promieni może być dowolnie kontrolowana. Od tego zależy finalna jakość oświetlenia rozproszonego. Mapa irradiancji może śledzić tylko jedno odbicie promieni światła, każde następne musi już zostać wykonane przez drugi silnik renderujący (drugie odbicie to niebieska strzałka na diagramie). Tworzenie mapy irradiancji polega na następujących po sobie przejściach (renderingach), w trakcie których silnik renderujący dodaje więcej szczegółów.
Drugie odbicie jest wykonywane przy użyciu drugiego algorytmu oświetlenia globalnego, tzw. mapy fotonów (ang. photon map).
Technika ta jest bardzo podobna do mapy irradiancji, z tą różnicą, że w celu jej zbudowania śledzi się poszczególne cząsteczki bazowe światła (fotony), a nie promienie światła, które są emitowane przez źródła światła. Fotony te odbijają się od poszczególnych powierzchni w scenie, a punkty tych odbić są zapisywane w mapie fotonów. Dzięki temu mogą być tworzone takie efekty świetlne, jak: załamania światła, aberracja fotochromatyczna, połyskliwość materiału.
Śledzenie ścieżek
Trzecia z technik oświetlenia globalnego należy do najbardziej zaawansowanych, a efekty tworzone z jej zastosowaniem można nazwać fotorealistycznymi. Mowa o śledzeniu ścieżek (ang. path tracing). To rozwinięcie raytracingu, niekiedy wymagające jeszcze większej mocy obliczeniowej.
W tej technice źródłem promieni jest obserwator, tj. kamera. Z niej prowadzone są promienie świetlne w stronę sceny. Promienie te uderzają w powierzchnię. Z punktów, w które uderza taki promień, wystrzeliwane są losowo kolejne promienie (jeden lub więcej). Od funkcji losującej i liczby pierwotnie wystrzeliwanych promieni zależy jakość finalnego obrazu. Tworzenie pojedynczej ścieżki kończy się, gdy liczba odbić promienia światła przekracza pewien limit (na obrazku liczba zielonych promieni nie przekracza liczby odbić). Wówczas wyznacza się ostateczne natężenie światła, które dociera do obserwatora: składa się na nie natężenie światła pochodzącego od obiektów emitujących, które następnie jest tłumione; tłumienie zależy od współczynnika pochłaniania światła (tutaj korzystamy z funkcji BRDF materiału) dla każdego trafionego obiektu. Kiedy połączymy śledzenie ścieżek z poprawnymi fizycznie modelami oświetlenia i powierzchni, efekt będzie fotorealistyczny. Będzie też jednak bardzo kosztowny obliczeniowo.
Z drugiej strony można wygenerować obraz przy bardzo niskich wartościach parametru odbić i bardzo małej liczbie promieni wypuszczanych na scenę. Otrzymamy wtedy bardzo przybliżony obraz tego, jak ta scena ma wyglądać, jak rozkłada się oświetlenie i gdzie będą generowane cienie. Niestety, obraz będzie wtedy bardzo mocno zaszumiony (jak na renderingu poniżej).
Żeby temu zapobiec, różni producenci zaczęli opracowywać własne algorytmy odszumiania. Wśród nich jest Nvidia. Jej najnowszy algorytm odszumiania, OptiX 5.0, który może wykorzystywać techniki sztucznej inteligencji, należy do najszybszych. Zastosować może go posiadacz odpowiedniej karty graficznej, opartej na jednym z układów Nvidia Volta. Jak widać na wykresie poniżej, wykorzystanie tego algorytmu potrafi przyspieszyć proces renderingu poszczególnych klatek aż 54 razy. Niestety, nadal mówimy o wyjątkowo drogiej karcie, wyposażonej w układ Volta V100.
Efekty, które można osiągnąć przy użyciu tego algorytmu, przedstawiamy poniżej. Po lewej stronie znajduje się scena wygenerowana z wykorzystaniem bardzo niskiej wartości parametru SPP (ang. sample per pixel), a po prawej – ta sama scena wygenerowana przy tej samej wartości parametru SPP, ale z zastosowaniem algorytmu odszumiania OptiX 5.0.
Modele oświetlenia
W demie technologicznym Nvidii bardzo jasno podano, z jakiego modelu oświetlenia będzie korzystać raytracer. Dla wielu może to być zaskoczeniem, ale raytracing nie jest modelem oświetlenia – jest techniką oświetlenia.
Model oświetlenia decyduje o tym, jak światło będzie się zachowywać po kontakcie z powierzchnią: jak będzie się odbijało, w jaki sposób będzie rozpraszane itd. Wyróżniamy trzy rodzaje modeli oświetlenia: empiryczne, analityczne i hybrydowe.
Modele empiryczne po macoszemu traktują własności fizyczne powierzchni, ale dzięki umiejętnemu dobraniu parametrów potrafią dobrze symulować odbicie światła od powierzchni. Parametry modeli empirycznych są ustawiane na podstawie wcześniejszych eksperymentów. Zaletą tych modeli jest to, że mimo niewielkiej liczby obliczeń generowane obrazy wyglądają dobrze i do wielu zastosowań są wystarczające. Do tej kategorii zalicza się m.in. modele Lamberta, Phonga i Blinna-Phonga oraz funkcję rozbłysku.
Poniżej przedstawiamy kilka przykładowych renderingów stworzonych z wykorzystaniem modelu Phonga i Blinna-Phonga.
Modele fizyczne (analityczne) przy obliczaniu odbicia światła wykorzystują wiedzę o fizycznych parametrach powierzchni, zarazem biorąc pod uwagę prawa fizyki – a więc odbicia. Pociąga to za sobą wzrost kosztu obliczeniowego, ale jakość szacowanego odbicia jest znacznie lepsza niż w modelach empirycznych. Modele fizyczne są wykorzystywane wszędzie tam, gdzie niezbędna jest możliwie przybliżona symulacja odbicia. Do modeli fizycznych zaliczamy: model mikrościanek (ang. microfacets), funkcję szorstkości BRDF (z tej techniki korzysta Nvidia; opiszemy ją dokładnie nieco dalej), model Cooka-Torrance’a, model HTSG.
Poniżej na renderingu można zobaczyć efekt użycia modelu mikrościanek, a po prawej, dla porównania, tę samą scenę stworzoną z wykorzystaniem modelu Blinna.
Modele hybrydowe są kompromisem pomiędzy modelami empirycznymi a modelami opartymi na prawach fizyki. Zapewniają dobrą symulację odbicia, bo wykorzystują parametry empiryczne lub fizyczne w opisie powierzchni, i mają zarazem dobrą efektywność obliczeniową. Do modeli hybrydowych zaliczamy modele: Straussa, Warda, Schlicka, Ashikmana-Shirleya. Poniżej przedstawiam scenę wyrenderowaną z użyciem modelu Warda (po lewej) i modelu mikrościanek.
W stronę fotorealizmu
Nvidia zdecydowała się na model oświetlenia oparty na funkcji szorstkości, BRDF. I to właśnie jego poddamy dokładniejszej analizie.
Na początku przybliżymy, czym jest funkcja BRDF (ang. bidirectional reflectance distribution function). Opisuje ona charakterystykę odbicia promienia światła od danej powierzchni z wykorzystaniem równania funkcji odbicia. Uwzględnia oddziaływanie powierzchni na światło, które na nią pada, ponieważ różne powierzchnie mają różne właściwości fizyczne. Obejmuje zarówno modele empiryczne, jak i analityczne. Nvidia bardzo mocno podkreśla, że użyje modelu analitycznego, a dokładniej: modelu szorstkości mikrościanek.
Funkcja BRDF określa dwukierunkową zdolność odbijania światła przez powierzchnię i relację pomiędzy światłem padającym na powierzchnię a światłem od niej odbitym.
Gdy światło pada na powierzchnię, fale świetlne zostają poddane odbiciu, absorpcji lub przenikaniu (refrakcji), w zależności od fizycznych cech materiału, z którego zbudowana jest dana powierzchnia.
W kontekście użytego silnika renderującego, który do pierwszego odbicia używa wartości energetycznych. Celem funkcji BRDF jest obliczenie wartości radiacji (r) odbitej od powierzchni w kierunku (r), w zależności od światła padającego z kierunku (i) i wartości wypromieniowania (irradiancji) z kierunku (i).
Model powierzchni BRDF
Wyróżniamy dwie podstawowe klasy materiałów w kontekście odbicia światła. Pierwsza klasa to powierzchnie, w których odbicie światła jest jednorodne (izotropowe) – niezależne od kąta i kierunku ułożenia cząsteczek tworzących dany materiał. Druga klasa to powierzchnie, których budowa cząsteczkowa jest zależna od kierunku i kąta ułożenia cząsteczek – są to materiały anizotropowe. Bardzo dobrym przykładem powierzchni anizotropowej są szczotkowane lub polerowane w jednym kierunku metale czy aksamit. Idealną powierzchnią izotropową jest kreda.
Jednak nie tylko kierunek uporządkowania cząstek na powierzchni ma wpływ na odbicie. Bardzo ważna jest też mikrostruktura powierzchni. W świecie rzeczywistym powierzchnie nie są ani doskonale gładkie, ani nieskończenie szorstkie, dlatego odbicie światła zależy od ich wartości. Przyjmuje się, że parametr określający szorstkość powierzchni określa wartość odbicia na powierzchni.
Sposób odbijania światła jest także zależny od tego, czy materiał jest metalem czy izolatorem. W przypadku metali kolor odbijanego światła nie jest zdominowany przez barwę światła padającego; zależy też od koloru metalu. W przypadku zaś izolatorów kolor odbicia zwierciadlanego zwykle ma kolor padającego światła.
Materiały można także podzielić na wielowarstwowe i jednowarstwowe. Materiały wielowarstwowe to te, w których można wyróżnić więcej niż jedną warstwę. Idealnym przykładem materiału wielowarstwowego jest lakier samochodowy. Składa się on z kilku warstw, z których każda przepuszcza światło. Interakcja pomiędzy poszczególnymi warstwami tworzy finalne odbicie.
Z właściwości fizycznych materiałów bardzo ważny jest też współczynnik refrakcji. Jest to wielkość wykorzystywana do obliczenia, jaka część padającego na powierzchnię promieniowania jest odbijana, a jaka wchłaniana bądź przepuszczana. Współczynnik refrakcji stanowi podstawę do obliczania odbicia w modelach oświetlenia fizycznych i hybrydowych. Od jego wartości zależy, jak się zmienia odbijalność światła wraz ze zmianą jego kąta padania na powierzchnię.
Trzeba wziąć pod uwagę, że im więcej parametrów opisujących powierzchnię, tym obliczenie odbicia jest bardziej kosztowne, a jakość generowanych obrazów – lepsza.
Wnioski na przyszłość
Rok 2018 stoi pod znakiem raytracingu. Nvidia zaprezentowała zestaw narzędzi Gameworks z algorytmami RTX, przygotowanych pod kątem nowej architektury Volta. Dzięki współpracy z Microsoftem nowe rozszerzenia będą dostępne w DirectX (DirectX Raytracing (DXR) API). Ale jak to ma się przełożyć na najnowsze gry? Czy raytracing nagle zacznie być w nich stosowany?
W formie szczątkowej – jak najbardziej. Już teraz są prowadzone prace nad nowymi produkcjami, które mają mieć elementy raytracingu, np. Metro Exodus.
Niestety, efekty pokazane w demie, które wykorzystuje raytracing, nie nastrajają pozytywnie. Model oświetlenia globalnego i poprawne fizycznie odbicia to tylko dwa efekty z szerokiej palety możliwości raytracingu. W demie widać, że do obliczeń użyto bardzo małej liczby promieni i że scena jest bardzo mocno odszumiana. To pokazuje, jak daleko jeszcze jesteśmy od pełnoprawnego raytracingu w grach. Pamiętajmy, że jedyną kartą graficzną, która w tym momencie obsługuje technikę RTX Nvidii, jest Titan V, a ten kosztuje 13 tys. zł.
W 2017 roku Richard Cameron z Nvidii w trakcie wywiadu powiedział, że fotorealistyczny raytracing na razie jest niemożliwy do osiągnięcia i że zapotrzebowanie na moc obliczeniową jest około 100 razy większe od obecnie dostępnej. Jak widać, miał sporo racji.
Z drugiej strony inżynierowie Nvidii mówią, że raytracing to przyszłość, i trudno się z nimi nie zgodzić, ponieważ obecnie wykorzystywane techniki rasteryzacji też mają swoje wady i ograniczenia. Możliwe więc, że już całkiem niedługo użycie raytracingu będzie po prostu koniecznością.
Pamiętajcie, że możecie dołączyć do burzliwej dyskusji w wątku na naszym forum dyskusyjnym. Nasi Czytelnicy poruszyli tam wiele dodatkowych zagadnień, które mogą przybliżyć ideę działania raytracingu.
Rzućcie też okiem na nasze pozostałe felietony, w których omawiamy szereg różnych kwestii, takich jak budowa procesora, architektura Nvidia Volta, wpływ działania pamięci na układy AMD Ryzen.