Что такое вертикальная синхронизация (V-Sync)?

Что такое вертикальная синхронизация (V-Sync)?

В рамках данного обзора, я расскажу вам что такое вертикальная синхронизация (V-Sync), а так же про связанные с этим особенности.

Практически каждый любитель компьютерных игрушек хоть раз, но слышал о настройке под названием "вертикальная синхронизация". Однако, о том, что это такое, зачем нужно, какие у этого механизма плюсы и минусы, знают далеко не все читатели. Поэтому далее восполним этот пробел в знаниях.

Примечание: Материал предназначен для начинающих и обычных пользователей.

 

Вертикальная синхронизация - суть проблемы

Что такое вертикальная синхронизация (V-Sync)?

Прежде, чем рассказывать про вертикальную синхронизацию, хотел бы ознакомить читателя с основной сутью проблемы. Если посмотреть на рисунок чуть выше, то можно увидеть, что верхняя и нижняя части не совпадают. Рассмотрим почему так может происходить.

Существует некий буфер данных, в котором хранится текущая картинка для отображения. Монитор с определенной частотой (той, которая выставлена в настройках) считывает ее и отображает на экране. Картинку в этом буфере формирует видеокарта. Причем делает она это построчно сверху вниз.

Теперь, допустим, что у монитора установлена частота 60 Гц. Это означает, что каждые 16,7 мс (1000 мс / 60 = 16,7) монитор считывает картинку из буфера и отображает. Если не включены какие-то специальные механизмы синхронизации, то, по умолчанию, видеокарта формирует картинку за картинкой непрерывно и записывает информацию прямо в буфер. Однако, делать она это может быстрее чем за 16,7 мс или медленнее.

Соответственно, в момент, когда монитор считывает информацию из буфера, видеокарта могла не успеть полностью записать следующую картинку и поэтому на экране отображается изображение с несовпадающими частями.

Для понимания проблемы отсутствия синхронизации, рассмотрим упрощенный пример.

Так же для простоты, будем считать 16,7 мс как некую единицу измерения времени. Назовем ее такт.

Такт 1. Видеокарта сформировала за 1 такт картинку К1. Монитор считал и отобразил К1.

Такт 2. Видеокарта сформировала картинку К2 за 0,5 такта, но для следующей картинки К3 ей нужно еще 1 такт. Это означает, что видеокарте не хватило 0,5 такта, чтобы полностью записать в буфер картинку K3. Поэтому монитор отобразит вверху половину картинки К3 и в нижней части половину старой картинки К2.

Такт 3. Видеокарта сформировала картинку K3 за 0,5 такта (полкартинки было сформировано тактом ранее), затем сформировала картинку К4 за 0,3 такта и начала формировать картинку К5 за 1 такт. В такой ситуации монитор отобразит в верху часть картинки K5 (20% ее уже было сформировано), а в нижней части К4.

...

Как видите, из-за отсутствия синхронизации, если анимация в игрушке предполагается динамичная (например, стрелялки), то на экране будут появляться подобные дефекты.

Примечание: Стоит понимать, что в реальности вывод информации более сложно организован. Например, может применяться тройная буферизация, но это уже тема отдельного обзора.

 

Вертикальная синхронизация это

Вертикальная синхронизация (V-Sync) - это технология синхронизации кадровой частоты компьютерной игры с частотой отображения кадров монитора. Данная технология позволяет избавиться от проблем с несовпадающими частями картинки. Однако, у нее существуют и недостатки, но обо всем по порядку.

Рассмотрим основной алгоритм V-Sync

Самое первое, что необходимо отметить это то, что картинка не пишется напрямую в буфер с данными для отображения. Это позволяет избавиться от возможных проблем с частичным отображением.

Второе, как уже было ранее сказано, видеокарта может формировать картинки как быстрее промежутка между отображением кадров монитором, так и медленнее. Если изображение сформировано быстрее, то видеокарта не начинает формировать следующую картинку, а ожидает тот момент, когда монитор ее отобразит, и только после этого начнет формировать следующий кадр анимации.

Если же видеокарта формирует картинку дольше, то картинка в буфере не изменится, а на экране отобразится старый кадр, при этом видеокарта продолжит формировать картинку. Как только картинка будет сформирована, она будет записана в буфер и видеокарта начнет ожидать, когда монитор ее отобразит.

Для понимания V-Sync, рассмотрим упрощенный пример.

Все тот же монитор с частотой 60 Гц. Так же для простоты, будем считать 16,7 мс как некую единицу измерения времени. Назовем ее такт.

Такт 1. Видеокарта сформировала картинку К1 за 0,5 такта и перешла в режим ожидания. Монитор отобразил ее.

Такт 2. Видеокарта начала формировать картинку К2 за 1,2 такта. Так как картинка К2 еще не сформирована, то монитор отобразил картинку К1.

Такт 3. Видеокарта сформировала картинку К2 (оставшиеся 0,2 такта) и перешла в режим ожидания. Монитор отобразил К2.

...

Как видите, в данном случае, отображаются только полные картинки.

Плюсы V-Sync:

1. Плавная картинка, без разрывов.

2. Если видеокарта мощная, то она не формирует те картинки, которые не отображаются. Соответственно, меньше нагрев видеокарты, энергопотребление и износ.

Однако, как уже говорилось, у вертикальной синхронизации существуют недостатки. Рассмотрим их:

1. Снижается FPS (количество генерируемых игрой кадров в секунду). Первое. Так как для синхронизации видеокарте необходимо ожидать момента отображения картинки монитором, то количество кадров, которое может быть ею сформировано, не превышает частоту монитора. Второе. Так как кадры могут формироваться с разной скоростью, то нередко будут возникать ситуации, когда видеокарта не будет успевать создавать картинку. Этот момент особенно важен и для тех ситуаций, когда видеокарта формирует меньше кадров в секунду, чем частота монитора. В таком случае, суммарный простой может выливаться в еще меньший fps.

2. Input lag. Об этой проблеме будет отдельный обзор. Но, вкратце, проблема в том, что монитор отображает старую картинку в момент формирования видеокартой следующей. Это означает, что действия игрока могут не соответствовать отображаемой картинке на мониторе.

Теперь, вы знаете что такое вертикальная синхронизация и зачем она нужна.

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)