Rewolucja czy zbędny bajer? Sprawdziliśmy Ray Tracing w praktyce, na przykładzie Control i grafiki GeForce RTX 2080 Super
Control zasługuje na uwagę graczy nie tylko ze względu na to, że to po prostu fantastyczna gra. To także jedna z pierwszych produkcji, która wykorzystuje na PC dobrodziejstwa technologii Ray Tracingu.
Miałem przyjemność grać w Control na nowej karcie graficznej Nvidia GeForce RTX 2080 Super, pozwalającej mi na w pełni płynną rozgrywkę w rozdzielczości 2560 x 1440, maksymalnych detalach i włączonych wszystkich bajerach graficznych.
Jednym z tych „bajerów” jest właśnie Ray Tracing – technologia śledzenia promieni. Przyznam szczerze, że gdy pierwszy raz usłyszałem o Ray Tracingu, nie miałem go za jakiś wielki przełom. Od strony technicznej tak naprawdę… Ray Tracing przełomem nie jest, bo znakomitą większość efektów można już uzyskać stosując inne technologie. Po tym jednak, jak pograłem w Control, trudno mi wrócić do gier, które Ray Tracingu nie oferują.
Czym jest Ray Tracing?
Oddaję tutaj głos mojemu mądrzejszemu koledze, Maćkowi Gajewskiemu:
Śledzenie promieni (ang. Ray-Tracing) to technika generowania obrazu, której w żaden sposób nie można określić jako nową. Pierwszą scenę wyrenderowaną tym sposobem stworzono już w 1982 r. przy użyciu jednego z superkomputerów na japońskiej uczelni. Śledzenie promieni to prawdopodobnie ostateczna, ta najbardziej realistyczna metoda generowania wirtualnych światów.
Wykorzystuje bowiem dokładnie taką samą technikę postrzegania rzeczywistości, co nasz mózg. A więc analizuje wiązki światła, jakie wpadają do ludzkiego oka czy wirtualnej kamery. Dzięki temu cała gra światła, cienia i mieszających się barw, refleksy twarde i miękkie, wszystko wygląda lub wyglądać powinno jak w rzeczywistości. Osoby mające chociaż mgliste pojęcie o fizyce i informatyce podniosą zapewne teraz brew ze zdumienia. Ale że jak, komputer symuluje bazyliardy wiązek światła, w tym ich odbicia od materiałów o różnych właściwościach fizycznych? Nie, to na razie niemożliwe. Nawet potężny GeForce RTX z dodatkowymi rdzeniami akcelerującymi przeliczenia związane ze śledzeniem promieni tego nie realizuje. Tym niemniej jest już na tyle mocarny, by móc wykorzystać uproszczoną wersję śledzenia promieni.
I nie dla całej sceny, a tylko do jej pewnych elementów.
Co właściwie daje nam, graczom, śledzenie promieni? Technicznie, tak na dobrą sprawę… nic.
Teoretycznie nie ma żadnych przeciwwskazań, by wyrenderować jakąś wirtualną scenę inną metodą niż Ray Tracing i osiągnąć identyczny efekt. To jednak nie oznacza, że to całe śledzenie promieni to jakiś szwindel, by wyciągnąć z naszych kieszeni dużo pieniędzy. Kluczowe w poprzednim zdaniu było słowo teoretycznie.Współczesne gry, by wizualizować realistycznie wyglądające światłocienie, barwy, odbicia świetlne i refleksy, stosują wiele rozmaitych sztuczek. Skyboxy, screen space reflections i wiele innych technik sprawiają, że gry całkiem przekonująco symulują zachowanie się światła w wirtualnym świecie. To jednak wszystko oszustwa.
Przeróżne programistyczne sztuczki, których iluzja jest skuteczna, dopóki im się bliżej nie przyjrzymy. Na dodatek, by oszczędzać zasoby komputera lub konsoli, silniki gier dynamicznie podmieniają wirtualne obiekty na ekranie w różnych stopniach szczegółowości. Nie ma sensu renderować złożonej struktury korony drzewa, skoro ta znajduje się za graczem i ten jej nie widzi. Ale przecież to drzewo może rzucać cień, który będzie już widoczny na ekranie. Śledzenie promieni rozwiązuje twórcom gier wiele problemów. Zamiast opracowywać kolejne abstrakcyjne mechanizmy mające zwiększać realizm grafiki 3D, po prostu symulują rzeczywistość. Nie muszą się zastanawiać, co gracz powinien zobaczyć, przeglądając się w wirtualnym lustrze i jak to wygenerować. Załatwi to za nich silnik gry. Nadal brzmi jak szwindel! Mam płacić za to, by komuś innemu było łatwiej?
Gra, jak każdy program komputerowy, może mieć określoną złożoność. Im więcej hacków i trików, tym program jest mniej stabilny, trudniejszy w utrzymaniu i rozwoju, a przede wszystkim ich opracowanie kosztuje cenne roboczogodziny programisty. Nikt nie będzie czekał, aż ten rozwiąże informatyczny problem, jakim jest, na przykład, zachowanie się światła pioruna podczas nocnego rajdu w deszczu. Gra ma wyjść już za dwa lata, jeżeli programista nie rozwiąże tego przez miesiąc, zastosujemy mniej atrakcyjne wizualnie rozwiązanie.
By zrozumieć, jak ogromne korzyści daje przejście na nowocześniejszą, choć znacznie bardziej wymagającą technologię generowania obrazu, cofnijmy się w czasie o dwie dekady.
Rynkiem gier, podobnie zresztą jak i dziś, rządzi gatunek shooterów. Jego czołowym reprezentantem i wówczas niedoścignionym wzorem jest Doom. Przeciwnicy w tej grze nie są trójwymiarowymi obiektami. By gra działała na ówczesnych komputerach, potrzebne było uproszczenie rzeczywistości. Złowrogie demony są generowane jako bitmapy. A więc dwuwymiarowe obrazki, które moglibyśmy nawet stworzyć w Paincie. Ta technika zapewnia doskonałe rezultaty i wymaga od sprzętu znacznie mniej. Rodzi jednak pewien problem: skoro potworek to dwuwymiarowy obrazek, to oznacza, że twórca gry musi ręcznie stworzyć każdą klatkę jego animacji. A potem czynność powtórzyć, by zilustrować potworka obserwowanego pod innym kątem. A potem pod jeszcze innym. I tym jeszcze innym. A potem w wersji jak strzela. I jak biegnie.
To absurdalna ilość pracy, dlatego też wrogowie w Doomie poruszają się jak w animacji poklatkowej. Rewolucję w shooterach przyniósł Quake. Ta jednak miała swoją cenę: Doom działał nieźle na procesorach 386, Quake wymagał o kilka generacji nowszego Pentiuma. Przeciwnicy w Quake’u, gdyby nie wyższa rozdzielczość samej gry, wcale nie wyglądali jakoś dużo lepiej niż ci w Doomie. Byli jednak stworzeni z trójwymiarowych wieloboków, zamiast z bitmap. To oznacza, że deweloperzy zostali zwolnieni z dużej ilości pracy. Gra sama już symulowała jak taki potworek wygląda z każdej strony, pod każdym kątem, w dowolnym oświetleniu.
Quake otworzył drogę do gier, które wyglądają o tak:
Control mógłby w teorii być stworzony metodą przypominającą tę z Dooma. Tyle że zbudowanie go w ten sposób prawdopodobnie zajęłoby jakieś trzy dekady, by osiągnąć podobną precyzję w oprawie graficznej. Śledzenie promieni to więc jak najbardziej rewolucja dla graczy.
Jesteśmy w bardzo wstępnej fazie jego rozwoju. GeForce’y GTX możemy przyrównać historycznie do pierwszych akceleratorów 3D pokroju S3 Virge, które w malutkim stopniu odciążały CPU od generowania grafiki. Musieliśmy jeszcze po drodze zaliczyć ery Voodoo Graphics i Rivy TNT by dojść w końcu do GeForce’a 256, pierwszej karty potrafiącej samodzielnie wyrenderować wszystkie elementy sceny 3D. To jednak nie oznacza, że już teraz nie warto się tym interesować.
Rozejrzyjcie się po całym artykule i zwróćcie uwagę, jak wiele zyskuje Control nawet po dodaniu bardzo prostej, obejmującej tylko część wirtualnej sceny metodzie śledzenia promieni. Ray Tracing to święty graal parających się branżą gier inżynierów i grafików 3D. Skoro już teraz symulacja sceny po promieniach światła na tym etapie zapewnia widoczne na ilustracjach rezultaty, to wyobraźmy sobie, co będzie możliwe za parę lat, z jeszcze lepszymi GPU.
Skoro już wiemy, czym od strony technicznej jest technologia śledzenia promieni, przyjrzyjmy się, jak wykorzystuje ją Control.
Trzeba na wstępie od razu powiedzieć wprost, że w większości zastosowań różnice między Ray Tracingiem włączonym a wyłączonym będą niemal niewidoczne na statycznych screenshotach. Śledzenie promieni ukazuje swoje prawdziwe możliwości dopiero w ruchu, dynamicznie zmieniając oświetlenie sceny.
Można to zobaczyć na oficjalnej prezentacji Nvidii, gdzie bardzo wyraźnie widać, jak Ray Tracing „ożywia” sceny. Świetlne odblaski tańczą po powierzchniach, rozbłyski są bardziej naturalne, pojawiają się odbicia w szybach, których bez Ray Tracingu nie uświadczymy w grze:
Subtelne różnice widać jednak nawet w statycznych scenach.
Spójrzmy tutaj na ścianę po prawej stronie. Tak wygląda z włączonym Ray Tracingiem:
A tak z wyłączonym:
Wprawne oko dostrzeże od razu, że światło padające na ścianę przez świetliki w suficie wygląda o wiele bardziej naturalnie przy włączonym śledzeniu promieni. Faktura boazerii jest lepiej zaakcentowana, żywsze i głębsze są też cienie.
Podobnie jest ze światłem wpadającym z oświetlonego do nieoświetlonego pomieszczenia. Bez śledzenia promieni wiązka jest statyczna, a faktura posadzki się nie zmienia:
Po włączeniu Ray Tracingu w posadzce widać wyraźne odbicie z pomieszczenia, gdzie znajduje się źródło światła. Scena od razu nabiera głębi.
Co ciekawe, Ray Tracing momentami zachowuje się jak dokładne przeciwieństwo HDR-u. Założeniem HDR-u jest idealna widoczność zarówno detalu w cieniach, jak i w prześwietleniach. Tak wygląda scena bez Ray Tracingu:
A tak z włączonym śledzeniem promieni:
W scenie bez śledzenia promieni widzimy poszczególne elementy żaluzji chroniącej okno, widzimy detale na starym szkle. Gdy jednak włączymy Ray Tracing, te detale znikają: zupełnie tak, jak zniknęłyby w rzeczywistości, gdyby przez okno padało tak ostre światło.
W przypadku Control Ray Tracing najwyraźniej widać jednak w odbiciach. Niezależnie od sceny, dodają one grafice realizmu, tym samym zwiększając poczucie immersji. Nie żeby bez Ray Tracingu Control wyglądał źle, tej scenie np. nic nie brakuje – światło jest dynamiczne, cienie i prześwietlenia pięknie ze sobą kontrastują, nie można powiedzieć złego słowa:
Kiedy jednak włączymy Ray Tracing, nagle żyje nie tylko górna część sceny z wielkimi drzewami w tle, ale także dolna, z posadzką, w której mieni się odbicie tych drzew, którego bez Ray Tracingu nie widać.
Niby drobiazg, ale właśnie dzięki takim drobiazgom rozgrywka z włączonym śledzeniem promieni to fascynujące doświadczenie.
Czy dużo tracimy grając w Control bez Ray Tracingu?
Cóż, uczciwie mówiąc… nie.
Jeśli grasz w Control na konsoli lub pececie ze starszą generacją kart graficznych, nadal nie masz czego żałować. Gra sama w sobie oferuje istną feerię rozbłysków, efektów i graficznych fajerwerków; Ray Tracing jest tylko wisienką na torcie. Wisienką, której czasem nawet nie widać, jak np. w tej scenie.
Konia z rzędem temu, kto powie, który screenshot przedstawia ustawienie RT włączone, a które wyłączone:
W takiej scenie różnicy po prostu nie ma. Tam zaś, gdzie różnice są - jak sami widzieliście - bardzo subtelne, wynika to z faktu, iż Control w wersji nie-na-RTX do symulowania odbić poza techniką screen space reflections wykorzystuje technikę voxel cone tracking. A ta jest niczym innym jak bardzo prymitywną formą Ray Tracingu. Dlatego własnie Control również i bez karty graficznej RTX wygląda tak dobrze.
Nie mogę więc powiedzieć, żeby Control był grą, dla której warto zmieniać kartę graficzną na nową (choć z pewnością jest grą, w którą absolutnie trzeba zagrać!). Patrząc jednak na to, iż na horyzoncie pojawiają się kolejne gry, które będą wykorzystywać Ray Tracing w jeszcze pełniejszym stopniu (odświeżony Minecraft), zakup GPU z serii Nvidia RTX zdecydowanie powinien znaleźć się na liście perspektywicznych zakupów.
Zwłaszcza jeśli oprócz grania korzystacie z komputera także do pracy. Ale to już temat na osobny materiał.
Współpraca: Maciej Gajewski