Lepsza płynność i jakość grafiki na kartach NVIDII, czyli SI i głębokie uczenie w grach
Wprowadzenie na rynek architektury NVIDIA Turing, pozwoliło skosztować dwóch rewolucyjnych technologii, które NVIDIA zaszyła w nowej odsłonie GPU. Mowa o śledzeniu promieni w czasie rzeczywistym (DXR) i Deep Learning Super-Sampling (DLSS). Unikatowe zastosowanie tych technologii ma za zadanie poprawić zarówno wydajność jak i jakość generowanego obrazu trójwymiarowego w grach.
23.07.2020 | aktual.: 24.07.2020 16:55
Materiał powstał we współpracy z firmą morele.net
RayTracing (śledzenie promieni) to nie jest nowy termin i znamy go już od kilku dekad. Niestety wykorzystanie tej techniki możliwe było dotychczas tylko w dedykowanych stacjach graficznych, których ceny zakupu zwalały z nóg, a stać na nie było tylko największe studia filmowe (i to na wynajęcie, a nie na zakup całego rozwiązania :)) Wprowadzenie rdzeni RT do architektury Turing, pozwoliło podbić moc obliczeniową w domowych maszynach, które mogły śledzić promienie w czasie rzeczywistym.
NVIDIA Launches Turing for Real-Time Ray Tracing
Dzięki współpracy z Microsoft, rozwiązania NVIDII zostały zaimplementowane do API DirectX 12 Ultimate. Trafiły tam takie funkcje jak DirectX RayTracing (DXR), Variable Rate Shading (VRS), Mesh Shaders oraz Sampler Feedback. Tu warto wspomnieć, że funkcje te będą dostępne z poziomu API, czyli mogą być też wykorzystane w rozwiązaniach innych producentów np. w nadchodzących konsolach nowej generacji, czy w kartach graficznych konkurencji. Choć nie mamy całkowitej wiedzy jak finalnie będzie to zrealizowane i w jakim stopniu.
DXR i algorytmy DirectX 12 Ultimate
Spróbujmy pokrótce objaśnić te skróty i terminy. DirectX RayTracing (DXR), jak już wspominałem, to śledzenie promieni w czasie rzeczywistym. O ile w statycznych obrazach RayTracing nie sprawiał problemów (chodzi o wydajność) o tyle podczas wyświetlania ruchomego obrazu z aktywnym śledzeniem promieni, sprawa nie była tak prosta. Dużo zmiennych, jednoczesna praca nad technikami oświetlenia i cieniowania (min. area shadows, glossy reflections i ambient occlusion) wymagały ogromnej mocy obliczeniowej, którą dały dopiero zastosowanie w architekturze rdzenie RT.
Variable Rate Shading (VRS) to ulepszony algorytm cieniowania kolorami poszczególnych pikseli, w różnym stosunku (1 do 1, 2 do 2, 4 do 4, w starszych kartach bazujących na rdzeniach Maxwell i Pascal). Wraz z pojawieniem się rdzenia Turing wprowadzono cieniowanie na wielu, odrębnych obszarach w bardziej uszczegółowiony sposób. Na pojedynczym obszarze 16 na 16 pikseli (co w rozdzielczości 1080p przekłada się na 8100 obszarów) wprowadzono cztery nowe współczynniki 1 do 2, 2 do 1, 4 do 2, 2 do 4. Dzięki temu mamy lepszą kontrolę nad obszarami, w których dochodzi do cieniowania.
Mesh Shaders to zbliżona technika do VRS, jednak odpowiadająca za szczegółowość geometrii struktury, teselację obiektów czy generowanie proceduralne obiektów przy minimalnym wykorzystaniu CPU. Tym samym mesh shaders przyspieszają renderowanie i dostosowują detale obiektów o szczegółowości dotychczas nieosiągalnej dla starszych układów.
Jeśli chodzi o Sampler Feedback, to odpowiada on za wykorzystanie już posiadanych danych w kolejnych klatkach obrazu. Zwyczajnie, kiedy obraz zmienia się w niewielkim stopniu Sampler Feedback, na podstawie danych z poprzedniej klatki, jest w stanie przewidzieć cieniowanie obiektów w kolejnych klatkach obrzu (w dużym skrócie ??). Tym samym przyspiesza wyświetlanie obrazu i dba o mniejsze obciążenie GPU.
Niestety wszystkie wyżej opisane nowinki wprowadzone do kart RTX powodowały spadki wydajności nawet w najmocniejszych kartach graficznych pokroju NVIDIA GeForce RTX 2080. Ale i na to NVIDIA znalazła szybko rozwiązanie.
Głębokie nauczanie i SI w służbie graczom, czyli DLSS 2.0
Na potrzeby zniwelowania tej niedogodności NVIDIA opracowała Deep Learning Super-Sampling (DLSS), czyli zaprzęgła uczenie maszynowe i głębokie uczenie do przyspieszenia i podniesienia jakości generowanego obrazu przez najnowsze karty graficzne. Od niedawana mamy do czynienia z DLSS 2.0. To właśnie druga odsłona tej technologii pozwoliła w pełni cieszyć się możliwościami kart opartych na rdzeniu Turing i wykorzystaniu ich możliwości w najnowszych i przyszłych tytułach. Ale do rzeczy.
DXR i DLSS na kartach NVIDIA GeForce RTX
Co to właściwie jest DLSS? W telegraficznym skrócie, skalowanie obrazu (upscalling). Oczywiście to bardzo duże uproszczenie, dla mniej wtajemniczonych, rozszerzona definicja DLSS przedstawia się następująco. DLSS to skalowanie generowanego obrazu, gdzie do działania wykorzystuje się rdzenie Tensor. Te wyspecjalizowane jednostki wykorzystują głębokie uczenie (deep lerning) do renderowania klatek w rozdzielczości niższej niż rozdzielczość natywna. Tym samym możemy wygenerować obraz w jakości 4K, przy renderze zaledwie 1080p bez widocznej utraty na jakości końcowego obrazu.
W tym celu zaprzęgnięto specjalnie przygotowaną sieć neuronową, która ma wspomóc “uczenie się “. Platforma nazwana Neural Graphics Framework szkoli sieć neuronową w oparciu o dziesiątki tysięcy obrazów o wysokiej rozdzielczości, renderowanych w trybie offline na superkomputerze, przy bardzo niskiej liczbie klatek na sekundę i 64 próbkach na piksel. Bazując na wiedzy z wielu tysięcy godzin szkolenia sieć może korzystać z obrazów o niższej rozdzielczości jako materiału wejściowego i tworzyć wyraźnie lepsze obrazy o wysokiej rozdzielczości. DLSS 2.0 korzysta z dwóch podstawowych materiałów wejściowych zasilających sieć SI: obrazy o niskiej rozdzielczości, poddane aliasingowi, renderowane przez silnik gry i wektory ruchu, w niskiej rozdzielczości, z tych samych obrazów, także generowane przez silnik gry.
Wektory ruchu opisują, w jakim kierunku obiekty sceny poruszają się z klatki na klatkę, możemy więc zastosować te wektory do ostatniej klatki o wysokiej rozdzielczości dzięki sieci (neuronowej), aby oszacować jak będzie wyglądała następna klatka. Specjalny typ sieci SI, zwany autoenkoderem splotowym (konwolucyjnym), pobiera bieżącą klatkę o niskiej rozdzielczości i ostatnią klatkę o wysokiej rozdzielczości, aby piksel po pikselu określić, jak wygenerować bieżącą klatkę o wyższej jakości. Podczas szkolenia sieci SI obraz wyjściowy jest porównywany z obrazem referencyjnym 16K (natywnie renderowanym w tej ultrawysokiej jakości), a różnice są przekazywane z powrotem do sieci, dzięki czemu może ona nadal uczyć się i poprawiać swoje wyniki.
Efekt końcowy tego skomplikowanego procesu jest taki, że zauważalnie rośnie płynność w grach, a jakość obrazu jest nieporównywalnie lepsza w porównaniu to tradycyjnie wygenerowanej sceny. Co ważne, pierwsza wersja DLSS wymagała przeprowadzenia szkolenia SI dla każdej nowej produkcji. DLSS 2.0 wykorzystuje uogólnioną sieć szkolenia SI, która działa w wielu grach. Oznacza to szybszą integrację w grach i więcej tytułów obsługujących DLSS.
Z pozycji użytkownika mamy możliwość dostosowywania jakości obrazu w trzech trybach (Quality, Balanced, Performance) kontrolujące rozdzielczość renderowania. I tak tryb Performance umożliwia teraz skorzystanie z nawet czterokrotnej superrozdzielczości. Oznacza to większy wybór dla użytkownika, a nawet większe wzrosty wydajności. Wzrost wydajności pokazuje nie tylko NVIDIA w swoich materiałach, ale też niezależne testy na wielu portalach technologicznych.
Obecnie DLSS 2.0 wykorzystują gry: Death Stranding, Control (ten tytuł pierwotnie miał zaimplementowaną wcześniejszą wersję DLSS, a DLSS 2.0 otrzymał później w aktualizacji), Deliver Us the Moon, Wolfenstein: Youngblood i MechWarrior 5: Mercenaries, a szereg tytułów z DLSS 2.0 już czeka na swoją premierę (m.in. Cyperpunk 2077). Jeśli właśnie stoicie przed zakupem karty GeForce RTX, jest ku temu świetna okazja. Do 29 lipca trwa promocja w sklepie morele.net, gdzie przy zakupie dowolnej karty z serii RTX możecie otrzymać grę Death Stranding w wersji cyfrowej, która najpierw podbiła serca graczy na konsoli PlayStation 4, a od kilku dni jest dostępna też na komputery PC.
Materiał powstał we współpracy z firmą morele.net