Jak działa Ray Tracing? O rodzajach śledzenia promieni i roli rdzeni RT

Technologia Real Time Ray Tracing, czyli śledzenia promieni świetlnych w czasie rzeczywistym, stała się w zasięgu każdego konsumenta pod koniec 2018 roku, bo wraz z premierą kart graficznych z serii NVIDIA GeForce RTX 2000. Od tego momentu minęło już ponad pięć lat, ale nadal działanie tej funkcji nie jest powszechnie znane znajdziecie wytłumaczenie tego, jak działa Ray Tracing, czym jest Ray Tracing i wreszcie dlaczego rdzenie RT są tak ważne dla jego działania.
GeForce RTX 4090 w Cyberpunku 2077
GeForce RTX 4090 w Cyberpunku 2077

Czym jest Ray Tracing?

Chociaż my, gracze, kojarzymy Ray Tracing głównie przez firmę NVIDIA, to w rzeczywistości ta technologia śledzenia promieni jest już z nami od dawna. To z jej pomocą tworzy się zaawansowane filmy animowane, czy bawi się efektami specjalnymi, ale do tego przemysł komputerowy zwykł wykorzystywać superkomputery. Co ważne, mowa tutaj o pracy nad nieinteraktywnymi, wcześniej przygotowanymi dziełami, do których wprowadza się stosowny algorytm i zmienne. 

Jak możemy przeczytać na Wikipedii:

Śledzenie promieni (ang. ray tracing) – technika generowania fotorealistycznych obrazów scen trójwymiarowych opierająca się na analizowaniu tylko tych promieni światła, które trafiają bezpośrednio do obserwatora. W rekursywnym śledzeniu promieni bada się dodatkowo promienie odbite, zwierciadlane oraz załamane. Wikipedia

Czytaj też: Czym jest DLSS firmy NVIDIA? Rewolucyjna technologia dla GeForce RTX pod lupą

To dobre wyjaśnienie ogólnego przeznaczenia Ray Tracingu, który opisany w tych słowach, sprawia wrażenie czegoś, co w grach wręcz musiało się znaleźć dla graficznej rewolucji. Wprawdzie ta zabawa światłem ma swoje wady pokroju pomijania aspektu światła rozproszonego, czy jego rozszczepiania, ale w ogólnym rozrachunku i tak zapewnia ogromny skok w renderowaniu fotorealistycznych scen. Jednak w przypadku gier wideo czekaliśmy na tę technologię długo. Dlaczego? 

Wszystko sprowadza się do środowiska, bo tak jak już wspominałem, renderowanie scen z użyciem Ray Tracingu znacząco obciąża układ graficzny. To w przypadku dzieł interaktywnych, jakimi są gry, nabiera zupełnie nowego wymiaru potrzebnej wydajności, która musi zostać dostarczona ceną czegoś innego, a tym czymś jest najczęściej płynność gry. Dlatego te od dawna bazują na tak zwanej rasteryzacji.

W ramach tego podejścia, powierzchnie każdego obiektu są cieniowane na podstawie ich właściwości materiału i padającego na nie światła. To sprytne podejście nie tylko zapewniło stosującym je powszechnie tytułom naprawdę wysoką jakość ogólną oświetlenia, ale też pozwoliło na zachowanie dużej liczby klatek na sekundę.

Niestety w tym podejściu brakuje tych najważniejszych detali w oświetleniu, które na pierwszy rzut oka są subtelne, ale których zasmakowanie jeden raz przy aktywowanym Ray Tracingu sprawia, że nie będziemy chcieli wracać już do dawnych rozwiązań. Tutaj do gry dumnie wkroczyła w 2018 roku NVIDIA, ale zanim przejdziemy do kwestii sprzętowych, warto zaznaczyć, że Ray Tracing może być wykorzystywany razem z rasteryzacją, gdzie poszczególne podejścia będą zajmować się innymi elementami sceny. 

GPU Turing, czyli RTX 2000

Razem z premierą nowej generacji kart graficznych “po” rodzinie GTX 1000, doczekaliśmy się przemianowania od lat towarzyszącego nazwie kart GeForce dopisku “GTX” na rzecz “RTX”. Nie bez powodu – taka drastyczna zmiana miała jasno dawać do zrozumienia konsumentom, że sięgając po ten model, wkraczają do nowej ery grafiki w grach. Wtedy właśnie wprowadzenie Ray Tracingu w czasie rzeczywistym stało się realne.

W przypadku podejścia firmy NVIDIA do tej technologii postawiono przed rdzeniem graficznym szereg nowych zadań. Pierwsze sprowadza się do określenia tego, które dokładnie prymitywy (elementy składowe renderowanych obiektów – postaci, przedmiotów etc.) w danej scenie wejdą w interakcje z promieniami świetlnymi. Następnie do gry wchodzi oparta na strukturze drzewa struktura przyspieszenia śledzenia promieni nazywana Bounding Volume Hierarchy, która oblicza miejsca przecięcia promieni i wspomnianych prymitywów, przy czym zmniejsza ich liczbę, odrzucając te niepotrzebne, które nic nie wniosą do finalnego efektu.

Następnie do gry wchodzi algorytm odszumiania, który poprawia ogólną jakość wizualną otrzymanej sceny. Maskuje on dodatkowo niedoskonałości związane z podejściem NVIDIA, które przewiduje śledzenie mniejszej liczby promieni świetlnych, niż wymagałaby to dana scena, co z kolei prowadzi do wyższej płynności (FPSów). Jednak pomimo tego wszystkiego i pracy, jaką NVIDIA wykonała nad oprogramowaniem, Ray Tracing w czasie rzeczywistym nadal był zbyt obciążający dla karty graficznej. Stąd rdzenie RT.

Razem z architekturą Turing NVIDIA postarała się o znaczące ulepszenie fizycznych elementów rdzeni graficznych, które pomimo tradycyjnych rdzeni CUDA, zyskały te nowe w postaci rdzeni Tensor (odpowiadających za obliczanie z użyciem SI) i właśnie RT. O nich nie wiadomo wiele, ale ogólne pojęcie na ich temat mamy już od dawna.

Rdzenie RT odpowiadają głównie za przyspieszanie opisanych wyżej obliczeń hierarchii BEV, jak również przecięć trójkątów przez poszczególne promienie. Dzięki temu zajmują się tymi sprawami, które normalnie system zleciłby głównej części rdzenia graficznego (shaderom), co znacząco obniżyłoby płynność renderowanych scen. Zwłaszcza że rdzenie RT są od podstaw zaprojektowane z myślą właśnie o obliczeniach związanych z Ray Tracingiem, choć oczywiście nie pracują z nim w pojedynkę, zlecając renderowanie scen tradycyjnym rdzeniom.

Obecnie możemy cieszyć się drugą generacją rdzeni RT, które zadebiutowały razem z rodziną kart GeForce RTX 3000 na bazie architektury Ampere. Chociaż ich działanie pozostało identyczne, to wydajność wzrosła o 70%, co przekłada się bezpośrednio na jeszcze większą liczbę wystrzelonych w obiekty promieni.

Rodzaje Ray Tracingu

Chociaż buńczucznie wręcz zwykło się powtarzać, że Ray Tracing odpowiada za śledzenie promieni światła i poprawę ogólnej jakości oświetlenia i cieni w grze, to ta technologia dzieli się na kilka technik. Ogólnie, dzięki śledzeniu promieni światła, które odbijają się od wielu powierzchni, może wiernie odtworzyć odbicia, momenty kiedy światło przenika przez dane materiały i szereg innych detali, pomagających wycisnąć z danej sceny jeszcze więcej.

Jednak nie oznacza to, że wszystkie gry (tych jest coraz więcej, a ich listę znajdziecie tutaj) wspierające Ray Tracing korzystają z wszystkich jego technik. Większość z nich i tak bazuje ciągle na tradycyjnym SSR (Screen Space Reflections), który w bardziej manualny, a więc i czasochłonny oraz niekoniecznie dokładny sposób pozwalał twórcom zadbać o szczegóły oświetlenia. Problemem w tym podejściu są jednak braki w postaci m.in. niemożności odbicia szczegółów poza ekranem, czy dbania o te pod niskim kątem. Ray Tracing oczywiście to umożliwia i to przy wyższej jakości, poziomie fotorealizmu i na dodatek w mniej czasochłonny sposób.

Odbicia ze śledzeniem promieni

Pierwszym przykładem użycia Ray Tracingu była gra Battlefield V, sięgająca po odbicia w taflach wody, czy szynach. Dzięki temu otoczenie, które się w nich odbijało, pokazywało szczegóły widoczne z poziomu kamery gracza w danym momencie.

Rozwinięciem tego są zaawansowane odbicia ze śledzeniem promieni, które biorą już pod uwagę dodatkowe odbicia promieni w bardziej złożonych scenach i renderować odbicia na zakrzywionych lub niedoskonałych powierzchniach. Jest to niestety bardziej obciążające dla sprzętu, więc pozostaje pytanie, czy efekt jest tego warty?

Cienie ze śledzeniem promieni

Kwestia cieni w grach jest zdecydowanie czymś bardziej zauważalnym, niż opisywane wcześniej odbicia. Bez Ray Tracingu, deweloperzy muszą obecnie starannie dbać o mapy cieni w imię możliwie najbardziej szczegółowych i realistycznych, co oczywiście nie było łatwe i szybkie, a jak to bywa z obchodzeniem takich wyzwań całym mnóstwem sztuczek, niekoniecznie najlepsze. 

Ray Tracing z kolei w działaniu z cieniami jest znacznie sprytniejszy. Dzięki niemu w dane sceny wrzuca się promienie z określonych źródeł (słońce, lampy, świece), które odbijając się od elementów, pozwalają na ich realistyczne uwzględnienie, a nawet otwierają furtkę do znacznie bardziej szczegółowych półprzezroczystych. 

Globalne oświetlenie ze śledzeniem promieni

Debiutujące w Metro Exodus globalne oświetlenie z Ray Tracingiem pokazało, jak nowe technologie mogą uwolnić deweloperów od żmudnej pracy z wykorzystaniem tych starszej daty. Ich oczywiście uwolnić od licznych map, odpowiadających za oświetlenie całego świata gry, a nam zapewnić jeszcze bardziej realistyczne efekty. 

Stare, ale oczywiście ciągle stosowane techniki, bo nie każdy ma dostęp do Ray Tracingu w czasie rzeczywistym, dręczy problem tego, że światło w ich przypadku kompletnie się nie odbijało od powierzchni, na które pierwotnie padało.

Jak tłumaczyła NVIDIA przy premierze wspomnianego Metro: Wyobraź sobie ciemny pokój z jasnym światłem wpadającym przez okno. W tradycyjnych technikach oświetlane jest wszystko, co jest bezpośrednio uderzane przez światło, ale same oświetlane obszary nie odbijają światła i nie oświetlają otaczających elementów gry, podczas gdy w rzeczywistości by to zrobiły.

To właśnie umożliwił Ray Tracing, pozwalając na modelowanie dynamicznego światła rozproszonego, które jest odbijane od jednej lub więcej powierzchni w scenie. Oczywiście w sposób naturalny, co umożliwia postrzeganie świata gry w zupełnie nowym stylu. 

Kaustyka ze śledzeniem promieni

W przypadku tego zastosowania Ray Tracingu, w grę wchodzi już zupełnie nowy poziom szczegółowości. Kaustyka odnosi się do skupiania promieni świetlnych odbitych lub załamanych przez zakrzywioną powierzchnię do jej rzutowania na inną powierzchnię. Idealnie pokazuje to poniższy przykład, który po raz pierwszy oddał to zjawisko w grach komputerowych tak precyzyjnie. 

Technologia Ray Tracing – podsumowanie

NVIDIA zrewolucjonizowała grafikę komputerową, dzięki swoim kartom graficznym RTX, więc nic dziwnego, że to ona gra obecnie główną rolę w tego typu artykułach. Jeszcze w 2021 roku pisaliśmy, że AMD dopiero pracuje nad swoim odpowiednikiem rozwiązania konkurencji, a dziś widzimy tego owoce, bo karty graficzne Radeon z nowych serii dzierżą odpowiedniki rdzeni RT w postaci Ray Accelerators. W obu przypadkach sprowadza się to do specyficznych rdzeni, które są w praktyce wyspecjalizowanymi akceleratorami do obliczeń związanych ze śledzeniem promieni właśnie.

Background
Foreground
Rasteryzacja vs RT

Po sześciu latach możemy wreszcie powiedzieć, że dziś technologia Ray Tracing jest powszechna w grach zwłaszcza z wyższej półki, a obecny stan rynku kart graficznych sprawia, że dostęp do niej nie jest żadnym luksusem. Trzy grosze do tego dorzuca rozwinięta technologia DLSS, która w najnowszej wersji nie tylko zwiększa znacząco płynność gry, ale też poprawia efekty śledzenia promieni, wygładzając związane z tą funkcją artefakty i niedoróbki graficzne. Dlatego właśnie zwłaszcza dziś możemy powiedzieć, że Ray Tracing przyniósł nie tylko wyższą jakoś oświetlenia, ale też szanse na uwolnienie deweloperów od wyzwań związanych z jego projektowaniem w grach, bo odgrywa znaczącą rolę na poletku wirtualnej zabawy interaktywnej.