Czym jest Ray Tracing i czy warto go używać?

Czym jest Ray Tracing i czy warto go używać?

Grafika w grach stale ewoluuje, aby zapewnić graczom coraz to lepsze wrażenia wizualne. Kiedyś ogromne wrażenie robiła grafika 3D z takich konsol jak PS1 czy Nintendo 64. Dzisiaj mamy ogromne gry z otwartym światem zbudowane z miliardów (a czasem nawet bilionów) poligonów. Jedną z najbardziej zaawansowanych technik renderowania aktualnych gier jest Ray Tracing. W tym artykule odpowiem, czym dokładnie jest Ray Tracing, jakie sprzęty/gry go obsługują i czy w ogóle warto go używać.

Co to jest Ray Tracing?

Ray Tracing (albo “po naszemu”: śledzenie promieni) to zaawansowana technika renderowania grafiki komputerowej, której zadaniem jest wytworzenie jak najbardziej realistycznego zachowania światła, cieni i odbić w danej scenie

Tak, jak wskazuje sama nazwa zasada działania Ray Tracingu opiera się na śledzeniu promieni. W dużym uproszczeniu: z kamery “patrzącej” na scenę emitowane są promienie. Po natrafieniu na jakiś obiekt 3D odbijane są one w kierunku źródeł światła widocznych na ekranie i na tej podstawie gra jest w stanie wyliczyć odpowiednią jasność danego punktu i jego cień, jeśli takowy istnieje. Kiedy jeden ze wspomnianych promieni trafi na model 3D, który ma mieć właściwości refleksyjne, to bardzo często tworzony jest promień odbity dążący z powrotem do kamery. Właśnie w ten sposób otrzymujemy realistyczne odbicia. Wszystko to działa bardzo podobnie do tego, jak zachowuje się światło w rzeczywistości, z tym że w naszym świecie, światło wędruje od źródła, do obiektu i finalnie do naszego oka, zaś w grze proces ten jest odwrócony (oko/kamera > obiekt > źródło światła), aby zmniejszyć wymagania algorytmu.

Schemat działania Ray Tracingu
Schemat działania Ray Tracingu; źródło: Wikipedia

Od wielu lat Ray Tracing i jego warianty były wykorzystywane w wysokobudżetowych filmach z animacją 3D (np. tych od Disneya). Ray Tracing jest jednak na tyle wymagający, że w dawnych latach potrzebne było kilka godzin, a czasem nawet kilka dni na wyrenderowanie jednej sceny ze śledzeniem promieni (i to na złożonych superkomputerach). Dopiero od niedawna podzespoły w konsumenckich komputerach stały się na tyle szybkie i na tyle dobre w przetwarzaniu algorytmu Ray Tracingu, aby móc wprowadzić tę technikę w grach renderowanych dynamicznie.

Karty graficzne wspierające Ray Tracing

Tak, jak wspomniałem w ostatnim zdaniu, do obsługi Ray Tracingu potrzebny jest nowoczesna i odpowiednio wydajny układ graficzny. Przykładami takich podzespołów są:

  • Wszystkie karty graficzne z serii NVIDIA RTX (RTX 2000 i nowsze).
  • Układy graficzne AMD z generacji RDNA2 i nowsze (między innymi karty graficzne RX6000, Konsole PlayStation 5 oraz Xbox Series X/S, czy też Steam Deck).
  • Karty graficzne Intel z serii Intel Arc i nowsze.
  • Układy graficzne zintegrowane z procesorami Apple M3 i nowszymi.

Przykładowe gry z Ray Tracingiem

Kilka miesięcy po wydaniu serii NVIDIA RTX 2000 (czyli pierwszych konsumenckich kart graficznych oficjalnie przystosowanych do Ray Tracingu) gry z obsługą śledzenie promieni można było policzyć dosłownie na palcach jednej ręki. W roku 2024 sytuacja jest jednak kompletnie inna i według list znalezionych On-line: na komputerach osobistych jest już ponad 200 gier stosujących Ray Tracing. Obecnie, możemy liczyć że praktycznie każda większa gra AAA wydawana w kolejnych latach, nieważne czy to na PC, czy na konsolę (no z pominięciem Nintendo Switch) będzie miała obsługę śledzenia promieni.

Poniżej pokazuje jak Ray Tracing wygląda w kilku przykładowych grach.

Minecraft 

Minecraft to wciąż jeden z najlepszych pokazów dla Ray Tracingu. Włączenie tej opcji kompletnie zmienia zachowanie światła, cieni i odbić w porównaniu ze standardowym wariantem gry (co niektórym będzie się podobać, a innym pewnie nie). Największe wrażenie robi tutaj oczywiście woda, która z niebieskiej tekstury w zwykłym wariancie staje się o wiele realniejsza po włączeniu śledzenia promieni. Niektóre bloki na potrzeby użycia Ray Tracingu otrzymały inne tekstury, więc nie jest to porównanie 1:1, ale wciąż uważam Minecrafta za dobry pokaz możliwości oferowanych przez omawianą technikę. Różnice pomiędzy RTX off i RTX on zobaczycie na poniższych zrzutach ekranu.

Scena 1

Minecraft bez RT V1
Minecraft RTX On V1

Scena 2

Minecraft bez RT z wodą
Minecraft RTX z wodą

Scena 3

Minecraft bez RTX korytarz
Minecraft RT korytarz

Wiedźmin 3

Kolejna gra to Wiedźmin 3: Dziki Gon w edycji ostatecznej. Bez zbędnego przedłużania, oto rezultaty przy wyłączonym/włączonym Ray Tracingu:

Scena 1

Wiedźmin 3 scena 1 RTX Off
Wiedźmin 3 scena 1 RTX On

Scena 2

Wiedźmin 3 scena 2 RTX Off
Wiedźmin 3 scena 2 RTX On

Scena 3

Wiedźmin 3 scena 3 RTX Off
Wiedźmin 3 scena 3 RTX On

Scena 4

Wiedźmin 3 scena 4 RTX Off
Wiedźmin 3 scena 4 RTX On

Scena 5

Wiedźmin 3 scena 5 RTX Off
Wiedźmin 3 scena 5 RTX On

Portal RTX

Bardzo imponujące (przynajmniej pod względem graficznym) wyniki śledzenia promieni można zobaczyć w specjalnej wersji Portala: Portal with RTX. Tutaj zrzuty ekranu powinny przemówić same za siebie. Trzeba tylko pamiętać, że podobnie, jak w przypadku Minecrafta: niektóre tekstury doczekały się lekkiego odświeżenia, więc nie jest to porównanie 1 do 1.

Scena 1

Portal scena 1 RTX Off
Portal scena 1 RTX On

Scena 2

Portal scena 2 RTX Off
Portal scena 2 RTX On

Control

Dobrym pokazem dla Ray Tracingu okazuje się też Control. Tutaj po aktywacji śledzenia promieni można zauważyć przede wszystkim znaczne zwiększenie jakości wszelkich odbić. Światła i cienie również wyglądają nieco lepiej niż przy “tradycyjnych” metodach jednak główne skrzypce grają tu z pewnością odbicia, które w moim poczuciu budują lepszą atmosferę.

Scena 1

Control scena 1 Ray Tracing Off
Control scena 1 Ray Tracing On

Scena 2

Control scena 2 Ray Tracing Off
Control scena 2 Ray Tracing On

Scena 3

Control scena 3 Ray Tracing Off
Control scena 3 Ray Tracing On

Scena 4

Control scena 4 Ray Tracing Off
Control scena 4 Ray Tracing On

Doom Eternal

Największą różnicę, jaką zobaczymy w Doom Eternal po włączeniu Ray Tracingu to obecność odbić we wszystkich elementach refleksyjnych (głównie oknach, czy plamach krwi), a nie tylko w wybranych przez deweloperów miejscach (które notabene nawet bez śledzenia promieni wyglądają, bardzo, ale to bardzo dobrze). Widać to na dwóch poniższych screenach, gdzie w pierwszym Doom Slayer praktycznie nie ma odbicia, a w drugim można zobaczyć już piękne lico pogromcy demonów.

Doom Eternal Scena 1 śledzenie promieni off
Doom Eternal Scena 1 śledzenie promieni on

Na dwóch poniższych screenach z wagonu również widać znaczną poprawę odbić po włączeniu Ray Tracingu. Na pierwszym zdjęciu (bez śledzenia promieni) wystrzelony granat nawet nie został ujęty w odbiciu okien, a w drugim widać już go klarownie w szybach z lewej i z prawej strony.

Doom Eternal Scena 2 Ray Tracing Off
Doom Eternal Scena 2 Ray Tracing On

Inne różnice (zwłaszcza w tak szybkiej grze) raczej trudno będzie nam dostrzec, jeśli nie będziemy ich szukać na siłę. Przykładowo 2 poniższe zdjęcia wyglądają (na moje) oko niemal identycznie pomimo tego, że w drugim przykładzie Ray Tracing został już aktywowany. Nie zawsze włączenie śledzenia promieni poskutkuje więc dużymi, dostrzegalnymi różnicami.

Doom Eternal scena 3 Ray Tracing Off
Doom Eternal Ray Tracingiem scena 3

Ray Tracing a klasyczne techniki renderowania, czyli sztuka iluzji

W powyższych przykładach można zauważyć, że kilka gier nawet bez włączenia Ray Tracingu ma już dość realistycznie wyglądające odbicia oraz światło-cienie. W przypadku takiego Dooma, odbicia w niektórych scenach są na tyle dobre, że bez inspekcji każdego pojedynczego piksela nie potrafiłbym ocenić gdzie Ray Tracing został włączony, a gdzie nie. Jak zatem osiągnięto takie efekty? A no przez wiele lat deweloperzy nie byli w stanie wykorzystywać śledzenia promieni, dlatego opanowali oni sztukę iluzji, aby stworzyć “oszukane”, ale jednak dość wiarygodnie wyglądające odbicia.

Przykładami takich “oszukanych” technik wykorzystywanych w grach w celu stworzenia w miarę realistycznych odbić i cieni śa na przykład:

  • Renderowanie sceny jeszcze raz i pokazywanie jest w lustrze w lustrzanym odbiciu (czasem za lustrem jest nawet umieszczany drugi model postaci, replikujący wszystkie nasze ruchy)
  • Wcześniej przygotowanie cieni oraz odbić i manualne wdrożenie ich do sceny (tak zwany “cube mapping”)
  • Stosowanie technik Screenspace Reflections/Screenspace Ambient Occlusion (oszacowywanie wyglądu cieni oraz odbić na podstawie geometrii i głębi obrazu).

Prawidłowe stosowanie tych technik, zazwyczaj owocuje niezłym wyglądem przy zachowaniu o wiele wyższej wydajności niż przy wykorzystywaniu Ray Tracingu. Niestety tak, jak to z wieloma sztuczkami i iluzjami bywa: można je dość łatwo złamać.

Przykładowo, wadą przygotowanych wcześniej cube maps będzie nieprawidłowe reagowanie na elementy otoczenia (jeśli obok okna przejdzie jakiś losowy NPC to jego odbicie nie zostanie pokazane).

Screenspace Reflections można za to łatwo złamać, patrząc na wodę/lustro w taki sposób, aby sam odbijany obiekt nie był widoczny na ekranie. Widać to na zrzutach pokazanych poniżej.

Odbicia są
Minecraft Java z Shaderami: obecność odbić przy patrzeniu do góry
Brak odbić
Minecraft Java z Shaderami: większość odbić znika po spojrzeniu w dół

Renderowaniem sceny wielokrotnie może się za to okazać się zbyt zasobożerne. Jeśli mamy pokój wypełniony lustrami lub oknami to w takim przypadku, aby otrzymać prawidłowe odbicia we wszystkich z nich, musielibyśmy renderować scenę kilka-kilkanaście razy, co powodowałoby spory spadek FPS.

Ray Tracing (pomimo tego, że jest dość wymagający) rozwiązuje większość problemów, które możemy zobaczyć w przypadku deweloperskich iluzji.

Minecraft z Ray Tracingiem — poprawne zachowanie odbić
Minecraft z Ray Tracingiem: odbicia wcąż są poprawnie widoczne po spojrzeniu w dół

Podczas zbierania informacji do tego artykułu, znalazłem grafikę, która dość dobrze pokazuje różnice pomiędzy danymi technikami tworzenia odbić:

Demonstracja działania różnych sposobów renderowania odbić

Porównanie wydajności RTX off vs RTX on

Przechodzimy do największego kota w worku dotyczącej Ray Tracingu, czyli do wpływu na ogólną wydajność gry. W swoich testach porównałem płynność gier Wiedźmin 3, Doom Eternal oraz Control z włączonym i wyłączonym śledzeniem promieni. Wszystkie testy były przeprowadzone na moim średnio-półkowym komputerze z procesorem AMD Ryzen 5 3600, kartą graficzną RTX 2060 Super 8 GB, oraz 16 GB pamięci RAM 3200 MHz CL16. A oto wyniki.

W Wiedźminie 3 włączenie pełnego Ray Tracingu przy ustawieniach wysokich w rozdzielczości 1440p, poskutkowało spadkiem średniego FPS o 60%: z w miarę grywalnych 43 klatek na sekundę, aż do iście żałosnych 17 klatek na sekundę.

Wydajność Wiedźmin 3

Doom Eternal na ustawieniach Ultrach, w testowej lokacji zanotował nieco mniejszy spadek: o 40%, konkretnie ze średnio 120 FPS do średnio 80 FPS. Tutaj było więc nawet nieźle jeśli chodzi o wydajność. Muszę jednak przy tym zaznaczyć, że początkowo w trakcie ogrywania Doom Eternal na tym komputerze, miałem włączony Ray Tracing i w trakcie kampanii znalazłem kilka lokacji, które mogły sprowadzić FPS do sporo niższych wartości (w okolice 40-50 FPS).

Wydajność Doom Eternal

Na koniec mamy Control, który podobnie jak Doom Eternal, gubi około 40% FPS względem tych samych ustawień bez zastosowania Ray Tracingu.

Wydajność Control

Jak widać w większości przypadków włączenie RT na średnio wydajnej karcie graficznej, kończy się znacznym spadkiem FPS. Zanim jednak skończę omawianie wydajności, to warto sprawdzić jeszcze jedną rzecz: DLSS, czyli technikę upscalingu, którą Nvidia poleca włączyć wraz ze śledzeniem promieni. Oto wydajność, wszystkich testowanych gier po włączeniu DLSS w trybie Quality:

Wydajność gier po włączeniu DLSS Quality
Wydajność gier po włączeniu trybu DLSS Quality

DLSS trochę ratuje więc całą sytuację i pozwala odzyskać parę FPS. Wciąż tylko w jednej grze (Control) po aktywacji DLSS udało mi się uzyskać poziom zbliżony do renderowania natywnego bez śledzenia promieni (to zapewne przez to, że gra korzysta z MSAA, a nie TAA, jak dwa pozostałe tytuły). Trzeba też pamiętać, że DLSS można bez problemu aktywować także bez włączenia Ray Tracingu, więc ogólne różnice wydajności  przy zachowaniu tej samej rozdzielczości renderowania/identycznego trybu DLSS byłyby bardzo podobne do pierwotnych wyników (czyli w moim przypadku: 40-60% FPS mniej po włączeniu RT). Jeśli jesteście zainteresowani skutecznością działania DLSS, to tę technologię opisywałem niedawno w innym artykule.

Czy warto używać śledzenia promieni w grach?

Przechodzimy do meritum sprawy, czyli do pytania: czy warto obecnie używać Ray Tracingu w grach? A odpowiedź brzmi… to zależy.

Ray Tracingowi na pewno nie można odmówić efektywności w tworzeniu realistycznie wyglądających scen. W niektórych przypadkach takich jak Minecraft czy Portal samo śledzenie promieni może zmienić całą grę wręcz nie do poznania. Koszt włączenia Ray Tracingu na budżetowych/średnio półkowych komputerach, czy konsolach obecnej generacji wciąż jest jednak ogromny i skutkuje o wiele gorszą płynnością w grze.

Osobiście na swoim komputerze, w tytułach takich jak Doom Eternal, czy Wiedźmin 3 wolałbym wyłączyć Ray Tracing i poświęcić nieco lepszą jakość grafiki za sporo płynniejsze animacje. W Control musiałbym się już trochę zastanowić, bo w niektórych scenach Ray Tracing rzeczywiście sporo daje, a DLSS pozwala praktycznie zanegować różnicę wydajnościową (choć po jego włączeniu bez RT uzyskałem średnio 85 FPS, a nie 55 z RTX on, co też nie jest byle jaką różnicą w płynności).

Jeśli jednak macie mocniejszy komputer (np. z kartą graficzną RTX 4070 Super, czy 4080 Super) i nawet po włączeniu Ray Tracingu jesteście w stanie wymaksować odświeżanie Waszego monitora to aktywacja tej funkcji byłaby jak najbardziej na miejscu.

Ostatecznie w większości sytuacji włączenie/wyłączenie RT będzie sprowadzało się do podjęcia decyzji, czy chcemy/możemy poświęcić sporą dozę płynności kosztem bardziej realistycznych odbić, okluzji otoczenia i cieni, czy jednak wolimy zachować znacznie wyższy FPS, ale z gorszą grafiką.

Path Tracing — jeszcze lepsze śledzenie promieni

Bardziej zaawansowaną wersją śledzenia promieni wprowadzoną niedawno do gier jest tzw. Path Tracing. Największą różnicą pomiędzy śledzeniem promieni, a Path Tracingiem jest to, że w Ray Tracingu generowany promień po odbiciu wędruje do źródeł światła. W Path Tracingu z jednego punktu wypuszczane jest kilka promieni, które po trafieniu w dany obiekty są odbijane w kompletnie losowych kierunkach. Następnie po danej (określonej) liczbie odbić (niektóre z nich mogą trafić w źródło światła, inne z nich w pozostałe obiekty, a jeszcze inne kompletnie w eter) wyznaczana jest najbardziej prawdopodobna ścieżka światła i dopiero wtedy algorytm może zostać zakończony. Dzięki Path Tracingowi przy odpowiedniej liczbie odbić możemy więc nie tylko ocenić, jak źródło światła wpływa na dany obiekt, ale też, jak światło odbijane przez dany obiekt wpływa na pozostałe elementu obrazu. Biorąc to wszystko do kupy: otrzymujemy jeszcze bardziej realistycznie wyglądającą scenę, z lepszym światłocieniem i odbiciami.

Path Tracing vs Ray Tracing
Ray Tracing (po lewej) vs Path Tracing (po prawej); źródło: Digital Foundry

Jak można się łatwo domyślić: Path Tracing jest jeszcze bardziej wymagający niż podstawowy Ray Tracing. Właśnie dlatego w nowoczesnych grach, ta technika jest zarezerwowana tylko i wyłącznie dla układów graficznych z wysokiej półki. W takim Cyberpunku 2077 CD Projekt Red do włączenia Path Tracingu poleca CO NAJMNIEJ RTX’a 4070 Ti lub RTX’a 3090. W innej grze z Path Tracingiem: Alan Wake II, producent do uruchomienia Path Tracingu w 1080p z DLSS Quality poleca za to RTX’a 4070.

Podsumowanie

Mam nadzieję że ten artykuł wyjaśnił wam, czym dokładnie jest śledzenie promieni w grach. Koniecznie dajcie znać w komentarzach, czy waszym zdaniem warto korzystać z tej techniki, czy też lepiej poświęcić nieco wyglądu dla znacznie lepszego FPS!

Podobał Ci się artykuł i chcesz wesprzeć tworzenie podobnych treści? Możesz postawić mi kawę/herbatę (zapewne to drugie) w serwisie buycoffee.to

Zaproszenie na kawę

Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *