В детстве многие листали блокнот с анимацией — в углу страницы были нарисованы фигурки, слегка меняющиеся от листа к листу. Быстро перелистывая большим пальцем, можно было заставить фигурки двигаться. Чем быстрее листаешь, тем плавнее движение; слишком медленно — и картинка распадается на отдельные статичные изображения.
Монитор делает ровно то же самое: сколько раз в секунду он «перелистывает» картинку, называется частотой обновления и измеряется в герцах (Гц). 60 Гц — это 60 кадров в секунду.
Звучит просто, но за «количеством переворотов в секунду» скрываются любопытные физиологические и физические нюансы. Например, широко распространено утверждение, что человеческий глаз различает только 24 кадра в секунду, поэтому в кино достаточно 24 кадров, а большее — пустая трата. Так ли это?
Сначала развеем миф: человеческий глаз — не фотоаппарат
Фраза «глаз видит только 24 кадра» — это заблуждение, повторённое множество раз. Его истоки на самом деле прагматичны: в 1920-х, с появлением звукового кино, 24 кадра стали компромиссом между стоимостью плёнки и качеством синхронизации звука, и не имели отношения к «пределам человеческого зрения».
Глаз — это не камера, которая делает снимок по щелчку затвора; он больше похож на непрерывно работающий светочувствительный конвейер. Свет попадает на сетчатку, фоторецепторы реагируют, сигнал поступает в мозг — весь процесс занимает десятки миллисекунд, и при этом не «сбрасывается» для нового кадра. Предыдущее изображение ещё не успевает полностью угаснуть, как поверх него уже накладывается следующее. Это явление называется инерцией зрения (зрительным удержанием), а время остаточного свечения составляет около 1/16 секунды.
Именно благодаря инерции зрения отдельные кадры в блокноте с анимацией, фильме или на мониторе превращаются для нас в непрерывное движение. Если листать достаточно быстро (примерно от 15 кадров в секунду), мозг перестаёт различать «это две картинки» и сам «домысливает» движение.
Однако «воспринимать как непрерывное движение» и «различать более плавное» — это не одно и то же. Исследования показывают, что тренированный человек способен заметить разницу при частотах далеко за 60 Гц, а лётчики-истребители и вовсе узнают модель самолёта за 1/200 секунды. Поэтому высокая частота обновления — не мистика: ваши глаза действительно её чувствуют, хотя и не так явно, как «видят отдельные кадры». Скорее, это проявляется в ощущении «плавности», «отзывчивости» и «отсутствия шлейфов».
А вот ещё одна загадка: почему 24 кадра в кино плавно, а в игре — рывками?
Возникает вопрос: если глаз чувствует высокую частоту, почему 24 кадра в кино смотрятся нормально, а в играх при 24 кадрах картинка превращается в слайд-шоу?
Ответ кроется в «размытии». При съёмке кино затвор кинокамеры открыт на протяжении экспозиции каждого кадра, и движущийся объект оставляет на плёнке естественную размытую траекторию. Это размытие как раз заполняет промежутки между кадрами, и мозг воспринимает картинку как плавную. Игровое же изображение рендерится покадрово, каждый кадр — чёткий и резкий, а движение между ними — «пустое». При 24 кадрах между ними остаётся лишь серия резких скачков, что выглядит рвано. Таким образом, при тех же 24 кадрах в кино «настоящее размытие» обманывает глаз, а в игре дискретность становится очевидной. Это также объясняет, почему требования к частоте обновления и кадровой частоте в играх значительно выше, чем для просмотра кино.
Тогда почему 60 Гц всё равно выглядят нормально?
Если чем выше частота — тем плавнее, то почему мы десятилетиями пользовались мониторами с 60 Гц и не замечали рывков в мире? Секрет в другом факторе — размытии движения.
В реальном мире объекты движутся по-настоящему непрерывно, световой сигнал постоянно поступает в глаза. Экран же дискретен: между кадрами существует крошечный промежуток, и объект «перескакивает» с одной позиции на другую. Этот скачок оставляет на сетчатке кратковременный след размытия.
Чем выше частота кадров, тем меньше скачок, тем короче след размытия — и тем чётче и резче изображение. Вот почему при переходе с 60 Гц на 120 Гц возникает ощущение «вроде ничего особенного, но стало приятнее». Этот комфорт идёт от сокращения размытия, от того, что глазам не приходится напрягаться, додумывая пропущенные промежуточные кадры.
Наглядный пример: белая точка равномерно движется по чёрному экрану. При 60 Гц она совершает 60 скачков в секунду, каждый — на сравнительно большое расстояние, оставляя заметный шлейф; при 240 Гц — 240 скачков в секунду, каждый — на крошечный шаг, шлейф почти исчезает, и точка выглядит «цельной». Именно это вы увидите в тесте UFO.
Кстати, само слово «обновление» (refresh) имеет историческое происхождение. В ранних электронно-лучевых трубках (ЭЛТ) электронный луч сканировал экран построчно, засвечивая пиксели. Люминофор светился совсем недолго, поэтому луч должен был непрерывно «перерисовывать» картинку, чтобы она оставалась видимой — отсюда и термин refresh. Современные LCD и OLED-панели давно не используют электронный луч, но название прижилось, как и логика «количество обновлений в секунду» — просто теперь обновляется состояние пикселей всей панели целиком.
«Производство» и «отображение»: два этапа на конвейере
Теперь самое время поговорить о классическом различии между частотой обновления и кадровой частотой. Многие считают их одним и тем же, но на деле это два последовательных этапа на конвейере.
Кадровая частота (FPS) — это сколько кадров в секунду способно «произвести» видеоядро («этап производства»); частота обновления (Гц) — сколько кадров в секунду готов «предъявить» монитор («этап отображения»). Одно отвечает за создание, другое — за показ.
В идеале количество произведённых и показанных кадров должно совпадать идеально. Но в реальности они работают независимо, и возникают две проблемы: если видеоядро производит кадры слишком быстро, а монитор не успевает их отображать, лишние кадры отбрасываются, либо два кадра отображаются частично, и картинка «рвётся» посередине — это tearing (разрыв); если видеоядро производит слишком медленно, а монитору нечего показывать, он просто повторяет предыдущий кадр — и изображение «застревает», появляется рывок (stuttering).
Вертикальная синхронизация (VSync) — это механизм, который заставляет видеоядро «ждать» монитор, показывая ровно один кадр за один цикл обновления. Это устраняет разрывы, но может вносить дополнительную задержку. Позже появились более умные технологии G-Sync и FreeSync: они не заставляют монитор ждать фиксированный ритм, а позволяют ему динамически подстраивать частоту обновления под производительность видеоядра — производишь 80 кадров, обновляю 80 раз. Это и есть технология с переменной частотой обновления (VRR), которая стала одним из ключевых преимуществ мониторов высокого класса.
Как браузер «измеряет» вашу частоту обновления
Разобравшись с принципами, вернёмся к практическому вопросу: как веб-тест может узнать, с какой частотой работает ваш экран?
Для этого используется удачный интерфейс браузера — requestAnimationFrame. Он создан для синхронизации анимаций с обновлением экрана: вы передаёте ему команду «нарисовать следующий кадр», и он точно вызывает вас перед каждым готовым обновлением экрана. Другими словами, этот интерфейс «привязан» к сигналу синхронизации монитора.
Логика теста проста: запускается секундомер, и считается, сколько раз в секунду вызывается эта функция. 60 вызовов — значит, 60 Гц; 144 вызова — 144 Гц. Чтобы случайные рывки не исказили цифру, обычно накапливают данные за несколько сотен кадров, а затем вычисляют среднее значение, округляя до привычных шагов: 60, 120, 144, 240 и т.д.
Интересно, что в процессе «подсчёта» могут вскрыться и другие проблемы, не связанные с монитором. Например, если число вдруг упало до 30, скорее всего, монитор ни при чём — браузер обнаружил, что вы переключились на другую вкладку, и начал «тормозить» обновления для экономии энергии. Или в многомониторной конфигурации браузер иногда подстраивается под самый «медленный» экран, из-за чего показания на быстром мониторе тоже падают. Эти «побочные эффекты» подсчёта, наоборот, помогают увидеть состояние всей цепочки вывода изображения.
И напоследок о невидимом «мерцании»
Напоследок поговорим о вещи, которую часто упускают из виду, глядя на цифру частоты обновления: мерцание подсветки.
Вы можете думать, что экран светится постоянно, но на многих дисплеях подсветка быстро чередует состояния «включено-выключено», а чем ниже яркость, тем дольше «выключено». Это называется ШИМ (широтно-импульсная модуляция), особенно распространённая на OLED-экранах. Поскольку мерцание происходит очень быстро (от сотен до тысячи и более герц), сознание его не фиксирует, но зрительный нерв и цилиарная мышца постоянно реагируют на эту смену света и тени.
Вот почему некоторые люди, долго глядя на OLED-экран с низкой яркостью, ощущают сухость и усталость глаз, не понимая причины. Тест на мерцание (черно-белое переключение всего экрана) преувеличенно демонстрирует этот эффект, позволяя «увидеть» обычно невидимое мерцание. Он измеряет не саму частоту обновления, а то, насколько дружелюбен к вашим глазам механизм димминга, стоящий за этой частотой.
Так что в следующий раз, увидев цифры «144 Гц» или «240 Гц», не считайте их просто маркетинговым ходом. За ними стоит изящно продуманная система, основанная на зрительном удержании, размытии движения и слаженности ритмов «производства» и «отображения» изображения. А с помощью простого веб-теста вы можете лично проверить, действительно ли эта система работает на вашем экране.
В этом, пожалуй, и заключается самое привлекательное в популярной науке: когда понимаешь, как устроены эти маленькие механизмы, скрывающиеся за привычной плавностью картинки, мир вокруг становится чуть-чуть иным.