Icarus: Nvidia DLSS 2.3 a RTXGI v plné parádě | Kapitola 6
Seznam kapitol
Nvidia minulý měsíc uvedla DLSS v nové verzi 2.3 , u které zapracovala na jednom z největších zbývajících neduhů předchozích variant DLSS 2.x – omezuje duchy, neboli ghosting u rychle se pohybujících objektů.
Aktuální DLSS
Ve hře je implementována knihovna DLSS 2.3.1, v níž by měly být všechny aktuální techniky. Vyšlo už pár dalších verzí, poslední je momentálně 2.3.5, ale ty snad přidávají jen podporu pro další vydané hry.
V nastavení je možnost vybírat ze tří úrovní kvality DLSS – Quality, Balanced a Performance. Liší se rozlišením, ve kterém se obraz nativně renderuje, a pochopitelně výkonem. Nvidia doporučuje používat režim Quality pro rozlišení 1920 × 1080 a 2560 × 1440, Performance pro 3840 × 2160 a Ultra performance pro 7680 × 4320.
Nejprve se podíváme na statickou scénu. Přestože je temporální algoritmy lepší srovnávat spíše na videích, na vybral jsem záměrně statickou scénu. V souvislosti s DLSS druhé generace se totiž objevuje v některých článcích jiná nepřesnost – totiž že data navíc DLSS 2.x získává až při pohybu z posunutých snímků.
Není to zase tak nelogický předpoklad. Podobné techniky se totiž používají pro upscaling nebo vylepšování obrazu videa, anebo se s jejich pomocí dá poskládat z několika horších fotek obrázek s vyšším rozlišením tak, že obraz mezi snímky posunete o necelý obrazový bod.
Hýbat se nemusí
Možnosti získat více dat z více snímků využívají třeba moderní upscalery v televizorech. Ale u DLSS se u jednotlivých snímků posouvá místo vzorku, i když se obraz nehýbá.
Na následující sérii výřezů je vždy čtveřice úrovní DLSS. Na prvním místě je rendering v nativním rozlišení, kdy se DLSS nepoužívá, za ním následuje nastavení DLSS Quality, DLSS Balanced a DLSS Performance.
Na prvním dvojici obrázků jsou výřezy ze snímku v původním rozlišení, tedy 1:1. Určitě si je otevřete i v původním rozlišení, uvidíte je ve stejné kvalitě jako přímo ve hře. Při zoomování rozklepnutého obrázku v prohlížeči jej prohlížeč rozmaže, jak jsme si vysvětlovali v minulé kapitole.
Níže jsou z nich vyříznuté oblasti s dvojnásobným zvětšením, na které byste měli zaměřit pozornost. Jsou na nich lépe vidět rozdíly mezi jednotlivým nastavením. Na prvním výřezu, u něhož není DLSS aktivní, je letáček ICARUS paradoxně méně ostrý než na druhém, na němž je obraz s DLSS v nejvyšší kvalitě.
Zároveň je ale při srovnání obou výřezů vidět, že kvůli doostřování začíná svítit okolí tmavé spáry mezi panely ve spodní části výřezu. Na dalších výřezech s nižší kvalitou DLSS už ale není subjektivně vidět rozdíl v kvalitě obrazu.
Další snímek je zvětšený výřez detailu obrazovky po pravé straně kokpitu. Na něm už je trochu znát, že s klesající úrovní nastavení DLSS je obraz stále méně ostrý.
Níže je ještě stejný detail ve čtyřnásobném zvětšení, zaměřte se třeba na hodnotu 100,9 na obrazovce.
O něco lépe vynikne ztráta detailů na malé obrazovce (mobilu?) v levé části výřezu. Na prvních dvou výřezech je ještě text „FREE FALLING“ čitelný, na dalších dvou už moc ne.
Celý snímek všech nastavení v původním rozlišení je na obrázcích níže, doporučuji otevřít si vždy dva originály v záložkách prohlížeče a přepínat mezi nimi. Při srovnání druhého s DLSS v nastavení Quality a čtvrtého s DLSS na Performance už je trochu znát, že režim s nejnižší kvalitou je méně ostrý. Také na stínu sedačky je vidět, že je s klesající kvalitou vykreslovaný se stále nižším rozlišením a více trpí na artefakty.
Všechna čtyři nastavení jsou srovnaná na následujícím videu. Hra běžela v rozlišení 1920 × 1080 bodů. Protože Youtube používá pro toto rozlišení poměrně agresivní kompresi, při níž se hodně detailů ztrácí, zvětšil jsem záznamy dvojnásobně. Proč není dobré kvalitu obrazu v 1080p posuzovat na videu s rozlišením 1080p na Youtube, to je téma na celý článek, možná to pochopíte už jen z tohoto videa, když jej zkusíte přepínat mezi rozlišením 1080p a 4K.
Pokud video otevřete na monitoru s rozlišením 1920 × 1080 bodů a kvalitu videa přepnete z 1920 × 1080 na 4K (až Youtube záznam definitivně přechroupá i pro toto rozlišení), bude kvalita reálnému obrazu ze hry odpovídat víc než vyžehlený stream v 1080p60 s výrazně nižším datovým tokem.
Zleva doprava je na záznamu nastavení s vypnutým DLSS, a dále je postupně kvalita DLSS nastavená na Quality, Balanced a Performance.
Výkon s DLSS 2.3
S výkonem přitom DLSS ve hře pořádně zahýbá, na RTX 3080 Ti v režimu DX12, který je nutný pro zapnutí RTX GI už i v rozlišení 2560 × 1440 u nejrychlejších režimů přestával zvládat spíš procesor než grafická karta, která už při frekvencích nad nějakých 80 fps nebývá plně vytížená.
Když data z více snímků chybí
Icarus má implementovánu i odlišnou metodu upsamplingu FidelityFX Super Resolution (FSR) od AMD. Ta rovněž nabízí rovněž vyšší kvalitu než tradiční metody zvětšování obrázků jako bilineární interpolace, ale jako základ si bere jen aktuální snímek. Tedy není to doslova jediný snímek, i v tom jednom snímku se využívá post processing, který bere data z předchozích snímků – například vyhlazování nebo pohybová neostrost. Ale filtr dostane již hotový obrázek a když v něm něco chybí, nesahá do starších snímků, kde by to mohl najít.
Jde o nepoměrně jednodušší filtr, takže na implementaci do her není zdaleka tak náročný. Ale v úvodu jsme si vysvětlovali, proč DLSS 2.x musí být do hry „zarostlé“ více. Širokou veřejností i samotným AMD je FSR stavěné proti DLSS, ale o tom, že jde o podobné technologie, se dalo mluvit možná u první generace DLSS, která taky pracovala s jedním snímkem, DLSS 2.0 už funguje jinak.
Nvidii se kvůli tomu srovnávání FSR s DLSS 2.x asi nelíbilo. Z mnoha důvodů je to porovnávání jablek a hrušek, a tak představila technologii, která funguje na obdobném principu jako FSR a je pro něj skutečným konkurentem – Nvidia Image Scaling (NIS).
NIS funguje obdobně jako FSR – pro zvětšení obrazu využívá jen aktuální snímek (označuje se jako „spatial upscaler“) s nízkým rozlišením, který zvětší a doostří.
Na rozdíl od FSR lze NIS v GeForce Experience zapnout přes ovladače u jakékoliv hry, aniž by ji bylo nutné jej implementovat. Ale stejně jako FSR jej lze do hry integrovat přímo. Nvidia totiž za tím účelem připravila i balíček pro vývojáře (SDK).
Zabudování upsamplingu přímo do hry je vždy lepší. Pak totiž můžete zvětšovat pouze samotnou herní scénu a všechny grafické prvky dodatečně přidávané do hotového renderu, jako jsou některé efekty doplněné v post processingu, různé ukazatele, počítadla, zaměřovače, texty a popisky do obrazu doplnit v kvalitě pro plné rozlišení, takže budou dobře čitelné.
Stejně jako FSR je i Nvidia Image Scaling otevřený, a na rozdíl od DLSS, které vyžaduje tensor cores, využívá standardní shadery a má fungovat na všech moderních grafických kartách i herních konzolích.
V Icarus NIS implementovaný není a je to téma, které s nějakými příklady a srovnáním s FSR vydá na samostatný článek, takže bych se mu rád věnoval někdy příště.
Jestliže na DLSS nebylo rozdíly téměř vidět, u FSR je znát každé snížení kvality (a s tím i rozlišení, ze kterého upsampling vychází). Text je stále méně čitelný, a mírně šikmé linie pořád zubatější.
Na výřezu je dobře vidět, že stovka na displeji je nejdřív jen trochu kostrbatá, postupně se ztrácí čitelnost jednotlivých cifer a na posledním obrázku už jsou místo číslovky spíše beztvaré fleky.
A obdobné je to s detaily na protější straně snímku.
Po výřezech ještě doplním screenshoty v původním rozlišení:
Ale musím zdůraznit, že nejméně kvalitní režim Performance nebyl ani u FSR, ani u DLSS zamýšlený pro hraní v rozlišení 1080p, ale má sloužit až pro 4K, kde není podobná ztráta detailů tak bolestivá, zejména u monitorů s menšími pixely (jako jsou osmadvacítky se 4K).
Jak vypadá různé nastavení FSR v pohybu, je zachyceno na následujícím videu – šlo o rozlišení 1080p, ale zvětšil jsem jej na 4K. Když jej na monitoru s rozlišením 1920 × 1080 bodů přepnete na rozlišení 4K a necháte jej přehrávat přes celou obrazovku, bude kvalita lépe odpovídat běžnému hraní. V závěru je záznam ještě zvětšený.