Предисловие
Довольно часто я вижу людей которые спорят в комментариях про мониторы, их частоту обновления. Сегодня я хочу попробовать разобрать все это по полочкам чтобы каждый понимал что есть что.
Далее будут статьи на тему разрешения мониторов, диагоналей, и про виды подключения
Вступление
Для начала разберемся с терминологией.
Частота обновления измеряется в гц\hz (герц\hertz)
Количество кадров на клиенте измеряется в FPS (Frames Per Second)
Количество кадров на сервере измеряется в TPS (Tick Per Second)
ФреймТайм\FrameTime — время кадра измеряется в мс (Миллисекундах)
Это основные термины которые нам потребуются сейчас. В следующей статье про мониторы я буду рассказывать конкретно про матрицы и остальные термины.
Природа лагов
Кто же такие эти ваши лаги, фризы, статеры и далее по списку?
Кадры у нас на клиенте (То есть на нашем компьютере) появляются 2х видов.
FPS - количество кадров которое отправляет видеокарта в наш монитор.
И частота обновления монитора - она статична (Это не совсем так, но для понимания лагов такая формулировка подойдет)
И так представим, что монитор у нас обновляется с частотой 60 герц что грубо говоря равно 60 фпс.
При условии что у нас на протяжении всей секунды будут стабильно идти кадры с задержкой между сменой кадра ~16.66мс то мы получаем ровную картинку, без лагов, фризов и статеров.
Почему? потому что задержка между кадрами которые отправляет видеокарта примерно такая же, как и задержка у монитора.
Как это посчитать? Очень просто. Делим 1000 на количество кадров.
Получаем, что при 60 кадрах задержка между каждым кадром должна быть ~16.66мс при 100 кадрах ~10мс и тд.
Проблема в том, что отображаемый FPS не моментальный. Это кроется в его названии: "Кадров в секунду". То есть берется количество отрисованных кадров за секунду, от сюда и появляются лаги на 60 стабильных кадрах в секунду.
Дело в том, что нужно измерять задержку между кадрами. Например возьмем 30 FPS. Первые 15 кадров отрисовались с задержкой между кадрами 16.66мс что по плавности будет выглядеть как стабильные 60 FPS, а остальные 15 кадров с задержкой между кадрами 50мс.
Мы получим те же средние 30 кадров в секунду, но по факту первые 15 кадров отрисовались примерно за четверть секунды, а следующие 15 за остальные 3 четверти. От сюда и получается фриз\лаг и тд.
Довольно часто приводят подобные картинки. Сразу скажу, что 60hz не размазывает изображение, он просто отображает меньше кадров.
Не ведитесь на маркетинг и покупайте качественные мониторы.
С природой лагов мы разобрались, но есть другие ситуации. О них далее!
Проблемы совпадения HZ и FPS
И так мы плавно подобрались к проблеме мониторов с высокой скоростью обновления. Часто вижу комментарии вроде "Купил монитор 144гц и теперь играть стало намного легче"
Конечно, в теории все отлично. Время между кадрами стало ~7мс
Что почти 2.5 раза меньше чем при 60 герцах
Но тут есть нюансы, о которых мы сейчас и поговорим.
Дело в том, что есть мониторы работающие на псевдо 144герцах. Фактически это 72 герца, просто в этих мониторах используется технология средних кадров. берется 1 и 3 кадр и по нем составляется среднее значение второго кадра. В итоге мы получаем искажения кадра, повышается плавность, но не получаем реальные отрисованные кадры видеокартой.
Так же есть мониторы с настоящими 144 герцами, вы видите плавность все отлично, но что-то не так... Это что-то называется нечеткостью кадров.
То есть фактически он и вправду обновляется 144 раза за секунду, допустим и видеокарта отправляет кадры с задержкой 7мс. Но монитор в связи с экономией на матрице выводит кадры неправильно. Из-за этого каждый кадр смазывается. Это можно заметить если взять камеру с съемкой на больших частотах, заснять монитор, а потом запись замедлить.
И третья проблема кроется в железе компьютера. Дело в том что ваш монитор обновляется 60 раз в секунду. То есть он показывает 60 картинок за секунду и требует от видеокарты 60 картинок за секунду. Но видеокарта выдает только 30 картинок за секунду и получается так, что отрисованных кадров 30, а отрисовать надо 60. Что же делать? Ну и соответственно монитор делает следующее: 1 и 2 кадр монитора это 1 кадр который отправила видеокарта 3 и 4 кадр монитора это 2 кадр который отправила видеокарта и тд. То есть время между кадрами монитора осталось на уровне 16.66мс, но фактическое время между кадрами ~33.33мс. Но так будет только в идеале, а живем мы в далеко не идеальном мире. Теперь приплюсуйте сюда неравномерный frametime и получите первые 15 кадров на мониторе плавные, как будто ваше железо и вправду тянет 60 фпс монитор. А следующие 15 с задержкой 50мс будут распределены на оставшиеся 45 кадров. Опережу комментарии внимательных людей, что 16.66мс * 3 кадра будет 49.98мс, а не 50. То есть увидим мы 4 одинаковых кадра, а в конце секунды получим сильный фриз, потому что нужно отрисовывать новые 60 кадров. Нет. Дело в том, что 16.66 это примерные числа. 1000\60 = 16,66666666666667, а это уже умножая на 3 мы идеально получим 50.
Надеюсь эта статья была вам интересна или полезна. Ставьте лайк, подписывайтесь, если хотите видеть больше познавательного контента в сфере IT
Полезные ссылки и ссылки на материалы использующиеся в статье:
Все характеристики почти любого монитора
Вики на матрицы
Время реакции человека
Вики на мониторы