autor: Nils Raettig (gamestar.de)
Rasteryzacja. Czym jest ray tracing?
Spis treści
Rasteryzacja
Aby móc wyrenderować w grze komputerowej właściwy obraz świata (3D) do wyświetlenia na monitorze komputera (2D), potrzebny jest nam jakiś punkt wyjścia. Z reguły jest to punkt widzenia, który przyjmujemy jako gracz; w pewnym sensie rozumiemy go jako wirtualną kamerę, która patrzy na świat gry.
Obiekty otaczające gracza zazwyczaj są trójwymiarowe, tak więc do poziomej osi X oraz pionowej osi Y dochodzi jeszcze oś Z, odpowiedzialna za głębię obrazu. Co więcej, składają się one z wielu pojedynczych wielokątów (z reguły stosowane są trójkąty), które z kolei tworzą znane wszystkim modele szkieletowe pokryte teksturami.
W technice rasteryzacji uproszczony obraz trójwymiarowego świata gry jest rzutowany na dwuwymiarową (pikselową) siatkę (patrz: obraz powyżej). To, co pokazane jest na ekranie, zależy od bieżącego punktu widzenia przyjętego w świecie gry. Wielokąty zawarte na obrazie znajdują się na określonych pikselach i tym samym mają wpływ na ich kolor.
Battlefield V i RTX: ponieważ większość płomieni znajduje się poza polem widzenia, na obrazie po lewej (bez ray tracingu) nie odbijają się one od błyszczącej powierzchni samochodu – co natomiast dzieje się w przypadku zastosowania tej techniki na obrazie po prawej.
Jeśli obiekt znajduje się poza polem widzenia (lub jest zasłonięty innym obiektem), nie będzie on wyświetlany na siatce. Z jednej strony powoduje to oszczędności w zużyciu mocy obliczeniowej, z drugiej natomiast oznacza, że pominięte obiekty mogą zostać uwzględnione w schemacie kolorów tylko pośrednio.
Sytuacja ta sprawia pewne problemy, szczególnie w przypadku oświetlenia i odbić. Źródło światła może mieć wpływ na postrzeganie sceny, nawet jeśli nie jest ono bezpośrednio widoczne dla gracza. Powierzchnie odbijające światło mogą pokazywać rzeczy, które nie znajdują się w naszym polu widzenia.
Aby móc uzyskać obraz jak najbardziej zbliżony do rzeczywistego, obecne silniki 3D wykorzystują rozmaite sztuczki, takie jak dodatkowe perspektywy kamery. W ogólnym rozrachunku czyni to z rasteryzacji opcję oferującą dobrą wydajność, która jest jednocześnie relatywnie przekonująca pod względem wizualnym.
Promienie zamiast siatki
Dużą zaletą ray tracingu jest to, że dzięki niemu sztuczki, które odpowiadają za realistyczną prezentację obrazu, nie są już niemalże potrzebne. Jednocześnie podstawowa reguła tej techniki renderowania jest całkiem prosta: w zasadzie symuluje ona, w jaki sposób postrzegane jest środowisko przez nasze oczy. Tutaj promienie światła (przykładowo słonecznego) docierają do przedmiotów, a następnie się od nich odbijają. Te odbicia z kolei docierają do oka i po odpowiednim przetworzeniu przez mózg dają obraz otoczenia odbiorcy.
Ray tracing do pewnego stopnia odwraca ten proces i przy pomocy wirtualnego oka wysyła promień z każdego piksela do świata gry, a następnie go śledzi. Stąd też bierze się nazwa techniki, gdzie „ray” oznacza promień, natomiast „trace” oznacza podążanie za czymś.
Jeśli jedna z tych wiązek dotrze do obiektu (lub wielokąta), dzięki ray tracingowi komputer nie tylko rozpoznaje, że ów obiekt się tam znajduje, ale także uwzględnia jego właściwości (takie jak kolor lub struktura powierzchni) i to, jaki ma wpływ na wiązkę światła. W zależności od kąta padania oraz rodzaju obiektu, strumień światła może być odchylony, a nawet załamany (na przykład w przezroczystych materiałach, takich jak szkło).
Wiązki światła można również dokładnie śledzić w miejscach, które nie znajdują się w zasięgu pola widzenia wirtualnego oka. Dlatego znajdujące się poza nim obiekty i źródła światła przy zastosowaniu ray tracingu mogą mieć wpływ na przedstawienie obrazu, co jest graczom bardzo dobrze znane ze świata rzeczywistego.
Ale nawet jeśli technika sama w sobie jest stosunkowo łatwa do wdrożenia, jej zastosowanie oznacza dość duże zużycie mocy obliczeniowej do śledzenia odpowiednio dużej liczby promieni potrzebnych do zobrazowania świata gry. Jest to również powód, dla którego technika ray tracingu w czasie rzeczywistym nie była dotychczas stosowana w grach.
Podczas prezentacji nowych kart graficznych z serii RTX 2000 prezes Nvidii, Jen-Hsun Huang, powiedział, że ray tracing w czasie rzeczywistym będzie wymagał mocy obliczeniowej rzędu petaflopów – co może być osiągnięte najwcześniej za 10 lat. Ta moc obliczeniowa odpowiada jednemu kwadrylionowi zmiennoprzecinkowych operacji arytmetycznych na sekundę (10^15). Obecne karty graficzne osiągają wartości w zakresie „zaledwie” teraflopów, co odpowiada jednemu bilionowi operacji arytmetycznych (10^12). A zatem właściwie jak Nvidia ma zamiar zaimplementować technikę ray tracingu w czasie rzeczywistym już teraz?