120fps — snímková frekvence 120 snímků za sekundu, dostupná na displejích s obnovovací frekvencí 120 Hz, kde každý snímek trvá 8,3 ms. Podle Apple WWDC 2023 Session ProMotion automaticky přepíná frekvenci od 24 do 120 Hz pro rovnováhu plynulosti a spotřeby energie. 8,3 ms — to je dvakrát méně než standardní rozpočet, což vyžaduje vážnou optimalizaci renderování.
Hlavní body
120fps — dvojnásobná snímková frekvence oproti standardu, při které displej obnovuje obraz 120krát za sekundu. Každý snímek má časový rozpočet 8,33 ms — polovinu oproti 60fps. To znamená, že GPU a CPU musí zpracovávat grafiku dvakrát rychleji a všechny algoritmy pracující v 16,7 ms se při 120fps vejdou pouze za podmínky dvojnásobné účinnosti.
Prvním mobilním zařízením s 120 Hz displejem byl Razer Phone (2017) s IGZO panelem od Sharp. Apple zavedl 120 Hz v iPadu Pro (2017) pod názvem ProMotion a v iPhone — až v roce 2021 v iPhone 13 Pro. Na Androidu se 120 Hz stalo masovým od roku 2020: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Dnes je 90–120 Hz standardem pro vlajkové lodě a technologie LTPO umožňuje dynamickou změnu frekvence.
Vnímání 120fps uživatelem se od 60fps liší ne tolik absencí trhání, ale pocitem okamžité odezvy — kurzor, scrollování, animace sledují prst s minimálním zpožděním. Tento pocit je často popisován jako „tekutý" nebo „olejový" displej. Po používání 120 Hz je návrat k 60 Hz subjektivně vnímán jako zpomalení, i když objektivně nedochází k vynechávání snímků.
120 Hz displej fyzicky obnovuje pixely 120krát za sekundu a odesílá signál po sběrnici MIPI DSI/DPI s dvojnásobnou frekvencí. Každý pixel dostává novou hodnotu jasu každých 8,3 ms. U OLED panelů to znamená, že doba emise každého subpixelu se zkracuje, což vyžaduje jasnější podsvícení pro zachování stejného jasu obrazu.
LTPO (Low-Temperature Polycrystalline Oxide) — technologie výroby OLED displejů kombinující LTPS (vysoká rychlost přepínání) a IGZO (nízká spotřeba energie ve statickém stavu). LTPO umožňuje displeji dynamicky měnit obnovovací frekvenci od 1 do 120 Hz bez dodatečných nákladů na energii. V režimu Always-On Display frekvence klesá na 1 Hz, při scrollování stoupá na 120 Hz. To přináší úsporu až 30 % energie ve srovnání s displeji pracujícími neustále na 120 Hz.
Frame pacing — rovnoměrnost intervalů mezi snímky, nejdůležitější parametr při 120fps. Zatímco při 60fps je rozdíl 2–3 ms mezi snímky nepostřehnutelný, při 120fps představuje stejný absolutní rozdíl 25 % doby trvání snímku a je vnímán jako trhání. Pro plynulé 120fps musí každý snímek spadat do 8,3 ms ±1 ms. Nástroje jako FrameRate v Xcode Instruments ukazují nejen průměrné FPS, ale také histogram intervalů pro hodnocení frame pacingu.
// iOS — detekce 120 Hz displeje přes CADisplayLink
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Max. frekvence: \( preferredRate.maximum) Hz")
}
}
ProMotion — ochranná známka Apple pro displeje s adaptivní obnovovací frekvencí až 120 Hz. Poprvé představen v iPadu Pro 10,5 (2017), poté se objevil v iPhone 13 Pro (2021) a MacBooku Pro (2021). ProMotion není jen 120 Hz — je to inteligentní řízení frekvence: systém analyzuje typ obsahu a přepíná frekvenci pro optimální rovnováhu výkonu a spotřeby energie.
ProMotion podporuje čtyři režimy: 24 Hz pro statický obsah a video 24fps, 30 Hz pro video 30fps, 60 Hz pro navigaci v UI a 120 Hz pro scrollování a hry. Přepínání mezi režimy probíhá během jednoho snímku (8,3 ms) a je pro uživatele nepostřehnutelné. Vývojář může ovlivnit výběr frekvence pomocí preferredFrameRateRange v CADisplayLink, ale konečné rozhodnutí činí systém na základě analýzy obsahu.
Apple poskytuje API pro práci s ProMotion od iOS 15. CADisplayLink.preferredFrameRateRange umožňuje nastavit preferovaný rozsah frekvence. UIScene.ActivationConditions může ovlivnit frekvenci při přechodech mezi scénami. Pro renderování Metal musí být CAMetalLayer.displaySyncEnabled true pro synchronizaci s ProMotion. Pokud aplikace není optimalizována pro 120fps, iOS ji automaticky přepne na 60 Hz, což je vidět v Xcode v sekci GPU Report.
// iOS — požadavek 120fps pro herní režim
let displayLink = CADisplayLink(
target: self,
selector: #selector(gameLoop)
)
if #available(iOS 15.0, *) {
displayLink?.preferredFrameRateRange =
CAFrameRateRange(minimum: 80,
maximum: 120,
preferred: 120)
}
displayLink?.add(to: .current,
forMode: .default)
Optimalizace pro 120fps — není jen dvojnásobné zrychlení kódu, ale přehodnocení architektury renderování. Operace, které se vešly do 16,7 ms při 60fps, musí být nyní provedeny za 8,3 ms. To ovlivňuje všechny fáze pipeline: přípravu CPU, renderování GPU a systémová volání.
Při 120fps musí být počet draw calls na snímek dvakrát menší než při 60fps, aby bylo zachováno stejné zatížení GPU. Zatímco při 60fps je povoleno 400 draw calls, při 120fps — ne více než 200. Používejte texturové atlasy, spojování meshů a GPU-instancing pro snížení volání renderování. Na Metal používejte Indirect Command Buffers, na Vulkan — Secondary Command Buffers pro paralelní zápis příkazů.
Shadery — další kritický faktor. Složité pixel shadery s mnoha vzorky textur a matematickými operacemi mohou snadno překročit rozpočet 8,3 ms. Používejte shadery s nízkou přesností (half místo float), snižte počet instrukcí a vzorků textur. Na mobilních GPU (Apple A17, Snapdragon 8 Gen 3) trvá každý vzorek textury 2–4 cykly a při 120fps se to může stát úzkým hrdlem.
Při 120fps musí main thread připravit snímek za 4–5 ms, aby ponechal čas GPU pro renderování. Jakákoli synchronní operace na main thread — čtení z databáze, parsování JSON, načítání obrázků — vytváří trhání. Přesuňte všechny těžké operace do vláken na pozadí, používejte asynchronní API a fondy vláken. V iOS by DispatchQueue s qualityOfService .userInteractive měla být vyhrazena pouze pro kritický kód renderování.
| Komponenta | Rozpočet 120fps | Rozpočet 60fps |
|---|---|---|
| CPU (main thread) | 4 ms | 8 ms |
| Renderování GPU | 4 ms | 8 ms |
| Kompozit | 0,3 ms | 0,7 ms |
| Čekání na VSync | 0–2 ms | 0–5 ms |
Srovnání 120fps a 60fps se neomezuje na zdvojnásobení plynulosti. Rozdíl je vnímán různě v závislosti na typu obsahu. Pro scrollování a UI animace poskytuje 120fps subjektivně „odezívější" rozhraní. Pro hry se výhoda 120fps projevuje ve snížení rozmazání pohybu a přesnějším sledování rychlých objektů.
Spotřeba energie — hlavní kompromis. 120fps spotřebovává o 30–50 % více energie než 60fps při stejném jasu displeje. To znamená, že na baterii 4000 mAh vybíjí hodina hraní při 120fps baterii přibližně o 25–30 % rychleji. LTPO displeje problém částečně řeší snížením frekvence ve statických scénách na 1 Hz, ale při aktivním používání (scrollování, hry) frekvence zůstává na maximu.
Volba mezi 60fps a 120fps závisí na prioritách vývojáře. Pro sociální sítě, messengery a zpravodajské aplikace nepřináší 120fps významnou výhodu — základní interakce (čtení, zadávání textu) z superplynulosti netěží. Pro hry, mapy, grafické editory a aplikace s intenzivní animací se 120fps stává konkurenční výhodou a znakem kvality.
Testování 120fps vyžaduje speciální přístup: standardní metriky 60fps neukazují problémy frame pacingu při 120 Hz. Používejte vysokorychlostní kameru (120+ fps) pro záznam skutečného chování obrazovky nebo vestavěné nástroje platformy — Xcode Metal Capture pro iOS a AGI (Android GPU Inspector) pro Android. Tyto nástroje ukazují přesný čas každého snímku včetně čekání na VSync a pomáhají odhalit mikro-trhání.
Často kladené otázky
Ne vždy. 120fps vyžaduje dvakrát více energie a výpočetních zdrojů. Pro statický obsah a jednoduché UI stačí 60fps. Výhoda 120fps je patrná v dynamických scénách: scrollování, hry, přechodové animace.
Použijte Xcode Instruments (šablonu Core Animation) nebo Android Studio Profiler. V iOS zkontrolujte CADisplayLink.timestamp — interval mezi voláními by měl být přibližně 8,3 ms. V Androidu zapněte Show refresh rate v Developer Options.
Displej obnovuje pixely dvakrát častěji, GPU provádí dvakrát více renderovacích operací, CPU zpracovává dvakrát více snímků. Každá operace spotřebovává energii. LTPO displeje snižují frekvenci ve statickém stavu, ale při aktivním používání spotřeba energie roste úměrně s frekvencí.
Ano. Od Androidu 11 systém podporuje různé obnovovací frekvence. Vývojář může požádat o 120 Hz prostřednictvím WindowManager.setPreferredRefreshRate. Nicméně ne všechna zařízení stabilně udržují 120fps — je nutná optimalizace GPU renderování.
Ve slepém testu většina uživatelů postřehne rozdíl při scrollování a animacích. Pro běžné použití (sociální sítě, video, messengery) je však rozdíl subjektivně malý. Po přivyknutí na 120 Hz je návrat k 60 Hz pociťován jako zpomalení.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také