AMD odhalilo detaily FSR 2.0. Režimy, algoritmus, podpora i na kartách Polaris a Pascal

28. 3. 2022

Sdílet

 Autor: AMD
AMD už odhalilo algoritmus a podrobné vlastnosti svého herního upscalingu FSR 2.0, který přidává temporální dimenzi a měl by být konkurencí DLSS 2.x od Nvidie.

Před týdnem AMD odhalilo připravovanou druhou verzi upscalingu pro hry FidelityFX Super Resolution – FSR 2.0, které přidává temporální rekonstrukci a antialising, čímž má konkurovat DLSS 2.x od Nvidie. Firma mezitím odhalila další detaily k této technologii, takže už víme na jakých grafikách funguje, jaké bude mít režimy a rozlišení a také první detaily o algoritmu. Ten má například zachovávat tenké line jako jsou dráty na obloze.

Režimy škálování ve FSR 2.0

FSR 2.0 bude mít čtyři nastavení kvality, respektive aspoň ze začátku (asi nelze vyloučit, že se někdy v budoucnu přidají další). Tato nastavení představují škálovací faktory, tedy o kolik je výstupní rozlišení, na které se škáluje, vyšší než reálné vykreslovací rozlišení grafiky a můžete je vidět níže v tabulce od AMD. Tento faktor je uváděný v jedné ose obrazu, tj. například 2× znamená, že z jednoho bodu se udělá blok 2×2 bodů. Nejde tedy o údaj o tom, kolikrát se zvýší počet bodů (ten je v tabulce označený „area scale“).

Nejvyšší preset jmenuje Quality a bude znamenat, že se obě osy obrazu škálují 1,5×. Pokud máte na monitoru rozlišení 1920 × 1080, reálně se kreslí jen 1280 × 720, pro 4K je interní vykreslovací rozlišení 1440p a tak podobně. Toto není až tak velký škálovací faktor, takže by výsledky mohly být zvlášť pro 4K poměrně slušné. Preset Balanced pak škáluje s faktorem 1,7×, takže rozlišení 1920 × 1080 produkuje jen z 1129×635 pixelů.

Režimy AMD FSR 2.0 2 Režimy AMD FSR 2.0 (Zdroj: AMD)

Preset Performance už ale má škálovací faktor 2×, což znamená, že se do 4K upscaluje jen z 1920 × 1080 bodů, a to FullHD už jen z 940×540 bodů. Preset Ultra Performance má ještě krutější faktor 3×, kdy se na 4K škáluje z pouhých 1280 × 720 bodů a pokud byste ho použili ve FullHD, pracuje se se zdrojovým obrazem o rozlišení pouhých 640 × 360 bodů. Tyto faktory jsou ovšem stejné, jako používá Nvidia u DLSS 2.0 Performance a Ultra Performance, u nich tedy platí to samé.

Obecně tyto vyšší faktory budou únosnější u vysokých rozlišení jako je 4K, 5K, 8K, kde s nimi interní vykreslovací rozlišení pořád bude poměrně vysoké. Nvidia například režim Ultra Performance prezentovala jako řešení pro hraní na 8K obrazovkách (kdy je zdrojem snímek ve 1440p). Pokud se použijí u FullHD, už budete schopnost upscalingu dost pokoušet. U AMD to asi bude podobně, respektive kvalita může být o něco horší. AMD uvádí, že režim Ultra Performance je volitelný a je na zvážení autorů hry, zda ho v nataveních poskytnou. Řada titulů proto asi může mít jen nastavení FSR 2.0 Quality, Balanced a Performance.

Kromě nastavení profilu může volitelně být také nastavitelná síla umělého přiostření, které FSR 2.0 provádí. V některých hrách asi toto nastavení nemusí být zpřístupněno, ale AMD údajně vývojářům doporučuje, aby v nastavení byl posuvník, kterým se bude dát umělá ostrost upravit podle libosti.

Prezentace FSR 2.0 na GDC 2022 15 Prezentace FSR 2.0 na GDC 2022 (Zdroj: AMD)

AMD jinak uvádí, že algoritmus by měl od začátku podporovat i dynamickou změnu rozlišení (tedy škálovacího faktoru), kdy by se mohla kvalita snižovat tehdy, když by kvůli náročné scéně jinak hrozil příliš velký propad snímkové frekvence. Ale asi opět bude na vývojářích hry, zda toto budou chtít použít.

Čistě AA režim?

AMD také uvádí, že je ve vývoji verze FSR 2.0, která by neprováděla žádný upscaling. Byla by vlastně jen implementací vyhlazování typu TAA s temporální rekonstrukcí (respektive vylepšením) detailu a temporální stabilizací hran. Šlo by o trošku něco jako DLAA u Nvidie, ale bez použití neuronové sítě.

Oficiálně podporovaná GPU: i Polaris a Pascal

Protože implementace FSR 2.0 se bude nacházet přímo v rámci samotné hry a ne v ovladačích AMD, měla by tato funkce běžet na široké škále GPU bez nějakých umělých omezení. AMD uvádí seznam GPU, které jsou „doporučená“ pro použití FSR 2.0, ale patrně nejde o tvrdý požadavek.

Podle doporučení AMD by FSR 2.0 mohlo umožnit hraní v rozlišení 4K na kartách jako je Radeon RX 6700 XT nebo Radeon RX 5700, případně GeForce RTX 3070, RTX 2070 u Nvidie – a vyšších.

Doporučený hardware pro FSR 2.0 Doporučený hardware pro FSR 2.0 (Zdroj: AMD)

Zajímavější je možná informace o doporučených „minimech“ pro rozlišení 1920 × 1080. Tam AMD uvádí, že můžete začít Radeonem RX 6500 XT z aktuální generace, ale také je akceptovatelný Radeon RX 590. U Nvidie pak GeForce GTX 16xx nebo GeForce RTX 1070. Toto by mělo znamenat, že FSR 2.0 nebude mít problém běžet minimálně na grafikách AMD generace Polaris a na kartách architektury Nvidia Turing a Pascal.

Možná i konzole, hry

Podle AMD bude FSR 2.0 možné používat i na konzolích. Minimálně to oficiálně bude možné na Xboxu Series X a Series S. O PlayStation 5 zatím řeč nebyla, ale architektura GPU je velmi podobná, takže asi půjde jen o otázku softwaru. Stejně jako na PC ale bude platit, že bude záviset na vývojářích hry – FSR 2.0 v nich bude možné použít jen tehdy, když podporu do svého titulu zapracují.

FSR 2.0 potřebuje bezpodmínečně tuto „asistenci“ ze strany hry, není možné ho vynutit bez její spolupráce jako do jde s určitými omezeními u FSR 1.0 (tato funkce teď byla přidána do ovladačů pod označením RSR neboli Radeon Super Resolution).

Podle AMD bude čas vývojářů potřebný pro implementaci někdy relativně malý, jindy větší. Nejsnazší bude údajně FSR 2.0 přidat do her, které už mají konkurenční obdobu DLSS 2.x. V takovém případě je podpora pro předávání vektorů a pro vykreslování s nižším než výstupním rozlišením už přítomná a zřejmě se dá znovu použít pro FSR 2.0. V některých těchto případech by podle AMD měly programátorům stačit dokonce jenom tři dny. Poměrně snadné má být také přidat podporu, pokud je hra založená na Unreal Enginu 4 nebo 5 a je do něj integrovaný plugin FSR 2.0 (ten má být k dispozici od verze UE4.26/4.27), který by zřejmě AMD mělo poskytnout.

Náročnost implementace FSR 2.0 do hry Náročnost implementace FSR 2.0 do hry (Zdroj: AMD)

Pokud tato esa v rukávu hra nemá, je implementace obtížnější, ale pomůže, pokud už v kódu je podpora pro vykreslování na nižším než výstupním rozlišení (třeba z FSR 1.0) a také pokud je implementované vyhlazování TAA. Pokud však neplatí ani jedno z toho, může implementace FSR 2.0 zabrat až čtyři týdny a déle.

Seznam her, kde je FSR 2.0 potvrzené, je zatím jen krátký. Ví se o hře Deathloop, na které byla funkce poprvé ukázána. Druhou by měla být hra Forspoken. Na té mimochodem zase Microsoft demonstroval technologie DirectStorage.

FSR 2.0 bude stejně jako FSR 1.0 k dispozici pod open source licencí (MIT) na GPUOpen.org. Bude zveřejněné API s dokumentací, zdrojové kódy vlastní knihovny v C++ a HLSL, plugin pro Unreal Engine 4.26/4.27 a také příklady implementace pod DirectX 12, Vulkanem a také pro Xbox (ovšem to bude jen pro registrované vývojáře).

Kvalita

Jak to všechno funguje, ještě není k vidění v nějaké veřejně vydané hře. Na GPUOpen.org je ale srovnání a lze stáhnout screenshoty ve vysoké kvalitě pro porovnání.

Už také byly sděleny detaily fungování. FSR 2.0 bude v pipeline hry zařazené o něco dříve než FSR 1.0. Část postprocessingu bude muset být prováděna až po něm (a to ty efekty, které již vyžadují, aby před nimi proběhl antialiasing). Naopak FSR 2.0 může proběhnout až poté, co jsou zpracovány efekty pracující se Z-buferem. Upscaling by je totiž rozbil.

Umístění FSR 2.0 v pipeline Umístění FSR 2.0 v pipeline (Zdroj: AMD)

FSR 2.0 je podle AMD rozšíření principu TAA, provádí „reprojekci“ předchozích snímků pomocí pohybových vektorů (tj. generuje ze sousedního snímku „rekonstrukci“ nebo predikci toho aktuálního). To umožňuje poté snímky kombinovat pro posílení detailů. Mělo by to fungovat tak, že při vykreslování se používá jitter, kdy jsou body vzorkovány vždy s určitým měnícím se offsetem, takže postupně jeden vzorek v po sobě jdoucích snímcích vlastně přináší detailnější informaci než jen pokud by byla jeho poloha statická. TAA a nyní také FSR 2.0 dělá to, že pak tuto informaci rozptýlenou v po sobě jdoucích snímků dá dohromady v rámci jednoho.

Prezentace FSR 2.0 na GDC 2022 02 Prezentace FSR 2.0 na GDC 2022 02 (Zdroj: AMD)

Škálování obrazu, které se provádí v spatiálním režimu, by mělo opět používat algoritmus Lanczos nebo podobný, s přidaným anti-ringingem. Tato část by se tedy asi měla podobat FSR 1.0. Zdá se ale, že přímo v tomto škálovacím/převzorkovávacím algoritmu bude prováděno volitelné ostření. Ovšem vedle toho také FSR 2.0 používá na konci (jako postprocessing) ostřící algoritmus RCAS z FSR 1.0.

Prezentace FSR 2.0 na GDC 2022 08 Prezentace FSR 2.0 na GDC 2022 (Zdroj: AMD)

Je zmíněno, že algoritmus generuje „disocclusion mask“, která detekuje pohybující se a statické objekty. Toto má být použito pro prevenci tzv. ghostingu, což je artefakt, kdy jsou ve snímku viditelné obrysy objektů z předchozích snímků.

Prezentace FSR 2.0 na GDC 2022 11 Prezentace FSR 2.0 na GDC 2022 (Zdroj: AMD)

Thin Features Locking

Zajímavý detail je, že algoritmus se údajně speciálně snaží detekovat a zachovávat detaily, jako jsou tenké čáry a hrany. Tedy například dráty rýsující se proti nebi, v kterých někdy mělo zrovna FSR 1.0 problém, takže šlo o část obrazu, kde býval vidět významný rozdíl proti DLSS 2.0. Nicméně také to asi může být tím, že se často stávají obětí TAA. Pokud bude tato funkce dobře fungovat, mohli by jít o velké kvalitativní zlepšení.

Prezentace FSR 2.0 na GDC 2022 14 Prezentace FSR 2.0 na GDC 2022 (Zdroj: AMD)

FSR 2.0 by prý také snad mělo mít nějaké pojistky proti tomu, aby (chybná) temporální rekonstrukce nezpůsobovala nepřirozené změny barev objektů. hodně detailní (technickou) prezentaci celého algoritmu, kterou mělo AMD na GDC 2022, lze vidět na Youtube. Probírá se v ní algoritmus i různé výkonnostní optimalizace, které v něm AMD udělalo.

Kolik výkonu FSR 2.0 potřebuje?

Výkon FSR 2.0 by měl být při stejném vstupním rozlišení o něco nižší než FSR 1.0, protože provádí víc práce a běží na shaderech, které by jinak používalo hlavní vykreslování (ale na druhou stranu už „má v ceně“ vyhlazování hran). Nároky na výkon jsou asi pořád relativně únosné.

Podle prezentace AMD spotřebuje FSR 2.0 na upscaling a temporální rekonstrukci z 1440p na rozlišení 4K (v režimu Quality) na highendovém GPU (Radeon RX 6800 XT) méně než 1,1 ms času GPU. Pro orientaci, při 120 snímcích za sekundu trvá jeden snímek 8,33 milisekundy. V režimu Ultra Performance (tedy upscaling ze 720p na 4K) je cena nižší než 1,0 ms. (Poznámka: tyto údaje jsou bez přídavného ostření, které by přidalo nějaký další výpočetní čas navíc.)

Výpočetní náročnost FSR 2.0 v režimu Quality Výpočetní náročnost FSR 2.0 v režimu Quality (Zdroj: AMD)

AMD v následující tabulce uvádí i údaje pro levnější karty – Radeon RX 6700 XT a RX 5700 XT. Pokud je cílové rozlišení 1920 × 1080, pak výpočet v režimu Quality zabere na RX 5700 XT méně než 0,6 ms na snímek a Ultra Quality méně než 0,5 ms.

ICTS24

Výpočetní náročnost FSR 2.0 v režimu Performance Výpočetní náročnost FSR 2.0 v režimu Performance (Zdroj: AMD)

Pokud vykreslování na nižším rozlišení ušetří na každém snímku více času než tyto hodnoty, pak výsledkem bude vyšší výsledná snímková frekvence (tedy pokud vaše CPU bude stíhat).

Zdroje: AMD, The Verge