Grafického výkonu není nikdy dost, rozlišení rostou a náročnost stoupá. Také vykreslování virtuální reality má poměrně velké hardwarové požadavky. Firma Valve ale nyní přišla s novinkou, která pomůže dostat hratelné snímkové frekvence i ze slabších GPU a zpřístupnit tak obsah pro VR brýle používající její platformu SteamVR i uživatelům poněkud levnějších grafik.
Toto zlepšení se jmenuje Motion Smoothing a 27. listopadu Valve slavnostně oznámilo, že opouští fází beta testování a bylo v rámci Steam VR aktivováno pro uživatele. Tato technika má za cíl zvýšit snímkovou frekvenci na počítačích, jejichž grafika není schopná ať už chvilkově, nebo dlouhodobě dosáhnout požadované frekvence (u HTC Vive/Vive Pro například 90 Hz).
Základem Motion Smoothingu je široce známá technika interpolace snímků, používaná například v televizorech pro vyhlazení pohybu. Ovšem v tomto typickém použití interpolace probíhá tak, že se vezmou dva sousední snímky v originálním obrazu a pomocí analýzy pohybových vektorů a podobných metod je odhadnut mezisnímek mezi nimi. Pochopitelně s omezeními danými tím, že ne všechnu potřebnou informaci pro takovou rekonstrukci je možno ve výchozích snímcích nalézt a počítačový program má také svá omezení.
Pokud by se takový postup měl použít na počítačovou hru, která je interaktivní, došlo by k nežádoucímu zvýšení latence mezi vstupem a obrazem. Když byste chtěli například zdvojnásobit frekvenci, museli byste počkat, až GPU vykreslující třeba jen na 45 FPS dodá dva celé snímky a až potom můžete mezi ně začít dopočítávat třetí, který se zobrazí mezi nimi. Výsledná latence navíc je tedy značná, což bývá u virtuální reality nepříjemné.
Motion Smoothing: interpolace snímků bez dopadu na latenci
Motion Smoothing ve SteamVR proto používá odlišný přístup. Místo dopočítání mezisnímku mezi dva reálné interpoluje pohyb takříkajíc prediktivně. Místo jednoho snímku z minulosti a jednoho z budoucnosti jsou použité poslední dva minulé snímky, takže se nemusí čekat a přidávat latenci vícesnímkovým bufferem. „Zfalšování“ nového syntetického snímku funguje tak, že algoritmus analyzuje pohyb, jenž nastal mezi posledními dvěma snímky. Pak na tomto základě odhadne, jak bude stejný pohyb pokračovat ve snímku následujícím, a vyrobí podle toho uměle snímek, kde jsou pohybující se objekty patřičně posunuty/transformovány. Tento proces samozřejmě opět bude obsahovat chyby a nepřesnosti – oběd zdarma neexistuje a chybějící informace je chybějící informace. Pokud by například v tomto místě měl pohyb ustat nebo se změnit, interpolace to neví a chybně ukáže jeho pokračování beze změny.
Nicméně když bez podobné techniky GPU není schopno dosáhnout dost vysoké frekvence, je nedokonalý odhadnutý snímek lepší než nic a může zajistit, aby byl pohyb vnímán jako plynulý. Syntetické snímky z chybami jsou navíc prokládány těmi správnými (reálně vypočítanými), takže jejich odchylky člověk nemusí postřehnout.
S Motion Smoothingem musí hra či VR aplikace vykreslit sama jen každý druhý snímek, čímž se nároky na výkon o hodně snižují. Pokud by to nestačilo, je dokonce možné počítat dva syntetické snímky na jeden reálně vypočítaný (zde pochopitelně narostou projevy chyb). Pozitivní je, že kadence vkládání těchto syntetických snímků není fixní, ale přizpůsobí se aktuálnímu výkonu hry. Dokud tedy GPU zvládá a tento trik není nutný, máte plnou nativní kvalitu, Motion Smoothing nastoupí do akce teprve tehdy, když GPU přestane stíhat počítat snímky a frekvence klesne.
Novinka zatím jenom pro grafiky GeForce
Jak už bylo řečeno, tato technika už je nyní zapnutá v klientu SteamVR a můžete ji tedy ve hrách využívat, pokud máte headsety kompatibilní se SteamVR. Má to ovšem jistá omezení – aktivní je na počítačích se systémem Windows 10 a s grafickou kartou značky Nvidia. Na Radeonech a s integrovanými grafikami Intelu tedy (zatím?) nefunguje. Kromě toho také Valve upozorňuje, že nepracuje s brýlemi Oculus Rift nebo se zařízeními platformy Windows Mixed Reality. Tato mají totiž vlastní způsoby, jak se vypořádávají s propady FPS a jejich ovladače asi nejsou kompatibilní (nebo s nimi Valve nechce implementaci zvlášť řešit).