120fps — frecvența de 120 de cadre pe secundă, disponibilă pe afișajele cu refresh rate de 120 Hz, unde fiecare cadru durează 8,3 ms. Conform Apple WWDC 2023 Session, ProMotion comută automat frecvența de la 24 la 120 Hz pentru echilibrul dintre fluență și consumul de energie. 8,3 ms — este de două ori mai puțin decât bugetul standard, ceea ce necesită o optimizare serioasă a randării.
Principalele puncte
120fps — frecvența dublă a cadrelor față de standard, la care afișajul reîmprospătează imaginea de 120 de ori pe secundă. Fiecare cadru are un buget de timp de 8,33 ms — jumătate față de 60fps. Aceasta înseamnă că GPU și CPU trebuie să proceseze grafica de două ori mai rapid, iar toți algoritmii care funcționează în 16,7 ms la 60fps se încadrează la 120fps doar cu o eficiență dublă.
Primul dispozitiv mobil cu afișaj de 120 Hz a fost Razer Phone (2017) cu panoul IGZO de la Sharp. Apple a introdus 120 Hz în iPad Pro (2017) sub numele ProMotion, iar în iPhone — abia în 2021 în iPhone 13 Pro. Pe Android, 120 Hz a devenit masiv din 2020: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Astăzi 90–120 Hz este standardul pentru dispozitivele flagship, iar tehnologia LTPO permite schimbarea dinamică a frecvenței.
Percepția 120fps de către utilizator diferă de 60fps nu atât prin absența sacadelor, cât prin senzația de răspuns instantaneu — cursorul, derularea, animațiile urmează degetul cu o întârziere minimă. Această senzație este adesea descrisă ca un ecran „lichid" sau „uleios". După utilizarea a 120 Hz, revenirea la 60 Hz este percepută subiectiv ca o încetinire, chiar dacă nu există pierderi obiective de cadre.
Afișajul de 120 Hz reîmprospătează fizic pixelii de 120 de ori pe secundă, trimițând semnalul pe magistrala MIPI DSI/DPI cu frecvență dublă. Fiecare pixel primește o nouă valoare de luminozitate la fiecare 8,3 ms. Pentru panourile OLED, aceasta înseamnă că timpul de emisie al fiecărui subpixel se reduce, ceea ce necesită o iluminare de fundal mai puternică pentru a păstra aceeași luminozitate a imaginii.
LTPO (Low-Temperature Polycrystalline Oxide) — tehnologia de producere a afișajelor OLED care combină LTPS (viteză mare de comutare) și IGZO (consum redus de energie în stare statică). LTPO permite afișajului să schimbe dinamic frecvența de reîmprospătare de la 1 la 120 Hz fără costuri suplimentare de energie. În modul Always-On Display, frecvența scade la 1 Hz, iar la derulare — crește la 120 Hz. Aceasta oferă o economie de până la 30% energie comparativ cu afișajele care funcționează constant la 120 Hz.
Frame pacing — uniformitatea intervalelor dintre cadre, cel mai important parametru la 120fps. Dacă la 60fps o diferență de 2–3 ms între cadre este imperceptibilă, la 120fps aceeași diferență absolută reprezintă 25% din durata cadrului și este percepută ca sacadare. Pentru un 120fps fluent, fiecare cadru trebuie să se încadreze în 8,3 ms ±1 ms. Instrumente precum FrameRate în Xcode Instruments arată nu doar FPS-ul mediu, ci și histograma intervalelor pentru evaluarea frame pacing-ului.
// iOS — detectarea afișajului de 120 Hz prin CADisplayLink
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Frecvență max.: \(preferredRate.maximum) Hz")
}
}
ProMotion — marca comercială Apple pentru afișajele cu frecvență de reîmprospătare adaptivă până la 120 Hz. A fost introdus prima dată în iPad Pro 10,5 (2017), apoi a apărut în iPhone 13 Pro (2021) și MacBook Pro (2021). ProMotion nu este doar 120 Hz — este gestionarea inteligentă a frecvenței: sistemul analizează tipul de conținut și comută frecvența pentru un echilibru optim între performanță și consumul de energie.
ProMotion suportă patru moduri: 24 Hz pentru conținut static și video 24fps, 30 Hz pentru video 30fps, 60 Hz pentru navigarea UI și 120 Hz pentru derulare și jocuri. Comutarea între moduri are loc într-un singur cadru (8,3 ms) și este imperceptibilă pentru utilizator. Dezvoltatorul poate influența alegerea frecvenței prin preferredFrameRateRange în CADisplayLink, dar decizia finală este luată de sistem pe baza analizei conținutului.
Apple oferă API pentru lucrul cu ProMotion începând cu iOS 15. CADisplayLink.preferredFrameRateRange permite setarea unui interval preferat de frecvență. UIScene.ActivationConditions poate influența frecvența la tranzițiile între scene. Pentru randarea Metal, CAMetalLayer.displaySyncEnabled trebuie să fie true pentru sincronizarea cu ProMotion. Dacă aplicația nu este optimizată pentru 120fps, iOS o comută automat la 60 Hz, ceea ce se vede în Xcode în secțiunea GPU Report.
// iOS — solicitare 120fps pentru modul joc
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)
Optimizarea pentru 120fps — nu înseamnă doar accelerarea codului de două ori, ci regândirea arhitecturii de randare. Operațiile care se încadrau în 16,7 ms la 60fps trebuie acum să se execute în 8,3 ms. Aceasta afectează toate etapele pipeline-ului: pregătirea CPU, randarea GPU și apelurile de sistem.
La 120fps, numărul de draw calls per cadru trebuie să fie de două ori mai mic decât la 60fps pentru a păstra aceeași încărcare a GPU-ului. Dacă la 60fps sunt permise 400 de draw calls, la 120fps — nu mai mult de 200. Utilizați atlase de texturi, îmbinarea mesh-urilor și GPU-instancing pentru a reduce apelurile de randare. Pe Metal, utilizați Indirect Command Buffers, pe Vulkan — Secondary Command Buffers pentru scrierea paralelă a comenzilor.
Shader-ele — un alt factor critic. Shader-ele de pixeli complexe cu multiple prelevări de texturi și operații matematice pot depăși cu ușurință bugetul de 8,3 ms. Utilizați shader-e cu precizie redusă (half în loc de float), reduceți numărul de instrucțiuni și de mostre de textură. Pe GPU-urile mobile (Apple A17, Snapdragon 8 Gen 3), fiecare prelevare de textură durează 2–4 cicluri, iar la 120fps poate deveni un gât de sticlă.
La 120fps, main thread trebuie să pregătească cadrul în 4–5 ms pentru a lăsa timp GPU-ului pentru randare. Orice operație sincronă pe main thread — citirea din baza de date, parsarea JSON, încărcarea imaginilor — creează sacadări. Transferați toate operațiile grele în fire de execuție de fundal, utilizați API-uri asincrone și pool-uri de fire. În iOS, DispatchQueue cu qualityOfService .userInteractive trebuie rezervată doar pentru codul critic de randare.
| Componentă | Buget 120fps | Buget 60fps |
|---|---|---|
| CPU (main thread) | 4 ms | 8 ms |
| Randare GPU | 4 ms | 8 ms |
| Compozit | 0,3 ms | 0,7 ms |
| Așteptare VSync | 0–2 ms | 0–5 ms |
Comparația dintre 120fps și 60fps nu se reduce la dublarea fluenței. Diferența este percepută diferit în funcție de tipul de conținut. Pentru derulare și animații UI, 120fps oferă subiectiv o interfață mai „responsivă". Pentru jocuri, avantajul 120fps se manifestă prin reducerea neclarității de mișcare și o urmărire mai precisă a obiectelor rapide.
Consumul de energie — principalul compromis. 120fps consumă cu 30–50% mai multă energie decât 60fps la aceeași luminozitate a afișajului. Aceasta înseamnă că pe o baterie de 4000 mAh, o oră de joc la 120fps descarcă bateria cu aproximativ 25–30% mai rapid. Afișajele LTPO rezolvă parțial problema, reducând frecvența în scenele statice la 1 Hz, dar în utilizarea activă (derulare, jocuri) frecvența rămâne la maximum.
Alegerea între 60fps și 120fps depinde de prioritățile dezvoltatorului. Pentru rețele sociale, mesagerie și aplicații de știri, 120fps nu oferă un avantaj semnificativ — interacțiunea principală (citirea, introducerea textului) nu beneficiază de super-fluență. Pentru jocuri, hărți, editori grafici și aplicații cu animație intensivă, 120fps devine un avantaj competitiv și un marcator de calitate.
Testarea 120fps necesită o abordare specială: metricile standard de 60fps nu arată problemele de frame pacing la 120 Hz. Utilizați o cameră de mare viteză (120+ fps) pentru înregistrarea comportamentului real al ecranului sau instrumentele integrate ale platformei — Xcode Metal Capture pentru iOS și AGI (Android GPU Inspector) pentru Android. Aceste instrumente arată timpul exact al fiecărui cadru, inclusiv așteptarea VSync, și ajută la identificarea micro-sacadărilor.
Întrebări frecvente
Nu întotdeauna. 120fps necesită de două ori mai multă energie și resurse de calcul. Pentru conținut static și UI simplu, 60fps este suficient. Avantajul 120fps este vizibil în scenele dinamice: derulare, jocuri, animații de tranziție.
Utilizați Xcode Instruments (șablonul Core Animation) sau Android Studio Profiler. În iOS, verificați CADisplayLink.timestamp — intervalul dintre apeluri trebuie să fie de aproximativ 8,3 ms. În Android, activați Show refresh rate în Developer Options.
Afișajul reîmprospătează pixelii de două ori mai des, GPU-ul execută de două ori mai multe operații de randare, CPU-ul procesează de două ori mai multe cadre. Fiecare operație consumă energie. Afișajele LTPO reduc frecvența în stare statică, dar în utilizarea activă consumul de energie crește proporțional cu frecvența.
Da. Începând cu Android 11, sistemul suportă diferite frecvențe de reîmprospătare. Dezvoltatorul poate solicita 120 Hz prin WindowManager.setPreferredRefreshRate. Cu toate acestea, nu toate dispozitivele mențin stabil 120fps — este necesară optimizarea randării GPU.
În testul orb, majoritatea utilizatorilor observă diferența la derulare și animații. Cu toate acestea, pentru utilizarea obișnuită (rețele sociale, video, mesagerie) diferența este subiectiv mică. După obișnuirea cu 120 Hz, revenirea la 60 Hz se simte ca o încetinire.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și