120fps — hər kadrın 8.3 ms çəkdiyi 120 Hz tezlikli displeylərdə mövcud olan saniyədə 120 kadr tezliyi. Apple WWDC 2023 Session-a görə, ProMotion hamarlıq və enerji sərfiyyatı balansı üçün tezliyi avtomatik olaraq 24-dən 120 Hz-ə dəyişir. 8.3 ms — standart büdcədən iki dəfə azdır ki, bu da ciddi render optimallaşdırması tələb edir.
Əsas məqamlar
120fps — standartdan iki dəfə yüksək kadr tezliyi, bu zaman displey şəkli saniyədə 120 dəfə yeniləyir. Hər kadrın vaxt büdcəsi 8.33 ms-dir — 60fps-dən iki dəfə az. Bu o deməkdir ki, GPU və CPU qrafiki iki dəfə sürətli emal etməlidir və 16.7 ms-də işləyən bütün alqoritmlər 120fps-də yalnız iki dəfə yüksək səmərəlilik şərti ilə yerinə yetirilir.
120 Hz displeyli ilk mobil cihaz Sharp-ın IGZO paneli ilə Razer Phone (2017) oldu. Apple 120 Hz-i ProMotion adı ilə iPad Pro-da (2017), iPhone-da isə yalnız 2021-ci ildə iPhone 13 Pro-da tətbiq etdi. Android-də 120 Hz 2020-ci ildən kütləvi hala gəldi: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Bu gün 90–120 Hz flaqman cihazlar üçün standartdır və LTPO texnologiyası tezliyi dinamik dəyişməyə imkan verir.
İstifadəçinin 120fps qavrayışı 60fps-dən təkcə sıçrayışların olmaması ilə deyil, ani reaksiya hissi ilə fərqlənir — kursor, sürüşdürmə, animasiyalar barmağı minimal gecikmə ilə izləyir. Bu hiss çox vaxt „maye" və ya „yağlı" ekran kimi təsvir edilir. 120 Hz istifadə etdikdən sonra 60 Hz-ə qayıdış subyektiv olaraq ləngimə kimi qəbul edilir, hətta obyektiv kadr itkisi olmasa belə.
120 Hz displey fiziki olaraq pikselləri saniyədə 120 dəfə yeniləyir, MIPI DSI/DPI magistralı ilə ikiqat tezlikdə siqnal göndərir. Hər piksel hər 8.3 ms-dən bir yeni parlaqlıq dəyəri alır. OLED panellər üçün bu o deməkdir ki, hər subpikselin emisiya müddəti qısalır və eyni şəkil parlaqlığını saxlamaq üçün daha parlaq arxa işıqlandırma tələb olunur.
LTPO (Low-Temperature Polycrystalline Oxide) — LTPS (yüksək keçid sürəti) və IGZO-nu (statikada aşağı enerji sərfiyyatı) birləşdirən OLED displey istehsalı texnologiyası. LTPO displeyə əlavə enerji xərci olmadan yeniləmə tezliyini 1-dən 120 Hz-ə qədər dinamik dəyişməyə imkan verir. Always-On Display rejimində tezlik 1 Hz-ə düşür, sürüşdürmə zamanı 120 Hz-ə qalxır. Bu, daimi 120 Hz-də işləyən displeylərlə müqayisədə 30% enerji qənaəti verir.
Frame pacing — kadrlar arasındakı intervalların vahidliyi, 120fps-də ən vacib parametr. 60fps-də 2–3 ms fərq hiss olunmazsa, 120fps-də eyni mütləq fərq kadr müddətinin 25%-ni təşkil edir və sıçrayış kimi qəbul edilir. Hamar 120fps üçün hər kadr 8.3 ms ±1 ms-ə sığmalıdır. Xcode Instruments-də FrameRate kimi alətlər yalnız orta FPS deyil, həm də frame pacingi qiymətləndirmək üçün interval histoqramını göstərir.
// iOS — CADisplayLink vasitəsilə 120 Hz displeyin aşkarlanması
func checkDisplayRefreshRate() {
let link = CADisplayLink(target: self,
selector: #selector(step))
if let preferredRate = link?.preferredFrameRateRange {
print("Maks. tezlik: (\("preferredRate.maximum) Hz")
}
}
ProMotion — 120 Hz-ə qədər adaptiv yeniləmə tezlikli displeylər üçün Apple-ın ticarət nişanı. İlk dəfə iPad Pro 10.5-də (2017) təqdim edilmiş, sonra iPhone 13 Pro-da (2021) və MacBook Pro-da (2021) peyda olmuşdur. ProMotion sadəcə 120 Hz deyil — bu intellektual tezlik idarəetməsidir: sistem məzmun növünü təhlil edir və performans və enerji sərfiyyatının optimal balansı üçün tezliyi dəyişir.
ProMotion dörd rejimi dəstəkləyir: statik məzmun və 24fps video üçün 24 Hz, 30fps video üçün 30 Hz, UI naviqasiyası üçün 60 Hz və sürüşdürmə və oyunlar üçün 120 Hz. Rejimlər arasında keçid bir kadrda (8.3 ms) baş verir və istifadəçi üçün görünməzdir. Developer CADisplayLink-də preferredFrameRateRange vasitəsilə tezlik seçiminə təsir edə bilər, lakin son qərarı məzmun təhlili əsasında sistem verir.
Apple iOS 15-dən etibarən ProMotion ilə iş üçün API təqdim edir. CADisplayLink.preferredFrameRateRange üstünlük verilən tezlik diapazonunu təyin etməyə imkan verir. UIScene.ActivationConditions səhnələr arasında keçid zamanı tezliyə təsir edə bilər. Metal renderi üçün CAMetalLayer.displaySyncEnabled ProMotion ilə sinxronizasiya üçün true olmalıdır. Tətbiq 120fps üçün optimallaşdırılmayıbsa, iOS onu avtomatik olaraq 60 Hz-ə keçirir, bu da Xcode-də GPU Report bölməsində görünür.
// iOS — oyun rejimi üçün 120fps sorğusu
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)
120fps üçün optimallaşdırma — sadəcə kodu iki dəfə sürətləndirmək deyil, render arxitekturasını yenidən nəzərdən keçirməkdir. 60fps-də 16.7 ms-ə sığan əməliyyatlar indi 8.3 ms-də yerinə yetirilməlidir. Bu, konveyerin bütün mərhələlərinə təsir edir: CPU hazırlığı, GPU renderi və sistem çağırışları.
120fps-də hər kadr üçün draw calls sayı eyni GPU yükünü saxlamaq üçün 60fps-dən iki dəfə az olmalıdır. 60fps-də 400 draw calls icazə verilirsə, 120fps-də 200-dən çox olmamalıdır. Çağırışları azaltmaq üçün tekstur atlasları, mesh birləşməsi və GPU instansinqindən istifadə edin. Metal-da Indirect Command Buffers, Vulkan-da isə Secondary Command Buffers-dən paralel əmr yazmaq üçün istifadə edin.
Shaderlər — digər kritik faktordur. Çoxsaylı tekstur nümunələri və riyazi əməliyyatları olan mürəkkəb piksel shaderləri 8.3 ms büdcəsini asanlıqla keçə bilər. Aşağı dəqiqlikli shaderlərdən (float əvəzinə half) istifadə edin, təlimatların və tekstur nümunələrinin sayını azaldın. Mobil GPU-larda (Apple A17, Snapdragon 8 Gen 3) hər tekstur nümunəsi 2–4 sikl çəkir və 120fps-də bu dar boğaza çevrilə bilər.
120fps-də main thread GPU-ya render üçün vaxt buraxmaq üçün kadrı 4–5 ms-də hazırlamalıdır. Main thread-də hər hansı sinxron əməliyyat — verilənlər bazasından oxuma, JSON analizi, şəkillərin yüklənməsi — sıçrayış yaradır. Bütün ağır əməliyyatları fon thread-lərinə köçürün, asinxron API-lərdən və thread hovuzlarından istifadə edin. iOS-da qualityOfService .userInteractive ilə DispatchQueue yalnız kritik render kodu üçün ayrılmalıdır.
| Komponent | 120fps büdcəsi | 60fps büdcəsi |
|---|---|---|
| CPU (main thread) | 4 ms | 8 ms |
| GPU renderi | 4 ms | 8 ms |
| Kompozit | 0.3 ms | 0.7 ms |
| VSync gözləməsi | 0–2 ms | 0–5 ms |
120fps və 60fps müqayisəsi hamarlığın ikiqat artması ilə məhdudlaşmır. Fərq məzmun növündən asılı olaraq fərqli qavranılır. Sürüşdürmə və UI animasiyaları üçün 120fps subyektiv olaraq daha „həssas" interfeys verir. Oyunlar üçün 120fps-in üstünlüyü hərəkət bulanıqlığının azalması və sürətli obyektlərin daha dəqiq izlənilməsində özünü göstərir.
Enerji sərfiyyatı — əsas kompromis. 120fps eyni displey parlaqlığında 60fps-dən 30–50% daha çox enerji sərf edir. Bu o deməkdir ki, 4000 mAh batareyada bir saatlıq 120fps oyun batareyanı təxminən 25–30% daha sürətli boşaldır. LTPO displeylər statik səhnələrdə tezliyi 1 Hz-ə endirərək problemi qismən həll edir, lakin aktiv istifadədə (sürüşdürmə, oyunlar) tezlik maksimumda qalır.
60fps və 120fps arasında seçim developer-in prioritetlərindən asılıdır. Sosial şəbəkələr, mesencerlər və xəbər tətbiqləri üçün 120fps əhəmiyyətli üstünlük vermir — əsas qarşılıqlı əlaqə (oxuma, mətn daxil etmə) super hamarlıqdan faydalanmır. Oyunlar, xəritələr, qrafik redaktorlar və intensiv animasiyalı tətbiqlər üçün 120fps rəqabət üstünlüyü və keyfiyyət göstəricisinə çevrilir.
Test etmə 120fps xüsusi yanaşma tələb edir: standart 60fps metrikaları 120 Hz-də frame pacing problemlərini göstərmir. Ekranın real davranışını qeyd etmək üçün yüksək sürətli kameradan (120+ fps) və ya platformanın daxili vasitələrindən — iOS üçün Xcode Metal Capture və Android üçün AGI (Android GPU Inspector) istifadə edin. Bu alətlər VSync gözləməsi də daxil olmaqla hər kadrın dəqiq vaxtını göstərir və mikro-sıçrayışları aşkarlamağa kömək edir.
Tez-tez verilən suallar
Həmişə yox. 120fps iki dəfə çox enerji və hesablama resursları tələb edir. Statik məzmun və sadə UI üçün 60fps kifayətdir. 120fps-in üstünlüyü dinamik səhnələrdə nəzərə çarpır: sürüşdürmə, oyunlar, keçid animasiyaları.
Xcode Instruments (Core Animation şablonu) və ya Android Studio Profiler-dən istifadə edin. iOS-da CADisplayLink.timestamp yoxlayın — çağırışlar arasındakı interval təxminən 8.3 ms olmalıdır. Android-də Developer Options-da Show refresh rate-i aktivləşdirin.
Displey pikselləri iki dəfə tez-tez yeniləyir, GPU iki dəfə çox render əməliyyatı yerinə yetirir, CPU iki dəfə çox kadr emal edir. Hər əməliyyat enerji sərf edir. LTPO displeylər statik vəziyyətdə tezliyi azaldır, lakin aktiv istifadədə enerji sərfiyyatı tezliklə mütənasib olaraq artır.
Bəli. Android 11-dən başlayaraq sistem müxtəlif yeniləmə tezliklərini dəstəkləyir. Developer WindowManager.setPreferredRefreshRate vasitəsilə 120 Hz tələb edə bilər. Lakin bütün cihazlar 120fps-i sabit saxlamır — GPU render optimallaşdırması tələb olunur.
Kor testdə istifadəçilərin əksəriyyəti sürüşdürmə və animasiyalarda fərqi görür. Lakin adi istifadədə (sosial media, video, mesencerlər) fərq subyektiv olaraq azdır. 120 Hz-ə öyrəşdikdən sonra 60 Hz-ə qayıdış ləngimə kimi hiss olunur.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun