Ray Tracing AD 2023

BLOG
1942V
user-54173 main blog image
Gracz23 | 10.01.2023, 11:53
Poniżej znajduje się treść dodana przez czytelnika PPE.pl w formie bloga.

Mesjasz grafiki komputerowej, który niby już jest, ale jeszcze nie dokonał cudów. Tak można podsumować aktualny stan Ray Tracingu (dalej RT) w grach. Dlaczego jest on tak ważny? Ponieważ, w teorii, wynosi grafikę na wyższy poziom, umożliwiając tworzenie realistycznych odbić, ceni, czy nawet w przyszłości uwzględniać odbijanie światła od powierzchni o różnej gęstości itd. Spokojnie, postaram się nie wchodzić w zbytnie szczegóły, dając jedynie te niezbędne informacje, by nie komplikować.

Czym jest RT?

Dość szybko i przystępnie tłumaczy poniższy filmik

W skrócie to nieco odwrócony proces tego, jak my widzimy światło. Normalnie światło wychodzi ze źródła (np. naszej gwiazdy), odbija się od danej powierzchni w określony sposób (nadając koloru, połysku itd.), a my, jeżeli jesteśmy tak ustawieni, by te promienie trafiły do nas, możemy to wszystko obserwować. Przy RT, z uwagi na ograniczenie nieskończonej liczby kalkulacji, którą musiałby wykonać procesor, aby obliczyć to tak, jak w rzeczywistości, odwrócono ten proces. Promienie wychodzą od obserwatora, czyli nas (w grze), odbijają się od danej powierzchni i jeżeli trafią na źródło światła, to widźmy to. Nie ma wymogu dalszej kalkulacji dla promieni, które tam nie trafiły, a sam procesor (w tym wypadku graficzny) wie to dzięki wielokątom (boxom - czyli strefom, do których promienie wchodzą oraz trójkątom - obiektom, od których promienie się odbijają). Obiekty w grze są podzielone na takie wielokąty (dajmy na to, że lustro to jeden taki wielokąt). Jeżeli promień (wysłany z kamery gracza) trafi w taki wielokąt (box/strefę), zaczyna się dalsza kalkulacja. Wielokąt założonego lustra podzielony jest na strefy (co ogranicza liczbę kalkulacji) i pod uwagę jest brana tylko strefa obiektu, od której promienie się odbiły. Jeżeli promień trafił już do źródła światła, tu kończy się kalkulacja, jeżeli odbił się od czegoś ponownie, ta trwa dalej, dzieląc obiekty na kolejne strefy itd. Można napisać, że algorytm za każdym razem zadaje pytanie, czy trafiono w daną strefę (box) i na podstawie odpowiedzi tak/nie leci dalej, aż nie trafi do źródła śiatła, odbity od jakiegoś trójkąta. Tak powstaje drzewo hierarchii odbić (BVH), z którego jest układana macierz do obliczeń dla GPU/CPU. Więcej o tym procesie tu: https://developer.nvidia.com/blog/thinking-parallel-part-ii-tree-traversal-gpu/

Oczywiście, jest to bardzo uproszczony opis. Dokładniejszy w filmiku Intela na samym końcu. Ale po co o tym wszystkim piszę? Dlatego, że tu pojawiają się najważniejsze różnice w tym, jak RT działa na danym sprzęcie - karty w różny sposób obliczają, a konkretnie, mają określoną liczbę obliczeń dla wspomnianych wyżej wielokątów na cykl obliczeniowy, w jednostce obliczeniowej (czyli miejscu specjalnie zaprojektowanym do obliczeń RT – z własną pamięcią podręczną, specjalnymi instrukcjami – to są właśnie RT cores u NV czy RT Units w Xe Cores u Intela, które nie zajmują się innymi rzeczami). Wydajność GPU zależy właśnie od liczby wielokątów, która może być przetworzona w cyklu oraz od tego, jak cały proces przebiega (instrukcji). Dla poszczególnych producentów wygląda to tak (linki w hiperłączach pod nazwami jednostek):

 

Nazwa jednostki Jednostka sortująca Pippelines Box per cycle Triangle per cycle Dedykowana pamięć
Intel RTU Xe Dedykowana 2/asynch 12 1 tak
Nvidia RT Cores 1st gen Bazowa gpu zintegrowana z RT cores 1/asynch Nieznana/asynch 1 tak
Nvidia RT Cores 2nd/3rd gen Bazowa gpu zintegrowana z RT cores 1/asynch Nieznana/asynch 2 tak
AMD Ray Accelerators Bazowa gpu 1 4 1 nie

Wersja w obrazie

Zdziwieni powyższym?

Trochę wyjaśnia, czemu „AMD nie potrafi w RT”. Ich głównym problemem jest brak dedykowanych rdzeni (z własną pamięcią itd.) pod obliczenia RT. Zamiast tego zintegrowali Ray Accelerator ze swoimi normalnymi jednostkami obliczeniowymi (współdzieląc kontroler oraz pamięć). Natomiast nie jest tak, że oznacza to zupełną klęskę. Inne podejście, to też inne możliwości oraz inne instrukcje RT. Dlatego przy okazji premiery RDNA 3 – seria RX 7000 (druga generacja kart AMD, która potrafi obsługiwać RT sprzętowo), nie zmieniali liczb jednostek, a poprawili ogólny kontroler i dodali nowe instrukcje. Efekt jest ok. - AMD radzi sobie z RT coraz lepiej, a seria 7000 zyskała od kilku do kilkunastu procent względem poprzedniczki (na obrazku macie te "box pre cycle" i "triangel per cycyle" w liczbach odpowiadajacym AMD RT accel). Nvidia, przechodząc z Ampere (seria 3000) na Ada Lovelace (seria 4000), zmieniła rzeczy, których nie widać w tabelce, a które nawet mocniej niż w AMD poprawiły efektywność RT (dodali siatki Displaced Micro-Meshes, które znacząco poprawiają szybkość tworzenia tych drzewek).

Możecie być też zdziwieni tym, jak dobrze Intel wygląda na papierze, ale to wszystko przekłada się na praktykę… gdy działa. Faktycznie, Intel jest nr 1 w RT, gdy jego sterownik działa, a niestety, z uwagi na choroby wieku dziecięcego, ten ma swoje kłopoty. Więc dalej jest tak, że jeżeli planujecie składać PC typowo pod RT (by doświadczyć tej „nowości”), to wyborem nr jeden powinna być karta NV. Oby Intele ARC drugiej generacji wyleczyły się z chorób, a AMD poprawiło RT na serii 8000 o tyle, ile na 7000, to będzie naprawdę bardzo fajnie i konkurencyjnie w RT.

Samo obliczenie matrcy RT nie obciąża normalnych jednostek obliczeniowych karty. Po to każdy producent ma dedykowane jednostki. Problemem jest to, by wszystko zgrać w czasie. Obliczyć śledzenie promieni (RT cores/ RTU Xe/ RT acce), a następnie normalną grafikę z tym, co otrzymaliśmy z matrycy RT (Compute Unit - zwykłe shadery). To tu zazwyczaj normalna grafika musi poczekać na RT lub, po prostu, kontroler musi zgrać to w czasie, co wydłuża proces i powoduje mniejszą liczbę klatek. Trochę inaczej to wygląda u AMD, gdzie RT accel jest przyspawany do CU (Compute unit). U nich RT powoduje większy wpływ na ogólne obliczenia, z uwagi na współdzielenie wszystkiego w tychże (kontrolera oraz pamięci). Żebyście dobrze zrozumieli - nie jest tak, że u NV czy Intela zwykłe jednostki obliczeniowe (CUDA cores dla NV, Xe cores dla Intela), nie uczestniczą w całym procesie. Uczestniczą i to bardzo - po obliczeniu matrcy, to one odpowiadają za brudną robotę. Tak samo u AMD.

Da się to wszystko obejść, wykonując obliczenia matrycy RT na CPU, zamiast GPU, ale to decyzja projektantów silników i gier, natomiast jest to mało efektywne (CPU, pomimo bardzo dużo mocy dziś, nie dorównują tu dedykowany jednostko z GPU). Taki trik zrobili twórcy Spider Mana, gdzie mamy RT dla odbić nieprzejrzystych (opaque), a matryca obliczana jest na CPU. Na konsoli ma to sens. Z RT mamy 30 klatek, więc CPU i tak da radę (bez RT robi prawie 60, z RT trochę ponad 30), a GPU AMD nie ma dodatkowego narzutu, więc można utrzymać klatki/rozdzielczość. Na PC, niestety, taka decyzja sprawiła, że Spider Man jest w stanie zajechać każdy CPU, a gracze PC raczej nie chcą latać po mieście w 30 klatkach. Nawet najlepsze gamingowe procesory w Spider Manie z włączonym RT mają problem z przekroczeniem 100fps, gdzie bez RT robią 180-200 (oczywiście, gdy karta pozwala).

Tak więc można napisać, że konsole aktualnej generacji raczej nie będą królowały w RT (RDNA 2 - liczb nie zmienią, kontrolera i instrukcji jak na RDNA 3 nie poprawią). Pytanie, czy nie będzie miało to ogólnego wpływu na rozwój RT (jego spowolnienie). Może coraz częściej twórcy będą decydowali się obliczać  RT na CPU, co ma swoje ograniczenia. Po pierwsze, przy Ryzenie, który siedzi w konsolach i grach AAA (z jakaś tam fizyką w tle), z miejsca blokuje nam klatki do 30 fps przy. Po drugie ogranicza samo RT do najprostszych efektów (odbicia nieprzejrzyste i cienie lokalne, ale na pewno nie kontaktowe), gdyż większy narzut spowodowałby dławienie CPU. Czas pokaże, gdyż czasami wystarczy odpowiedni zespół devów i silnik (o tym więcej na koniec wpisu - #”4A Games potrafi, a inni nie”).

Teraz druga część – dotycząca tego co i jak można w grach odbijać (śledzić promienie).

Po pierwsze efekty możemy stosować lokalnie oraz globalnie.

Lokalne dotyczy konkretnych obiektów/źródeł świtał, globalne dotyczy „wszystkich” obiektów (wszystkich, które bierze pod uwagę mapa i matryca). Dla przykładu w takim Spider Manie mapa (rozpiska, które obiekty podlegają RT, a które nie) może różnić się dla wersji " target="_blank" rel="noopener">PC oraz PS5, gdzie na PC mamy cienie małych roślin i jakiś mniejszych obiektów, a na PS5 już ich mapa nie obejmuje. Ma to swój ogromny wpływ na wydajność. Dodatkowo mamy różnice w jakości stosowanych efektów (rozdzielczość odbić oraz cieni, zasięg rysowania itd.).

Skoro już wiemy, że efekty RT mogą mieć różne mapy odniesienia, rożne rozdzielczości, różne zasięgi itd., to jakie to są w końcu efekty?

Linki w hiperłączach

Odbicia (Reflections) – stosowane początkowo lokalnie, na bazie mapy obiektów. Nie wiem, czy pamiętacie, ale tym chwalił się Battelfield V.

Cienie(Shadows) ogólne/kontaktowe – tu już jest większa matematyka, gdyż te mogą być częścią globalnego oświetlenia, ale nie muszą. Mogą dotyczyć wyłącznie określonych źródeł światła. O tym wszystkim decyduje wspomniana mapa.

Okluzja otoczenia (Ambient Occlusion) – efekt ten w 100% zastępuje dotychczasową metodę okluzji, będąc bardziej realistycznym oraz dokładnym.

Globalne oświetlenie – może być całkowite (wszystkie źródła światła) lub częściowe (określone źródła światła). Pamiętacie, jak pisałem o tym opisując czym jest RT - że promie wychodzą z kamery, odbijają się od obiektów i lecą do źródła światła, to jest właśnie to, tylko nie wyłącznie dla cieni czy odbić od określonej powierzchni, a dla wszystkiego.

Dynamiczne rozpraszanie oświetlenia (Dynamic Diffuse Illumination) – jako część globalnego oświetlenia, powoduje, że światło jest prawidłowo rozpraszane i nadaje powierzchniom określony wygląd oraz poświatę kolorystyczną (np. latarka odbita od czerwonej flagi, nadająca inną temperaturę barwową obiektom obok).

Troszkę inną parą kaloszy jest tzw. Path Tracing (w uproszczeniu i skrócie - pełne renderowanie prze ray tracing) Technika najbardziej wymagająca, tworzącą całą scenę z RT.

Efektów szczegółowych jest więcej, ale to są te główne. Każdy z nich wymaga masy różnych obliczeń, o czym więcej na stronach z hiperłączy powyżej, w akapitach "properties" (oczywiście na każdym silniku to wygląda trochę inaczej). 

Które gry i jak wykorzystują RT? (hiperłącza) 

Kolorystyczna wersja tabelki (zielone = występuje; czerwone = brak efektu):

Większa wersja tabelki 

Źródła - hiperłącza (przy riftbreaker fajnie opisane co i jak):

Battlefield V; Control UE; " target="_blank" rel="noopener">Crysis Remastered; Cyberpunk 2077; Forza Horizon 5; Metro Exodus EE; Portal RTX; Quake II RTXResident Evil Village ; Riftbreaker; Spider Man Remaster ; Spider Man Miles Morales ; The Witcher 3

Tytułów z RT jest dużo więcej, ale wybrałem część, która jest dość popularna i ma RT w różnym wykonaniu. Testowałem prawie wszystkie z powyższych i wiem, że o RT mówi się, iż nie robi takiej różnicy, ale… Portal RTX to fajne demo technologii, natomiast prawdziwym "strzałem w 10" było dla mnie Metro Exodus Enhanced Edition, które, podobnie jak Portala i Quaka, z uwagi na pełną implementację RT w globalnym oświetleniu, możemy odpalić wyłącznie na kartach wspierających RT (i wybraniu właśnie tej wersji do instalacji, co trzeba zmienić w opcjach instalacji). Po pierwsze tytuł bardzo zyskuje na wyświetlaczach z wygaszaniem na poziomie pikseli (OLED, lub… CRT/plazma; ew., jak macie, dual layer LCD). Wtedy to oświetlenie faktycznie zaczyna grać. Dodatkowo gamma tytułu była tworzona z myślą o HDR (dopiero wtedy mamy pełny kontrast w tej grze; inaczej musimy się bawić suwakiem gamma, spłaszczając rozpiętość tonalną). O tak, ten moment, gdy rzuciłem w windę z wrogami koktajlem Mołotowa, a ta, sunąc w dół, zaczęła rozświetlać szyb, nadając ścianom pomarańczowej poświaty. Ale to ja – mnie bardziej od odbić w lustrach ciekawią efekty techniczne, takie jak np. zmiana temp. barwowej farby na ścianach, z uwagi rodzaj światła (co właśnie zachodzi w Metro dzięki Dynamic Diffuse Illumination). Doceniam też to, że światło nie ucina się nagle, tylko stopniowo mamy go coraz mniej (patrz galeria).

Jak bardzo efekty z tabelki są wymagające dla naszego sprzętu? To zależy od stopnia implementacji. Jeżeli mamy tylko odbicia i cienie w najprostszych formach, to karty NV z RT cores drugiej generacji prawie tego nie odczują. Karta Intela (ARC 770) też nie… jeżeli sterownik zadziała poprawnie (tu wtrącenie, ta karta jest naprawdę dobra, tylko te choroby wieku dziecięcego – problemy ze sterownikami. Dodatkowo starsze API działają słabo lub wcale). Na kartach AMD RT zawsze wywrze wpływ – to z uwagi na konstrukcję, którą opisywałem powyżej. Oczywiście im więcej RT w tytule, tym większy wpływ. Problematyczne mogą być pełne cienie kontaktowe (wrzucone z patchem 1.5 do Cyberpunka; czy obecne w Riftbreaker), które mocno obciążają karty wszystkich 3 producentów. Nie piszę już o Portal czy Qauke II, które w nazwie mają karty NV – RTX, ale inny tytuł z prawie pełną implantacją RT (jedynie bez cieni kontaktowych), czyli Metro Exodus EE, tylko trochę spowalnia karty Intela czy RTXy, ale nieco bardziej wpływa na AMD (przede wszystkim te RDNA 2 – natomiast seria 7000 radzi sobie tu już fajnie). A no tak i jest jeszcze Spider Man Remaster, który RT robi na procesorze i gniecie prawie każdy CPU (nawet Intele 13th gen., czy AMD Zen 4).

Przykłady tego, jak radzą sobie najnowsze karty w RT znajdziecie tu (w nawiasach macie podane ile % fps gra utraciła po włączeniu RT na ultra, co fajnie pokazuje jak mocno RT wpływa na wydajność, a do tego pokazuje różnice pomiędzy RT on/off na NV vs. AMD – pamiętajcie, że mocniejsze karty,  jak RTX 4090, czy nawet 4080, nie są kartami pod 1080p, a 4k i w niskiej rozdziałce będą często blokowane przez CPU; niestety brak testów z Metro Exodus EE – jest tylko oryginalne) i tu

Dodatkowo wrzucam testy syntetyczne - wydajność w pełnym RT (path Raytracing – czyli to, co mamy w Portalu, tylko z mniejszą liczbą obiektów i bez znaczka RTX – Potral jest bardziej wymagający oraz Nvidiolubny)

Źródło guru3d.com

Jak widzicie, karty AMD przy scenie, która jest obliczana wyłącznie przez raytracing (path tracing), mają trochę pod górkę. Natomiast karta Intela (ARC A770), z, o dziwo, działającym sterownikiem, błyszczy, doganiając karty NV o 50% droższe i karty AMD o 100% droższe. Oczywiście silnik, silnikowi nie równy i ten z Portala, przy pełnym RT, faworyzuje karty NV. Trzeba zaznaczyć, że karty NV serii 4000, z usprawnionymi rdzeniami RT trzeciej generacji, wypadają najlepiej per Wat, a i cenowo do wydajności w RT też bardzo dobrze.

Teraz model mieszany (dużo mniej efektów RT – przewaga zwykłych obliczeń, czyli znaczenie ma zarówno czysta moc karty, jak i moc RT cores):

Źródło guru3d.com

O tak, AMD czuje się tu dużo lepiej, chociaż dalej cenowo wypada za NV. Intel dalej przoduje pod względem FPS/cena, ale już nie tak, jak w path tracingu.

A co z konsolami?

Żeby was uświadomić – patrząc na czystą moc obliczeniową i to co powyżej, GPU konsol PS5 oraz Xbox Series X jest pomiędzy RX 6650 XT a RX 6700 XT (CU - a więc i RT units itd.). Natomiast tu wszystko zależy od tytułu i, przede wszystkim, silnika (devów). Normalnie to, co na PC możemy dostosować w opcjach, tu jest zablokowane gdzieś na low/medium. Piszę o rozdzielczości cieni, odbić oraz zasięgach RT, czy czasami liczbie obiektów podlegających RT (wspominane mapy cieni, które na konsolach czegoś nie uwzględniają itd.). Coś, za coś, przecież piszemy o maszynkach za 2500 zł, które dają radę w Metro Exodus EE - #4A Games potrafi, a inni nie " target="_blank" rel="noopener">(np. z Cyberpunkiem i RT trochę gorzej).

Filmik pokazujący kunszt 4A Games - Metro Exodus bez RT (Xbox One X) vs. Metro Exodus EE z full RT (Series X); oraz omawiający zmiany względem PC

Słowem podsumowania.

Tak jak widać - RT, jego stopień oraz samo działanie jest zależne od masy czynników. W jednej grze może być dużo wnoszącą do efektów wizualnych funkcją,  w dodatku dobrze zoptymalizowaną, w innej może być ciekawostką do trybu photo mode, a w jeszcze innej nic nie wnoszącym uprzykrzeniem, ubijającym wydajność. Nie ma reguły. Czy jest to rewolucja jaką ogłaszają marketingowcy, zarzucając nas sloganami RTX itd. (NV w końcu, z uwagi na przełomu jakiego dokonała, zmieniła nazwy kart graficznych z GTX na RTX)? I tak, i nie. Gdy marketingowy bełkot wyrzucimy do kosza, a przyjrzymy się temu na spokojnie, to faktycznie jest to rewolucujna technologia, lecz potrzebująca jeszcze czasu do rozwoju. 

Myślę, że za 10-15 lat nie będziemy sobie wyobrażali gier bez RT, tak jak dziś nie ma gier bez akceleracji 3d (to podobny stopień przełomu w grafice).

PS

Odnosząc się jeszcze do tego, dlaczego RT tak nie zachwyca i nie każdego "kupuje", to myślę, że przez dekady twórcy musieli sobie radzić bez niego i techniki oszukujące/obchodzące (jak np. screen sapce reflections) mają za sobą, właśnie, lata rozwoju, które teraz stanowią wysoko zawieszoną poprzeczkę dla samego RT, obecnego w renderowaniu real time dopiero od paru lat. Innymi słowy - byślmy tak dobrze oszukiwani, że dziś zadawalmy się substytutem, nie zachwycająć się oryginałem.

Oceń bloga:
26

Komentarze (120)

SORTUJ OD: Najnowszych / Najstarszych / Popularnych

cropper