
Icarus: Nvidia DLSS 2.3 a RTXGI v plné parádě | Kapitola 2
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ů.
Pohyb je problém
Poskládat ze čtyř částečných snímků je triviální (ehm) záležitost. Opravdová výzva je to až v situacích, kdy se na snímku rychle pohybují nějaké objekty. Ty překryjí pokaždé jinou část obrazu a při skládání nového snímku pak data z překrytých oblastí skutečně scházejí. A naopak v něm přebývá otisk něčeho, co už se na aktuálním snímku posunulo jinam.

Může to být cokoliv – auto, které projíždí scénou, ale i vaše zbraň pohupující se uprostřed obrazovky. Z předchozích snímků zůstane namísto potřebných dat „bílé místo“, nebo přesněji otisk objektu, který už měl být na vykreslovaném snímku jinde. A jenom v těchto „bílých místech“ musejí algoritmy data skutečně domýšlet.
Pohyb dělá problém všem „temporálním“ algoritmům, které pro vylepšení kvality obrazu skládají dohromady po sobě jdoucí snímky – například i vyhlazování TAA.
Takové bílé místo zapotřebí nějak vyplnit. U filmů a videí musí algoritmus sám zjišťovat, kde se ve scéně něco pohnulo. DLSS má výhodu v tom, že nemusí pohyb zjišťovat analýzou předchozích snímků, ale tyto informace může dostat přímo od hry v podobě pohybových vektorů.
Z nich pak zjistí, u kterého místa má informace z předchozích snímků ignorovat a ve kterých snímcích jsou v pořádku, která bílá místa musí záplatovat, kterým směrem se obraz pohnul a ve kterém směru jej tedy bude dobré doostřovat a podobně.

Starším verzím DLSS 2.x už se pohyb většinou dařilo maskovat dobře, problém mělo ale u rychle se pohybujících objektů a hlavně u částicových efektů. A tyto neduhy by mělo DLSS 2.3 odstraňovat lépe. Hlavně u těch částic to bývalo vidět opravdu hodně.
Když smetí není smetí
Částicové efekty se používají pro zobrazení výbuchů, ohňů, jisker, sněhu, dešťových kapek nebo poletujícího smetí a podobných objektů ve scéně.
Namísto aby hra simulovala oheň a každý jeho plamínek, nahradí jej jednoduchým objektem – hotovou animací s ohněm. Místo kouře, roje jisker a modelu každé odletující jiskřičky umístí do scény animaci s kouřem a poletujícími jiskrami, místo modelování sršícího výboje použije předem připravenou animaci se sršícím výbojem.
Anebo simuluje jednotlivé částice, ale pouze jako nehmotný bod, který až při renderingu nahradí připravený obrázek – například textura jiskry. Názorně to ukazuje video k částicovým efektům v Unreal Engine.
DLSS ale u takového objektu ve scéně dostalo jen informaci o onom zástupci, ale nevědělo, co jej při renderingu ve scéně nahradilo. A protože takovou texturu vlepenou do obrazu místo nějakého bodu DLSS „nepoznalo“, nejspíš ji bralo jako statický objekt. Snímky jednoduše „slepilo“ za sebe a duchy neopravovalo. V obraze se pak kvůli tomu objevovaly nežádoucí artefakty. Ale i to už umí čerstvě vydaná verze 2.3 napravit a s částicemi zvládá pracovat lépe.
Ale minimálně jeden přínos tento nedostatek měl – díky délce stop se dá vytušit, že DLSS pro skládání aktuálního využívá mnohem více než pár posledních snímků, o kterých se při vysvětlování principu fungování DLSS obvykle mluví.
Na samostatný článek byly ještě korekce jevů jako moaré u mříží a sítí, nestabilita snímků v čase – různé přeskakující pixely, blikající hrany, světla nebo stíny a podobně. Na to se snad časem detailněji na jiných hrách podíváme také (na následujícím videu je příklad takové nestability v čase 1:10).
Na Icarusu ta snímková nestabilita na dvou nejvyšších nastaveních vyhlazování vidět není, protože v nativním rozlišení používá při vysokých detailech kvalitní temporální vyhlazování, které za sebou jdoucí snímky taktéž „pospojuje“ a v čase „vyhladí“. Ale pokud kvalitu antialiasingu v nastavení snížíte, i v této hře je to vidět zatraceně dobře.