REKLAMA

Grafika w grach będzie jeszcze piękniejsza. Ray tracing trafia do DirectX

Trwa konferencja GDC 2018, podczas której Microsoft ogłosił istotną nowość dla DirectX. Dzięki niemu twórcy gier i programów wykorzystujących grafikę 3D będą mogli implementować ray tracing - jeszcze dokładniejszą metodę renderowania obrazu.

DirectX Raytracing
REKLAMA
REKLAMA

Śledzenie promieni (ray tracing) to jedna z najbardziej złożonych metod generowania trójwymiarowej grafiki cyfrowej. Polega na analizowaniu promieni światła w wirtualnej scenie, które docierają do obserwatora. Zarówno w sposób bezpośredni, jak i na skutek odbicia czy załamania.

Daje ona niesamowite efekty, choć nie jest w pełni doskonała. Nie uwzględnia ona światła rozproszonego, trudno za jej pomocą symulować dyfrakcję, rozczepienie światła czy jakiekolwiek interferencje falowe. Jest ona jednak przede wszystkim bardzo zasobożerna.

Sęk w tym, że konsumenckie układy graficzne są już bardzo wydajne. Zarówno w komputerach osobistych, jak i w konsolach dla gier. Microsoft uznał, że najwyższy czas, by jego główne API do modelowania grafiki 3D uwzględniało ray tracing.

Po co Microsoft wprowadza ray tracing do DirectX 12?

Do tej pory właściwie każda gra wykorzystywała technikę rasteryzacji do renderowania obrazu. Polega ona na transformacji wirtualnej trójwymiarowej sceny w klatkę dwuwymiarowego obrazu składającą się z pikseli, po drodze stosując technikę bufora Z i usuwania niewidocznych powierzchni (occlusion culling) by nie obciążać sprzętu generowaniem pikseli niewidocznych dla obserwatora.

DirectX Raytracing class="wp-image-702390"
W procesie rasteryzacji piksele niewidoczne dla obserwatora nie są przetwarzane

Metoda ta sprawia jednak kilka problemów w nowoczesnych grach wideo. Programiści muszą uwzględniać w procesie technologicznym rasteryzacji różne wyjątki. Na przykład, usunięte przez wyżej wspomniane techniki obiekty faktycznie nie są widoczne na ekranie, ale… co z cieniem, który rzucają i który widoczny już być powinien? A to przecież tylko drobny problem: złożone światy nowoczesnych gier składają się z tysięcy wzajemnie oddziałujących na siebie obiektów, emitujących światło odbite, refleksy czy wpływające na inne sposoby zjawiska na postrzegany obraz końcowy.

DirectX Raytracing w znaczący sposób rozwiąże ten problem. Co więcej, ma działać na dzisiejszym sprzęcie, a więc tym zgodnym z DirectX 12 API. Będzie też zaimplementowany w silnikach Frostbite, SEED, Unreal Engine i Unity. Twórcy gier i programów do grafiki 3D będą mogli więc korzystać ze znanego im sprzętu i narzędzi.

Jakie będą efekty wprowadzenia ray tracing do DirectX 12?

Rasteryzacja to technika, która nie uwzględnia wpływu jednego obiektu na barwę i fakturę drugiego. Widzimy ów wpływ w grach wideo tylko z uwagi na fakt, że twórcy gier opanowali do perfekcji przeróżne sztuczki w algorytmach, które zazwyczaj mają niewiele wspólnego z prawdziwą symulacją. Wspomniane sztuczki mają jednak swoje limity, na dodatek są to bardzo złożone algorytmy budowane z myślą o konkretnych grach, a czasem wręcz dla konkretnych scen.

DirectX Raytracing class="wp-image-702378"
Scena wyrenderowana przez silnik SEED przy użyciu DirectX Raytracing

Silnik graficzny wykorzystujący śledzenie promieni potrafi określić barwę każdego z pikseli na podstawie drogi, jaką światło musi pokonać do obserwatora, uwzględniając wszelkie interakcje z przeróżnymi obiektami po drodze. To prawdziwa symulacja, dająca dużo lepsze i wierniejsze rzeczywistości efekty. Dzięki ray tracingowi nie trzeba kombinować, by wyświetlić odpowiednie cieniowanie, oświetlenie pośrednie czy refleksy. Nie są one osiągane przez dodatkowe efekty graficzne, a już podczas renderowania samej sceny.

REKLAMA

Na razie nie ma w sprzedaży gier, które wykorzystywałyby śledzenie promieni, choć studio Remedy Games przygotowało techniczne demo z implementacją ray tracingu w swoim silniku Northlight. Twórcy gier mogą już eksperymentować z tą techniką. Jej dokumentacja znajduje się na witrynie Microsoftu.

REKLAMA
Najnowsze
REKLAMA
REKLAMA
REKLAMA