World of Tanks: Ray Tracing, cz.III

Już niedługo w World of Tanks pojawi się technologia ray tracing, pozwalająca renderować realistyczne cienie pojazdów.
Wygląda pięknie, ale jak to działa? Czy gracze będą potrzebowali specjalnej karty graficznej, aby ujrzeć nowe cienie? Przekonajmy się.

Encorert

Po kompletnym przebudowaniu grafiki w aktualizacji 1.0 w marcu 2018 roku, prace nad nowym silnikiem gry trwały nadal. Od tego czasu nasi programiści wprowadzili renderowanie współbieżne i zakończyliśmy obsługę Windows XP i DirectX 9.

Encore1

Dzięki temu mogą oni pójść dalej i wprowadzić nowe technologie do silnika gry. Jedną z nich jest ray tracing, który wzniesie cienie na nowy poziom.

Odpowiednie wprowadzenie cieni od dłuższego czasu było jednym z większych problemów tej branży. W naszym wypadku chodzi o cienie pojazdów. Nie zawsze można to zrobić za pomocą grafiki rastrowej, czyli zgodnie ze współczesnym podejściem. To oznacza ciągłe szukanie równowagi między jakością a płynnością gry. Aktualnie dynamiczne cienie pojazdów powstają dzięki tzw. mapowaniu cieni.

Ogólnie jest to zwykła tekstura o ograniczonej rozdzielczości, co generuje pewne problemy:
• cienie nie są dość szczegółowe,
• przy zbliżeniu widać ostre krawędzie,
• cienie nie nadążają za obiektami i nie są renderowane przy dystansie powyżej 100 metrów.

Encore2

Moglibyśmy zwiększyć ich rozdzielczość, ale zwiększyłoby to obciążenie karty graficznej i zmniejszyło liczbę klatek.
Na pewnym etapie nasze pojazdy zyskały więcej szczegółów niż ich cienie i chcieliśmy jakoś te cienie ulepszyć. Jednym z rozważanych przez nas rozwiązań jest wprowadzenie tzw. ray tracingu. Ta technologia zapewni nam fundamentalne rozwiązanie tego problemu. Cienie będą ostre i miękkie tam, gdzie powinny. Ogólnie będą usiłować naśladować rzeczywistość.

Oto jak działa ray tracing.

Każdy punkt na ekranie odpowiada punktowi w modelu 3D. Aby wiedzieć, czy cień pojazdu jest w danym miejscu, karta graficzna wysyła promień do źródła światła i sprawdza, czy napotka on pojazd.

Encore3

Brzmi dosyć prosto, ale karta graficzna nie zawsze widzi czołg tak, jak my. Dla niej pojazdy to zbiór wielokątów lub trójkątów. Aby ustalić, czy promień przenika przez któryś z nich, karta graficzna musi sprawdzić wszystkie trójkąty jeden po drugim.
Niestety pojazdy w naszej grze składają się średnio z 50 000 wielokątów, więc takie obliczenia są zbyt długie. Zwłaszcza, gdy w okolicy jest kilka czołgów.

Aby przyspieszyć ray tracing, używa się specjalnej struktury BVH – tzw. drzewo brył ograniczających. Chodzi o hierarchię obiektów geometrycznych.

Encore4

Jakie jest jej założenie?
Przypisuje ona trójkąty do specjalnych pól i zmniejsza liczbę skrzyżowań.

Encore5Wygląda to tak:
• Procesor dzieli trójkąty na pola złożone z 4 do 8 trójkątów.
• Potem bierze dwa pola i umieszcza je w innym, większym.
• Proces powtarza się, aż czołg wygląda jak wielkie pola.
• W polu może być na przykład kadłub, gąsienice, wieża czy działo.
• Średnia głębokość zagnieżdżania to kilkadziesiąt pól na czołg.
• Teraz karta graficzna pracuje z kilkudziesięcioma polami, a nie 50 000 trójkątów.
• Jeśli promień nie przetnie żadnego z pól, nie będzie cienia pojazdu na wybranej powierzchni.
• W przeciwnym wypadku karta graficzna sprawdzi, które pole zostało napotkane i będzie to robić, aż promień przetnie najmniejsze pole.
• Następnie karta graficzna sprawdzi wszystkie trójkąty w tym polu i ustali dokładny trójkąt, który napotkał promień, a w wybranym miejscu zostanie wyrenderowany odpowiedni cień.
• Dzięki tej strukturze liczba skrzyżowań dla jednego czołgu zostanie zmniejszona z 50 000 do kilkudziesięciu.

Encore6Ray tracing należy do karty graficznej, a przygotowanie struktury BVH jest obliczane przez procesor. Przy 60 klatkach na sekundę ogólny czas dla całej klatki wynosi 16,6 ms, więc powinniśmy wtedy odświeżyć całą logikę gry i ukończyć jej renderowanie. Nasze pierwsze wprowadzenie struktury BVH przy użyciu procesora trwało około 8 ms, czyli połowę czasu przeznaczonego na klatkę. Nie mogliśmy wprowadzić go przy takiej płynności, ale nasi partnerzy z Intel zaproponowali nam rozwiązanie. Od dłuższego czasu dysponowali oni biblioteką o nazwie Intel Embree. Specjalizuje się ona w tworzeniu BVH i była wykorzystywana głównie w aplikacjach online, filmach, kreskówkach itp.

Encore7

W ramach naszej współpracy dowiedzieliśmy się, że inżynierowie z Wargaming planowali użycie ray tracingu, ale napotkali problemy z płynnością, zwłaszcza z obliczeniami wymaganych struktur przyspieszenia. Od razu zaproponowaliśmy użycie jednego z naszych narzędzi, które robi to w bardzo wydajny sposób. Po konsultacji z naszym zespołem zaawansowanego renderowania inżynierowie Wargamingu mogli… Wprowadzić to narzędzie do gry w niecały tydzień.

Po wprowadzeniu technologii wielu rdzeni i równoczesnego renderowania w aktualizacji 1.4 technologia Intel Embree bardzo nam przypasowała. Może ona działać równocześnie, a tworzenie BVH zajmuje teraz chwilę. To właściwie tak mało czasu, że mogliśmy o tym zapomnieć. Ray tracing zadziałało zgodnie z założeniami. Teraz tworzenie BVH dla 30 pojazdów trwa średnio 1,5 ms. Następnie struktura trafia do karty graficznej, co pozwala jej śledzić promienie 1000 razy szybciej.

Encore8

Kolejną kwestią do rozwiązania było tworzenie miękkich cieni. Źródła światła w grach, jak słońce, są często przedstawione jako punkt, aby zmniejszyć obciążenie karty graficznej.
Możliwe są zatem dwa scenariusze.
• Albo punkt na ziemi jest zasłonięty przez przeszkodę i „nie widzi” źródła światła (a więc przeszkoda rzuca cień),
• albo dostrzega je i nie ma cienia.

W rzeczywistości źródło światła takie jak słońce rzuca je z wielu punktów na swojej powierzchni. Dla punktu na ziemi słońce może być częściowo zasłonięte, a więc oświetla punkt na ziemi nie całą swoją powierzchnią, a tylko jej częścią. Właśnie tak powstaje półcień. Branża filmowa tworzy tak realistyczny efekt na obrazach tworzonych komputerowo, wysyłając tysiące promieni na piksel, ale przetwarzanie każdej klatki może potrwać kilka dni, a w grach trzeba przetworzyć 60 klatek na sekundę. Aby utrzymać płynność gry, musieliśmy użyć jednego promienia na piksel. To ewidentnie nie wystarczało i łatwo dało się to zauważyć na obszarach półcienia. Ponieważ jesteśmy ograniczeni do jednego promienia i nie możemy wysłać ich tysięcy do wielu punktów źródła światła, nadaliśmy mu losowość w każdej klatce.

Promień trafia do różnych punktów źródła światła, a dzięki losowości uzyskujemy szumy. Aby je usunąć, używamy specjalnego algorytmu, który używa czasowej i przestrzennej spójności punktów na ziemi lub pikseli, i zbliżamy się do tego, jak powinien wyglądać półcień. Celem usunięcia szumów jest filtrowanie obrazu czyli rozmazanie konkretnych pikseli. Algorytm jest dość złożony, ponieważ bardzo mądrze określa, gdzie powinniśmy zastosować rozmazanie. Chcemy, aby półcienie były miękkie i pozbawione szumów, ale z drugiej strony cienie blisko przedmiotów powinny pozostać ostre. Jedna linia na piksel i redukcja szumów pozwala oszczędzić znaczną liczbę klatek i renderować obraz z jednym promieniem z tą samą jakością, co przy 8 czy 16 promieniach na piksel.

Encore9

Technologia ray tracing została wprowadzona do World of Tanks tak, że można jej użyć na karcie graficznej, która obsługuje DirectX 11. Nie potrzeba więc nowoczesnego sprzętu, aby zobaczyć nowe, realistyczne cienie w World of Tanks. Inżynierowie World of Tanks wykonali świetną robotę, skalując silnik i dostosowując renderowanie do różnorodnego sprzętu graczy. Każdy z nich może więc odnaleźć równowagę między jakością, a płynnością gry. Można też korzystać z technologii takich jak ray tracing na najnowszych laptopach z nowoczesną grafiką Intel. Co prawda możemy korzystać z tej technologii na różnym sprzęcie, ale ray tracing jest dość wymagający.

Jeśli chcecie wypróbować tę technologię można włączyć ją ręcznie. Domyślnie ray tracing nie będzie dostępny np. na ustawieniach Ultra. Pojawi się jako opcja, którą gracze muszą włączyć sami. Jeśli gra pokazuje Wam, że macie jakieś 200 czy 300 klatek na sekundę przy ustawieniach Ultra, możecie włączyć ray tracing, aby wykorzystać całą moc swojej karty graficznej. Jeśli chcecie sprawdzić działanie tej funkcji, możecie wypróbować ją w World of Tanks Encore RT.

World of Tanks Encore RT

Postanowiliśmy użyć WoT Encore tak, jak przed aktualizacją 1.0. World of Tanks Encore pozwoli Wam wypróbować ray tracing w grze. Można już pobrać i uruchomić aplikację World of Tanks RT, ustawić jakość ray tracingu, sprawdzić, czy Wasz komputer jej sprosta i podziwiać różnice w grafice.

Dodaliśmy też obsługę renderowania współbieżnego do nowej wersji World of Tanks Encore. W specjalnym oknie zobaczycie, ile rdzeni jest używane do renderowania klatki.

World of Tanks Encore wykonuje teraz dwa zadania dla gracza. Pozwala mu wypróbować nadchodzące możliwości karty graficznej i przekonać się, jak będzie działać gra z użyciem tych technologii. Przekonacie się, czy jesteście gotowi do aktualizacji grafiki World of Tanks, a raczej jak poradzi sobie z nią Wasz komputer, o który dbacie co dnia.

Można też pobrać poprzednią wersję World of Tanks Encore, aby porównać zmiany w różnych wersjach grafiki gry. Dzięki technologii ray tracing cienie w grze nie ucierpią z powodu największych problemów wynikających z mapowania cieni. Zyskaliśmy miękkie półcienie i ostre cienie z małych przedmiotów. Zbliżyliśmy się do tego, jak wyglądają one w rzeczywistości. Technologię ray tracing można stosować na różne sposoby – od używania jej do wszystkiego po wersje hybrydowe. W naszym wypadku używamy wersji hybrydowej, gdy część obrazu na ekranie jest przetwarzana starą metodą rastrową, a resztę tworzy się przy pomocy nowej metody ray tracing.

Cienie to dopiero początek ray tracingu. Ta technologia pozwala na znacznie więcej:
• tworzenie realistycznych odbić,
• zaciemnienia, globalnego oświetlenia, a nawet całych klatek

Jednak w tym celu trzeba przetworzyć miliardy promieni na klatkę. Aktualnie żaden komputer nie jest do tego zdolny i przez dłuższy czas nie będzie to możliwe, ale niedługo będziecie mogli nacieszyć się ray tracingiem w World of Tanks.

5 Odpowiedzi do “World of Tanks: Ray Tracing, cz.III

  1. Nie no kolejna tak bardzo istotna rzecz w tej grze do zrobienia. Nie no żeby uciekajacy gracze masa cziterstawa na randomie rebalans amunicji premium rebalans czołgów drzewkowych. Nie no nie ma na chwile obecna niz wazniejszego niz zafadane cienie na nowym silniku. Pokaz tepoty WG i tej nacji siega zenitu.

    1. No tak, bo rebalans amunicji, czy banowanie cziterów jest zadaniem grafików… WTF?
      Czy ma prawdę większość ludzi na tym forum myśli że cała firma zajmuje się na raz tylko jednym zadaniem na zasadzie pospolitego ruszenia? Opamiętajcie się, część programistów i graficy zajmują się wyłącznie poprawianiem grafiki, nie zależnie od tego jak wielkie są problemy np. z balansem,bo tym zajmuje się inny dział. Nie zależnie od tego czy wprowadzą Ray Tracing czy nie, to przyspieszenie prac nad innymi problemami nie zwiększy się nawet o sekundę bo zajmuje się tym ktoś inny i tyle.

      1. No to może tak dla odmiany posłuchaliby głosu graczy i skupili się na tym co grający by chcieli, zmienili.
        Ja np. chciałbym, aby większe siły rzucili na przywracanie starych map. Ładniejsze cienie są raczej na końcu listy rzeczy, które trzebaby zmienić.

        1. Źle na to patrzysz. Ten ficzer po prostu da radę zrobic working studentami i starzystami. Jak coś spiernicza to nawet nikt nie zauważy. W prasie będzie czym się pochwalić i zrobić reklamę. Nowa mapa się nie pochwalom a i reklamy nie zrobią ale nowa mapa potrzebuje kogoś z lekkim doświadczeniem coby cyrkow niebylo że połowa pocisków gdzieś ginie a czołgi wpadają w tekstury.

Wyłączono możliwość dodawania komentarzy.