13. 7. 2019

Pixelíky - enhance, upscale !!


Pred štvrťstoročím na bežnej 21 palcovej /55cm/ CRT telke s fosforovou matnicou ste nijak zvlášť nepociťovali to extra nízke herné rozlíšenie. Typicky niečo okolo 320x240 pixel. Interlace obraz s field snímkovaním /frame má párne a nepárne riadky/ s hysteréziou obrazu /splývanie farieb, štruktúr/ sa postaral o tom, že to na malom TV vyzeralo akceptovateľne. Bohužiaľ nie tak dnes na moderných LCD, ktoré vám britva ostrým zobrazením neodpustia nič a staré hry, najčastejšie pod emuláciou, vyzerajú ako "nečitateľná" zmes farebných bodov.

Pod emuláciou som prešiel stovky starých konzoláckych hier /SNES, Megadrive a spol./ a neuniklo mi, že sa v nastaveniach postupne objavovali rôzne pokusy ako tento problém riešiť. Obrovská skupina pixel art scaling algoritmov. Skratky ako 2xSAL, HQ4x alebo Super Eagle sú "emulatoristom" chronicky dobre známe. Ide vlastne o vytvorenie nových pixelov /novej obrazovej informácie/ v reálnom čase s cieľom navodiť dojem, že tá gamesa nebola naprogramovaná v rozlíšení 320x240 ale napríklad 640x480+. Týchto "filtrov" existuje more, podľa typu hry a vkusu si tam nahodíte ten svoj a čakáte čo prinesie vývoj v blízkej budúcnosti. Osobne som vždy používal iba klasický bilineárny filtering /ten istý, čo "rozmázava" kostičky na texúrach v 3D hrách/.


Budúcnosť sa s hukotom dostavila ale musím trochu odbočiť ku Killzone na PS4ke. Táto hra si povedala, že to vezme z opačnej strany. Na rozdiel od starých konzol a hier tých pixelov máme dnes až príliš veľa, takže to chce znížiť ich množstvo /tlak na GPU/ pri zachovaní vizuálnej kvality. Frame teda rozdelili na pseudo interlace riadky /ako na CRT TV !!/ a používa sa časť dát zo starého frejmu /alebo dokonca viacerých/ s rekonštrukciou do finálneho full HD. Celé to beží stále v reálnom čase a najnovšie varianty ako checkerboard rendering alias CB /nie riadky ale šachovnica/ je už dnes úplna masovka na PS4ke aj Xbox one a dosahuje to pri správnom nakodovaní tak fenomenálne výsledky, že dokázali pomýliť aj také Digital Foundry, ktoré si myslelo, že sa pozerá na plnohodnotný 1920x1080px frame aj keď išlo o špičkovú CB "rekonštrukciu". Očakávam ešte väčšie využitie tejto techniky v ďalšej gen /"4K zadarmo"/ s natívnejšou podporou aj na HW úrovni GPU.

Naspäť k tým starým hrám. Tie spomínané klasické "filtre" ako 2xSAL, 4xHQ, Super Eagle sú síce rýchle, nenáročné ale zároveň aj dosť blbé. Cez frame idú mechanicky, nerozumejú na čo sa pozerajú a dotknú sa každého pixelu, aj tam kde to nie je treba. Zapojme teda do práce AI neurálnu sieť do algoritmu ESRGAN s Mang109 datasetom "trenovaným" pre tento typ práce. Výsledok máte nižšie aplikovaný na adventúru Monkey Island a je to vskutku niečo neuveriteľné. Ako keby to nejaký živý autor prekreslil nanovo. Pričom presne to je cieľom tejto techniky a to sme ešte len na začiatku.



OK. Upravíme nejaké statické obrázky, CG pozadia /Final Fantasy 7 !!, Resident Evil/ a môžme aj textúry ? Samozrejme - youtube je plné videií, kde sa amatéri snažia pomôcť hrám ako Half Life, Thief, DOOM, Hexen. Tento typ zmien pomocou "AI" dnes ešte beží v off-line režime, predsa len to ešte musíte manuálne skontrolovať a autorizovať, ale už o päť rokov bude všetko inak. Zoberte si napríklad Variable Rate Shading (VRS) fy Nvidia s podporou v HW. Ide o selektívne zníženie kvality shader kódu /menej zaťažené GPU = lepšia celková perfomance/ v tých častiach obrazu, kde sa predpokladá, že sa nepozeráte alebo sa pohybujú príliš rýchlo /stačí menej dobrý shader/ alebo je tá oblasť v "tmavej časti" a teda tam aj tak nič nevidíte - spolu s "AI" rekonštrukciou obrazu je to asi tá správna cesta ako sa na Playstation 6 /VR/ rutinne dostať na 8K frame bez toho aby ste potrebovali 1000 watt zdroj.