Víc detailů k AMD FSR odhaleno: algoritmus je podobný Lanczosu a používá FP16, nové hry

21. 7. 2021

Sdílet

 Autor: AMD
Je tu naráz hned několik novinek k technologii upscalování her AMD FSR. Bylo vydáno demo, podpora přišla do nových her a kód byl otevřen. Víme tak, že používá akceleraci FP16 a anti-ringing aproximaci algoritmu Lanczos.

Když byla minulý měsíc do světa vypuštěná technologie upscalování her FidelityFX Super Resolution (FSR) od AMD, bylo přislíbeno, že to bude open source software. To také bylo dodrženo, AMD teď publikovalo FSR na webu GPUOpen. Díky tomu máme víc informací k tomu, jak upscaling funguje. Také byly oznámeny další hry, do kterých se FSR dostane, a demo, kde se technika dá zkoušet.

Minulý týden AMD zveřejnilo kód FSR na svém webu GPUOpen, kde sdílí open source grafické komponenty pro hry a další software. To jednak usnadní integraci do her včetně toho, že teď budou vývojáři moci kód upravovat (je pod licencí MIT). Kromě toho jsme s tím ale také získali nové poznatky o fungování této technologie.

První část filtru tvoří upravený Lanczos + anti-ringing

Z kódu vyplynulo, jaký algoritmus používá FSR k zvětšení rozlišení snímků. AMD ho nazývá Edge Adaptive Spatial Upsampling (EASU), přičemž vedle něj FSR aplikuje ostření nazvané RCAS (Robust Constrast-Adaptive Sharpening), EASU tedy není celé FSR.

AMD uvádí, že EASU používá upravený škálovací (převzorkovávací) algoritmus, který je aproximací algoritmu Lanczos s velikostí kernelu 2. O aproximaci jde proto, že je jednak upravený (zjednodušený) pro výkon tak, aby výpočetní nároky byly co nejnižší (neobsahuje žádné komplexní operace jako sin, výpočet převrácené hodnoty nebo odmocniny), což má umožnit použití FSR i v nevýkonných levných notebookových a jiných lowendových grafikách.

Komentář v kódu popisující použitý upscalovací algoritmus Zdroj TechPowerUp Komentář v kódu popisující použitý upscalovací algoritmus (Zdroj: TechPowerUp)

Druhá modifikace přidává jednoduchou pojistku proti vzniku „ringing“ artefaktů (nebo také „haloing“), které klasický Lanczos produkuje. Algoritmus hodnotu výstupního pixelu omezí do rozsahu hodnot, který zjistí v okolí pixelu, přičemž jako toto okolí používá blok 2×2 vstupních texelů. Toto omezení vypočteného pixelu zajistí, aby nepřestřeloval (nebyl jasnější nebo tmavší), což by právě mělo zabránit ringingu. Jde tedy asi o něco podobného, jako anti-ringing pro škálování Lanczos, který používá MadVR.

Kód jinak uvádí, že celé škálování probíhá jedním průchodem, což je změna proti obvyklému postupu implementací na CPU (škálování se často provádí nadvakrát – nejdřív v jedné, pak v druhé dimenzi), opět asi kvůli výkonu. Škálování EASU je celkově vzato relativně jednoduché v porovnání s různými dalšími experimentálními postupy, které existují, což vysvětluje poměrně vysoký výkon výsledné implementace ve shaderech.

FSR používá výpočty FP16, ale nevyžaduje je

Je také potvrzeno, že AMD pro zlepšení výkon shaderů, které upscaling počítají, používá výpočty s přesností FP16. Ta by pro tento účel měla stačit a značně snižuje zátěž GPU, kterou upscaling přidává, protože novější GPU umí FP16 počítat s dvojnásobným výkonem. FP16 ale podporují až GPU Vega (kde byla tato funkce uvedena pod označením Rapid Packed Math) a novější, u Nvidie je umí karty GeForce s architekturou Turing a novější GPU.

Aby FSR fungovalo i na starších GPU, má také záložní kód, který používá operace FP32, jejichž hrubý výpočetní výkon je ale proti FP16 teoreticky jen poloviční. To znamená, že na grafikách architektury Polaris, na GeForce generace Pascal nebo na ještě starších a oficiálně nepodporovaných GPU bude nárůst výkonu získaný pomocí FSR o něco nižší. GPU Intel by FP16 měla také podporovat, takže by na nich snad mohla být také aktivní rychlejší 16bitová verze FSR (ale toto asi záleží na implementaci a ovladačích). Poznámka: AMD v tabulkách uvádí, že Pascaly FP16 používají, ale nejspíš jde o chybu, protože Pascaly mají FP16 pomalé. V tabulce je také pro FP32 uvedená generace Maxwell, která snad neměla být oficiálně podporovaná.

Nové hry s FSR

Od prvotního odhalení FidelityFX Super Resolution se už trošku rozrostl i seznam her, v kterých se FSR dá použít. Prakticky vzápětí přibyla Dota 2 a dále hra Necromunda: Hired Gun. Tento týden se přidal také Resident Evil Village (patch 1.03) a hra Marvel's Avengers. Do konce měsíce by pak mělo FSR být zprovozněno ještě ve hře Edge of Eternity. Celkově by pak mělo být her zatím třináct, později mají přibýt ještě asi dva tucty Necromunda a Avengers obsahují jak podporu pro DLSS, tak pro FSR, takže pokud chcete, můžete porovnávat.

Nové hry s FSR Nové hry s FSR (Zdroj: AMD)

Nvidia DLSS má již zajištěnou přímo integraci do některých herních enginů, která implementaci usnadňuje. Toto by mělo nastat i s FSR, i když to, jak asi čekáte, není v tak pokročilém stádiu. FSR je dostupné v Unreal Engine 4 (4.26) jako patch. Vedle toho pak bude také přidáno do enginu Unity 21.2 HDRP, kde je zatím v speciální preview beta větvi.

Pro engine Unity bylo ukázáno i demo Spaceship (ovšem jen na videu), slibující až 1,9× zlepšení výkonu ve 4K v režimu Performance. Vedle toho má jednoduché samostatné demo také AMD, takže můžete FSR vyzkoušet, aniž byste museli kupovat nebo instalovat celou hru. Toto demo se dá najít třeba v archivu techPowerUpu.

Náznaky, že budou další verze?

Je asi docela dost pravděpodobné, že se FSR bude dále zlepšovat (ostatně podobně, jak Nvidia neustále pracuje na zlepšeních svého DLSS). V tomto smyslu by mohla být zajímavá zmínka, která se objevila v dokumentaci. AMD na jednom místě doporučuje ve hrách „čudlík“ k zapnutí značovat jako „FSR 1.0“, jako by bylo důležité upozornit na to, že hra používá konkrétní verzi technologie, která by se měla rozlišovat od případných jiných následujících. Je proto pravděpodobné, že minimálně v tuto chvíli AMD plánuje i nějaké budoucí vylepšené verze, které by se mohly jmenovat třeba 1.1, 2.0 a tak podobně.

bitcoin_skoleni

AMD FSR 1.0 a DLSS ve hře Necromunda AMD FSR 1.0 a DLSS ve hře Necromunda (Zdroj: VideoCardz)

Jak moc lepší budou, to teď samozřejmě nelze odhadnout. Je možné, že taková „verze 2.0“ třeba vznikne až v momentě, pokud AMD někdy zavede do herních GPU specializovanou akceleraci AI operací. Nebo by mohlo jít opět o obecný výpočetní algoritmus pro shadery, ale využívající nějak jiné/přídavné techniky, ať už „2D“, nebo temporální. Je samozřejmě třeba upozornit, že přidání výpočetní komplexity do hypotetického „next-gen“ FSR také zvýší nároky na hardware, takže by filtr výměnou za lepší obraz mohl přinášet méně výkonu navíc.

Galerie: AMD FSR už je open-source, nové informace a nové hry

Zdroje: AMD, GPUOpen, VideoCardz (1, 2), techPowerU